[postgis-tickets] r14897 - Move static structures where used, fixes compile warnings

Sandro Santilli strk at keybit.net
Thu May 12 02:59:52 PDT 2016


Author: strk
Date: 2016-05-12 02:59:51 -0700 (Thu, 12 May 2016)
New Revision: 14897

Modified:
   trunk/loader/shpcommon.c
   trunk/loader/shpcommon.h
Log:
Move static structures where used, fixes compile warnings

Modified: trunk/loader/shpcommon.c
===================================================================
--- trunk/loader/shpcommon.c	2016-05-12 09:44:55 UTC (rev 14896)
+++ trunk/loader/shpcommon.c	2016-05-12 09:59:51 UTC (rev 14897)
@@ -19,7 +19,87 @@
 
 #include "shpcommon.h"
 
+typedef struct
+{
+    int ldid;
+    int cpg;
+    char *desc;
+    char *iconv;
+    char *pg;
+} code_page_entry;
 
+static int num_code_pages = 60;
+
+/* http://www.autopark.ru/ASBProgrammerGuide/DBFSTRUC.HTM */
+/* http://resources.arcgis.com/fr/content/kbase?fa=articleShow&d=21106 */
+
+static code_page_entry code_pages[] = {
+    {0x01, 437, "U.S. MS-DOS", "CP437",""},
+    {0x02, 850, "International MS-DOS", "CP850",""},
+    {0x03, 1252, "Window ANSI", "WINDOWS-1252","WIN1252"},
+    {0x08, 865, "Danish OEM", "CP865",""},
+    {0x09, 437, "Dutch OEM", "CP437",""},
+    {0x0A, 850, "Dutch OEM*", "CP850",""},
+    {0x0B, 437, "Finnish OEM", "CP437",""},
+    {0x0D, 437, "French OEM", "CP437",""},
+    {0x0E, 850, "French OEM*", "CP850",""},
+    {0x0F, 437, "German OEM", "CP437",""},
+    {0x10, 850, "German OEM*", "CP850",""},
+    {0x11, 437, "Italian OEM", "CP437",""},
+    {0x12, 850, "Italian OEM*", "CP850",""},
+    {0x13, 932, "Japanese Shift-JIS", "CP932","SJIS"},
+    {0x14, 850, "Spanish OEM*", "CP850",""},
+    {0x15, 437, "Swedish OEM", "CP437",""},
+    {0x16, 850, "Swedish OEM*", "CP850",""},
+    {0x17, 865, "Norwegian OEM", "CP865",""},
+    {0x18, 437, "Spanish OEM", "CP865",""},
+    {0x19, 437, "English OEM (Britain)", "CP437",""},
+    {0x1A, 850, "English OEM (Britain)*", "CP850",""},
+    {0x1B, 437, "English OEM (U.S.)", "CP437",""},
+    {0x1C, 863, "French OEM (Canada)", "CP863",""},
+    {0x1D, 850, "French OEM*", "CP850",""},
+    {0x1F, 852, "Czech OEM", "CP852",""},
+    {0x22, 852, "Hungarian OEM", "CP852",""},
+    {0x23, 852, "Polish OEM", "CP852",""},
+    {0x24, 860, "Portuguese OEM", "CP860",""},
+    {0x25, 850, "Portuguese OEM*", "CP850",""},
+    {0x26, 866, "Russian OEM", "WINDOWS-866","WIN866"},
+    {0x37, 850, "English OEM (U.S.)*", "CP850",""},
+    {0x40, 852, "Romanian OEM", "CP852",""},
+    {0x4D, 936, "Chinese GBK (PRC)", "CP936",""},
+    {0x4E, 949, "Korean (ANSI/OEM)", "CP949",""},
+    {0x4F, 950, "Chinese Big 5 (Taiwan)", "CP950","BIG5"},
+    {0x50, 874, "Thai (ANSI/OEM)", "WIN874",""},
+    {0x57, 1252, "ANSI", "WINDOWS-1252",""},
+    {0x58, 1252, "Western European ANSI", "WINDOWS-1252",""},
+    {0x59, 1252, "Spanish ANSI", "WINDOWS-1252",""},
+    {0x64, 852, "Eastern European MS-DOS", "CP852",""},
+    {0x65, 866, "Russian MS-DOS", "CP866",""},
+    {0x66, 865, "Nordic MS-DOS", "CP865",""},
+    {0x67, 861, "Icelandic MS-DOS", "",""},
+    {0x6A, 737, "Greek MS-DOS (437G)", "CP737",""},
+    {0x6B, 857, "Turkish MS-DOS", "CP857",""},
+    {0x6C, 863, "French-Canadian MS-DOS", "CP863",""},
+    {0x78, 950, "Taiwan Big 5", "CP950",""},
+    {0x79, 949, "Hangul (Wansung)", "CP949",""},
+    {0x7A, 936, "PRC GBK", "CP936","GBK"},
+    {0x7B, 932, "Japanese Shift-JIS", "CP932",""},
+    {0x7C, 874, "Thai Windows/MS-DOS", "WINDOWS-874","WIN874"},
+    {0x86, 737, "Greek OEM", "CP737",""},
+    {0x87, 852, "Slovenian OEM", "CP852",""},
+    {0x88, 857, "Turkish OEM", "CP857",""},
+    {0xC8, 1250, "Eastern European Windows", "WINDOWS-1250","WIN1250"},
+    {0xC9, 1251, "Russian Windows", "WINDOWS-1251","WIN1251"},
+    {0xCA, 1254, "Turkish Windows", "WINDOWS-1254","WIN1254"},
+    {0xCB, 1253, "Greek Windows", "WINDOWS-1253","WIN1253"},
+    {0xCC, 1257, "Baltic Window", "WINDOWS-1257","WIN1257"},
+    {0xFF, 65001, "UTF-8", "UTF-8","UTF8"}
+};
+
+
+
+
+
 /**
  * Escape strings that are to be used as part of a PostgreSQL connection string. If no
  * characters require escaping, simply return the input pointer. Otherwise return a
@@ -254,6 +334,8 @@
 /*
 * In the case where data is coming out of the database in some wierd encoding
 * we want to look up the appropriate code page entry to feed to DBFCreateEx
+*
+* Return null on error (cannot allocate memory)
 */
 char *
 encoding2codepage(const char *encoding)
@@ -270,7 +352,8 @@
 			else
 			{
 				char *codepage = NULL;
-				asprintf(&codepage, "LDID/%d", code_pages[i].ldid);
+				int ret = asprintf(&codepage, "LDID/%d", code_pages[i].ldid);
+				if ( ret == -1 ) return NULL; /* return null on error */
 				return codepage;
 			}
 		}

Modified: trunk/loader/shpcommon.h
===================================================================
--- trunk/loader/shpcommon.h	2016-05-12 09:44:55 UTC (rev 14896)
+++ trunk/loader/shpcommon.h	2016-05-12 09:59:51 UTC (rev 14897)
@@ -26,85 +26,6 @@
 
 
 
-typedef struct
-{
-    int ldid;
-    int cpg;
-    char *desc;
-    char *iconv;
-    char *pg;
-} code_page_entry;
-
-static int num_code_pages = 60;
-
-/* http://www.autopark.ru/ASBProgrammerGuide/DBFSTRUC.HTM */
-/* http://resources.arcgis.com/fr/content/kbase?fa=articleShow&d=21106 */
-
-static code_page_entry code_pages[] = {
-    {0x01, 437, "U.S. MS-DOS", "CP437",""},
-    {0x02, 850, "International MS-DOS", "CP850",""},
-    {0x03, 1252, "Window ANSI", "WINDOWS-1252","WIN1252"},
-    {0x08, 865, "Danish OEM", "CP865",""},
-    {0x09, 437, "Dutch OEM", "CP437",""},
-    {0x0A, 850, "Dutch OEM*", "CP850",""},
-    {0x0B, 437, "Finnish OEM", "CP437",""},
-    {0x0D, 437, "French OEM", "CP437",""},
-    {0x0E, 850, "French OEM*", "CP850",""},
-    {0x0F, 437, "German OEM", "CP437",""},
-    {0x10, 850, "German OEM*", "CP850",""},
-    {0x11, 437, "Italian OEM", "CP437",""},
-    {0x12, 850, "Italian OEM*", "CP850",""},
-    {0x13, 932, "Japanese Shift-JIS", "CP932","SJIS"},
-    {0x14, 850, "Spanish OEM*", "CP850",""},
-    {0x15, 437, "Swedish OEM", "CP437",""},
-    {0x16, 850, "Swedish OEM*", "CP850",""},
-    {0x17, 865, "Norwegian OEM", "CP865",""},
-    {0x18, 437, "Spanish OEM", "CP865",""},
-    {0x19, 437, "English OEM (Britain)", "CP437",""},
-    {0x1A, 850, "English OEM (Britain)*", "CP850",""},
-    {0x1B, 437, "English OEM (U.S.)", "CP437",""},
-    {0x1C, 863, "French OEM (Canada)", "CP863",""},
-    {0x1D, 850, "French OEM*", "CP850",""},
-    {0x1F, 852, "Czech OEM", "CP852",""},
-    {0x22, 852, "Hungarian OEM", "CP852",""},
-    {0x23, 852, "Polish OEM", "CP852",""},
-    {0x24, 860, "Portuguese OEM", "CP860",""},
-    {0x25, 850, "Portuguese OEM*", "CP850",""},
-    {0x26, 866, "Russian OEM", "WINDOWS-866","WIN866"},
-    {0x37, 850, "English OEM (U.S.)*", "CP850",""},
-    {0x40, 852, "Romanian OEM", "CP852",""},
-    {0x4D, 936, "Chinese GBK (PRC)", "CP936",""},
-    {0x4E, 949, "Korean (ANSI/OEM)", "CP949",""},
-    {0x4F, 950, "Chinese Big 5 (Taiwan)", "CP950","BIG5"},
-    {0x50, 874, "Thai (ANSI/OEM)", "WIN874",""},
-    {0x57, 1252, "ANSI", "WINDOWS-1252",""},
-    {0x58, 1252, "Western European ANSI", "WINDOWS-1252",""},
-    {0x59, 1252, "Spanish ANSI", "WINDOWS-1252",""},
-    {0x64, 852, "Eastern European MS-DOS", "CP852",""},
-    {0x65, 866, "Russian MS-DOS", "CP866",""},
-    {0x66, 865, "Nordic MS-DOS", "CP865",""},
-    {0x67, 861, "Icelandic MS-DOS", "",""},
-    {0x6A, 737, "Greek MS-DOS (437G)", "CP737",""},
-    {0x6B, 857, "Turkish MS-DOS", "CP857",""},
-    {0x6C, 863, "French-Canadian MS-DOS", "CP863",""},
-    {0x78, 950, "Taiwan Big 5", "CP950",""},
-    {0x79, 949, "Hangul (Wansung)", "CP949",""},
-    {0x7A, 936, "PRC GBK", "CP936","GBK"},
-    {0x7B, 932, "Japanese Shift-JIS", "CP932",""},
-    {0x7C, 874, "Thai Windows/MS-DOS", "WINDOWS-874","WIN874"},
-    {0x86, 737, "Greek OEM", "CP737",""},
-    {0x87, 852, "Slovenian OEM", "CP852",""},
-    {0x88, 857, "Turkish OEM", "CP857",""},
-    {0xC8, 1250, "Eastern European Windows", "WINDOWS-1250","WIN1250"},
-    {0xC9, 1251, "Russian Windows", "WINDOWS-1251","WIN1251"},
-    {0xCA, 1254, "Turkish Windows", "WINDOWS-1254","WIN1254"},
-    {0xCB, 1253, "Greek Windows", "WINDOWS-1253","WIN1253"},
-    {0xCC, 1257, "Baltic Window", "WINDOWS-1257","WIN1257"},
-    {0xFF, 65001, "UTF-8", "UTF-8","UTF8"}
-};
-
-
-
 typedef struct shp_connection_state
 {
 	/* PgSQL username to log in with */
@@ -129,13 +50,13 @@
 
 /* Column map between pgsql and dbf */
 typedef struct colmap_t {
-	
+
 	/* Column map pgfieldnames */
 	char **pgfieldnames;
-	
+
 	/* Column map dbffieldnames */
 	char **dbffieldnames;
-	
+
 	/* Number of entries within column map */
 	int size;
 



More information about the postgis-tickets mailing list