summaryrefslogtreecommitdiff
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.c95
1 files changed, 1 insertions, 94 deletions
diff --git a/src/backend/parser/scansup.c b/src/backend/parser/scansup.c
index cac70d5df7a..d07cbafcee7 100644
--- a/src/backend/parser/scansup.c
+++ b/src/backend/parser/scansup.c
@@ -1,8 +1,7 @@
/*-------------------------------------------------------------------------
*
* scansup.c
- * support routines for the lex/flex scanner, used by both the normal
- * backend as well as the bootstrap backend
+ * scanner support routines used by the core lexer
*
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
@@ -20,98 +19,6 @@
#include "mb/pg_wchar.h"
#include "parser/scansup.h"
-/* ----------------
- * scanstr
- *
- * if the string passed in has escaped codes, map the escape codes to actual
- * chars
- *
- * the string returned is palloc'd and should eventually be pfree'd by the
- * caller!
- * ----------------
- */
-
-char *
-scanstr(const char *s)
-{
- char *newStr;
- int len,
- i,
- j;
-
- if (s == NULL || s[0] == '\0')
- return pstrdup("");
-
- len = strlen(s);
-
- newStr = palloc(len + 1); /* string cannot get longer */
-
- for (i = 0, j = 0; i < len; i++)
- {
- if (s[i] == '\'')
- {
- /*
- * Note: if scanner is working right, unescaped quotes can only
- * appear in pairs, so there should be another character.
- */
- i++;
- /* The bootstrap parser is not as smart, so check here. */
- Assert(s[i] == '\'');
- newStr[j] = s[i];
- }
- else if (s[i] == '\\')
- {
- i++;
- switch (s[i])
- {
- 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 '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- {
- int k;
- long octVal = 0;
-
- for (k = 0;
- s[i + k] >= '0' && s[i + k] <= '7' && k < 3;
- k++)
- octVal = (octVal << 3) + (s[i + k] - '0');
- i += k - 1;
- newStr[j] = ((char) octVal);
- }
- break;
- default:
- newStr[j] = s[i];
- break;
- } /* switch */
- } /* s[i] == '\\' */
- else
- newStr[j] = s[i];
- j++;
- }
- newStr[j] = '\0';
- return newStr;
-}
-
/*
* downcase_truncate_identifier() --- do appropriate downcasing and