|
|
@ -3,7 +3,7 @@ |
|
|
|
* |
|
|
|
* |
|
|
|
* Copyright 2000 by PostgreSQL Global Development Group |
|
|
|
* Copyright 2000 by PostgreSQL Global Development Group |
|
|
|
* |
|
|
|
* |
|
|
|
* $Header: /cvsroot/pgsql/src/bin/psql/mainloop.c,v 1.30 2000/05/12 16:13:44 petere Exp $ |
|
|
|
* $Header: /cvsroot/pgsql/src/bin/psql/mainloop.c,v 1.31 2000/06/29 16:27:57 momjian Exp $ |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
#include "postgres.h" |
|
|
|
#include "postgres.h" |
|
|
|
#include "mainloop.h" |
|
|
|
#include "mainloop.h" |
|
|
@ -18,9 +18,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
#ifndef WIN32 |
|
|
|
#ifndef WIN32 |
|
|
|
#include <setjmp.h> |
|
|
|
#include <setjmp.h> |
|
|
|
|
|
|
|
|
|
|
|
sigjmp_buf main_loop_jmp; |
|
|
|
sigjmp_buf main_loop_jmp; |
|
|
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -298,18 +296,13 @@ MainLoop(FILE *source) |
|
|
|
bslash_count = 0; |
|
|
|
bslash_count = 0; |
|
|
|
|
|
|
|
|
|
|
|
rescan: |
|
|
|
rescan: |
|
|
|
/* in quote? */ |
|
|
|
/* start of extended comment? */ |
|
|
|
if (in_quote) |
|
|
|
if (line[i] == '/' && line[i + thislen] == '*') |
|
|
|
{ |
|
|
|
{ |
|
|
|
/* end of quote */ |
|
|
|
xcomment = true; |
|
|
|
if (line[i] == in_quote && bslash_count % 2 == 0) |
|
|
|
ADVANCE_1; |
|
|
|
in_quote = '\0'; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* start of quote */ |
|
|
|
|
|
|
|
else if (!was_bslash && (line[i] == '\'' || line[i] == '"')) |
|
|
|
|
|
|
|
in_quote = line[i]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* in extended comment? */ |
|
|
|
/* in extended comment? */ |
|
|
|
else if (xcomment) |
|
|
|
else if (xcomment) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -320,13 +313,6 @@ MainLoop(FILE *source) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* start of extended comment? */ |
|
|
|
|
|
|
|
else if (line[i] == '/' && line[i + thislen] == '*') |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
xcomment = true; |
|
|
|
|
|
|
|
ADVANCE_1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* single-line comment? truncate line */ |
|
|
|
/* single-line comment? truncate line */ |
|
|
|
else if (line[i] == '-' && line[i + thislen] == '-') |
|
|
|
else if (line[i] == '-' && line[i + thislen] == '-') |
|
|
|
{ |
|
|
|
{ |
|
|
@ -334,6 +320,19 @@ MainLoop(FILE *source) |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* in quote? */ |
|
|
|
|
|
|
|
else if (in_quote) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
/* end of quote */ |
|
|
|
|
|
|
|
if (line[i] == in_quote && bslash_count % 2 == 0) |
|
|
|
|
|
|
|
in_quote = '\0'; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* start of quote */ |
|
|
|
|
|
|
|
else if (!was_bslash && |
|
|
|
|
|
|
|
(line[i] == '\'' || line[i] == '"')) |
|
|
|
|
|
|
|
in_quote = line[i]; |
|
|
|
|
|
|
|
|
|
|
|
/* count nested parentheses */ |
|
|
|
/* count nested parentheses */ |
|
|
|
else if (line[i] == '(') |
|
|
|
else if (line[i] == '(') |
|
|
|
paren_level++; |
|
|
|
paren_level++; |
|
|
|