aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/scansup.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/parser/scansup.c')
-rw-r--r--src/backend/parser/scansup.c173
1 files changed, 90 insertions, 83 deletions
diff --git a/src/backend/parser/scansup.c b/src/backend/parser/scansup.c
index 98bf6dba93b..0b944528980 100644
--- a/src/backend/parser/scansup.c
+++ b/src/backend/parser/scansup.c
@@ -1,14 +1,14 @@
/*-------------------------------------------------------------------------
*
* scansup.c--
- * support routines for the lex/flex scanner, used by both the normal
+ * support routines for the lex/flex scanner, used by both the normal
* backend as well as the bootstrap backend
*
* Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/scansup.c,v 1.5 1996/11/15 18:38:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/scansup.c,v 1.6 1997/09/07 04:44:51 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -24,12 +24,12 @@
#include "parser/scansup.h"
/* ----------------
- * scanstr
- *
+ * scanstr
+ *
* if the string passed in has escaped codes, map the escape codes to actual
* chars
*
- * also, remove leading and ending quotes '"' if any
+ * also, remove leading and ending quotes '"' if any
*
* the string passed in must be non-null
*
@@ -38,88 +38,95 @@
* ----------------
*/
-char*
+char *
scanstr(char *s)
{
- static char newStr[MAX_PARSE_BUFFER];
- int len, i, j;
-
- if (s == NULL || s[0] == '\0')
- return s;
+ static char newStr[MAX_PARSE_BUFFER];
+ int len,
+ i,
+ j;
- len = strlen(s);
+ if (s == NULL || s[0] == '\0')
+ return s;
- for (i = 0, j = 0; i < len ; i++) {
- if (s[i] == '\'') {
- i = i + 1;
- if (s[i] == '\'')
- newStr[j] = '\'';
- }
- else {
- if (s[i] == '\\') {
- i = i + 1;
- switch (s[i]) {
- case '\\':
- newStr[j] = '\\';
- break;
- case 'b':
- newStr[j] = '\b';
- break;
- case 'f':
- newStr[j] = '\f';
- break;
- case 'n':
- newStr[j] = '\n';
- break;
- case 'r':
- newStr[j] = '\r';
- break;
- case 't':
- newStr[j] = '\t';
- break;
- case '"':
- newStr[j] = '"';
- break;
- case '\'':
- newStr[j] = '\'';
- break;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- {
- char octal[4];
- int k;
- long octVal;
+ len = strlen(s);
+
+ for (i = 0, j = 0; i < len; i++)
+ {
+ if (s[i] == '\'')
+ {
+ i = i + 1;
+ if (s[i] == '\'')
+ newStr[j] = '\'';
+ }
+ else
+ {
+ if (s[i] == '\\')
+ {
+ i = i + 1;
+ switch (s[i])
+ {
+ case '\\':
+ newStr[j] = '\\';
+ break;
+ case 'b':
+ newStr[j] = '\b';
+ break;
+ case 'f':
+ newStr[j] = '\f';
+ break;
+ case 'n':
+ newStr[j] = '\n';
+ break;
+ case 'r':
+ newStr[j] = '\r';
+ break;
+ case 't':
+ newStr[j] = '\t';
+ break;
+ case '"':
+ newStr[j] = '"';
+ break;
+ case '\'':
+ newStr[j] = '\'';
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ {
+ char octal[4];
+ int k;
+ long octVal;
- for (k=0;
- s[i+k] >= '0' && s[i+k] <= '7' && k < 3;
- k++)
- octal[k] = s[i+k];
- i += k-1;
- octal[3] = '\0';
-
- octVal = strtol(octal,0,8);
-/* elog (NOTICE, "octal = %s octVal = %d, %od", octal, octVal, octVal);*/
- if (octVal <= 0377) {
- newStr[j] = ((char)octVal);
- break;
- }
- }
- default:
- newStr[j] = s[i];
- } /* switch */
- } /* s[i] == '\\' */
- else
- newStr[j] = s[i];
+ for (k = 0;
+ s[i + k] >= '0' && s[i + k] <= '7' && k < 3;
+ k++)
+ octal[k] = s[i + k];
+ i += k - 1;
+ octal[3] = '\0';
+
+ octVal = strtol(octal, 0, 8);
+/* elog (NOTICE, "octal = %s octVal = %d, %od", octal, octVal, octVal);*/
+ if (octVal <= 0377)
+ {
+ newStr[j] = ((char) octVal);
+ break;
+ }
+ }
+ default:
+ newStr[j] = s[i];
+ } /* switch */
+ } /* s[i] == '\\' */
+ else
+ newStr[j] = s[i];
+ }
+ j++;
}
- j++;
- }
- newStr[j] = '\0';
- return newStr;
+ newStr[j] = '\0';
+ return newStr;
}
-