]> granicus.if.org Git - postgresql/commitdiff
Ignore UTF-8-encoded Unicode byte-order mark at the beginning of a file if
authorPeter Eisentraut <peter_e@gmx.net>
Sat, 21 Nov 2009 23:59:12 +0000 (23:59 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Sat, 21 Nov 2009 23:59:12 +0000 (23:59 +0000)
the client encoding is UTF-8.

a limited version of a patch proposed by Itagaki Takahiro

src/bin/psql/mainloop.c

index b39b2a44e50d737f8ec772b5c54fd3eaaf1d3e62..b6f87670af0b9de80b681b10d994296d19696f8c 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2009, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/mainloop.c,v 1.96 2009/11/10 23:12:13 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/mainloop.c,v 1.97 2009/11/21 23:59:12 petere Exp $
  */
 #include "postgres_fe.h"
 #include "mainloop.h"
@@ -14,6 +14,8 @@
 #include "input.h"
 #include "settings.h"
 
+#include "mb/pg_wchar.h"
+
 
 /*
  * Main processing loop for reading lines of input
@@ -167,6 +169,10 @@ MainLoop(FILE *source)
 
                pset.lineno++;
 
+               /* ignore UTF-8 Unicode byte-order mark */
+               if (pset.lineno == 1 && pset.encoding == PG_UTF8 && strncmp(line, "\xef\xbb\xbf", 3) == 0)
+                       memmove(line, line + 3, strlen(line + 3) + 1);
+
                /* nothing left on line? then ignore */
                if (line[0] == '\0' && !psql_scan_in_quote(scan_state))
                {