From a72d66f25f57fb8c1e5a3e419eea7ec286a7b325 Mon Sep 17 00:00:00 2001
From: John Naylor <jcnaylor@gmail.com>
Date: Sun, 30 Sep 2018 14:01:08 +0700
Subject: [PATCH v1 4/4] Remove unused functions and declarations from ECPG
 scanner.

---
 src/interfaces/ecpg/preproc/extern.h |  4 +--
 src/interfaces/ecpg/preproc/pgc.l    | 45 +---------------------------
 2 files changed, 2 insertions(+), 47 deletions(-)

diff --git a/src/interfaces/ecpg/preproc/extern.h b/src/interfaces/ecpg/preproc/extern.h
index d0c4e47016..aef65657da 100644
--- a/src/interfaces/ecpg/preproc/extern.h
+++ b/src/interfaces/ecpg/preproc/extern.h
@@ -76,7 +76,7 @@ extern char *hashline_number(void);
 extern int	base_yyparse(void);
 extern int	base_yylex(void);
 extern void base_yyerror(const char *);
-extern void *mm_alloc(size_t), *mm_realloc(void *, size_t);
+extern void *mm_alloc(size_t);
 extern char *mm_strdup(const char *);
 extern void mmerror(int errorcode, enum errortype type, const char *error,...) pg_attribute_printf(3, 4);
 extern void mmfatal(int errorcode, const char *error,...) pg_attribute_printf(2, 3) pg_attribute_noreturn();
@@ -105,9 +105,7 @@ extern void remove_variables(int);
 extern struct variable *new_variable(const char *, struct ECPGtype *, int);
 extern const ScanKeyword *ScanCKeywordLookup(const char *);
 extern const ScanKeyword *ScanECPGKeywordLookup(const char *text);
-extern void scanner_init(const char *);
 extern void parser_init(void);
-extern void scanner_finish(void);
 extern int	filtered_base_yylex(void);
 
 /* return codes */
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index 16b1c1bb08..f311e2b875 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -32,8 +32,6 @@ extern YYSTYPE base_yylval;
 
 static int		xcdepth = 0;	/* depth of nesting in slash-star comments */
 static char	   *dolqstart = NULL;	/* current $foo$ quote start string */
-static YY_BUFFER_STATE scanbufhandle;
-static char *scanbuf;
 
 /*
  * literalbuf is used to accumulate literal values when multiple rules
@@ -646,7 +644,7 @@ cppline			{space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
 					/* single quote or dollar sign */
 					addlitchar(yytext[0]);
 				}
-<xdolq><<EOF>>	{ base_yyerror("unterminated dollar-quoted string"); }
+<xdolq><<EOF>>	{ mmerror(PARSE_ERROR, ET_ERROR, "unterminated dollar-quoted string"); }
 
 <SQL>{
 {xdstart}		{
@@ -1615,44 +1613,3 @@ static bool isinformixdefine(void)
 
 	return false;
 }
-
-/*
- * Called before any actual parsing is done
- */
-void
-scanner_init(const char *str)
-{
-	Size	slen = strlen(str);
-
-	/*
-	 * Might be left over after ereport()
-	 */
-	if (YY_CURRENT_BUFFER)
-		yy_delete_buffer(YY_CURRENT_BUFFER);
-
-	/*
-	 * Make a scan buffer with special termination needed by flex.
-	 */
-	scanbuf = mm_alloc(slen + 2);
-	memcpy(scanbuf, str, slen);
-	scanbuf[slen] = scanbuf[slen + 1] = YY_END_OF_BUFFER_CHAR;
-	scanbufhandle = yy_scan_buffer(scanbuf, slen + 2);
-
-	/* initialize literal buffer to a reasonable but expansible size */
-	literalalloc = 128;
-	literalbuf = (char *) mm_alloc(literalalloc);
-	startlit();
-
-	BEGIN(INITIAL);
-}
-
-
-/*
- * Called after parsing is done to clean up after scanner_init()
- */
-void
-scanner_finish(void)
-{
-	yy_delete_buffer(scanbufhandle);
-	free(scanbuf);
-}
-- 
2.17.1

