src/hg/autoSql/autoSql.c 1.38

1.38 2009/07/04 04:45:29 markd
adjust enum/set values to be valid C indentifiers
Index: src/hg/autoSql/autoSql.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/autoSql/autoSql.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -b -B -U 4 -r1.37 -r1.38
--- src/hg/autoSql/autoSql.c	17 Mar 2009 23:31:45 -0000	1.37
+++ src/hg/autoSql/autoSql.c	4 Jul 2009 04:45:29 -0000	1.38
@@ -84,9 +84,18 @@
 
 static void cSymTypePrName(struct asObject *dbObj, char *name, FILE *f)
 /* print the C type name, prefixed with the object name */
 {
-fprintf(f, "%s%c%s", dbObj->name, toupper(name[0]), name+1);
+char cname[1024];
+safef(cname, sizeof(cname), "%s%c%s", dbObj->name, toupper(name[0]), name+1);
+// Fix name so that it is a valid C identifier.
+char *c;
+for (c = cname; *c != '\0'; c++)
+    {
+    if (!(isalnum(*c) || (*c == '_')))
+        *c = '_';
+    }
+fputs(cname, f);
 }
 
 void cSymTypeDef(struct asObject *dbObj, struct asColumn *col, FILE *f)
 /* print out C enum for enum or set columns.  enum and value names are