rendered paste bodydiff --git a/src/bcop.h b/src/bcop.h
index ed28968..1f0f0d2 100644
--- a/src/bcop.h
+++ b/src/bcop.h
@@ -212,6 +212,7 @@ typedef struct _ParserState {
char * strToLower(char *str);
char * strToUpper(char *str);
char * strToFirstUp(char *str);
+char * strToCamel(char *str);
int genCode(char *src, char *hdr);
diff --git a/src/xml_parser.c b/src/xml_parser.c
index 2609e59..5fabf3e 100644
--- a/src/xml_parser.c
+++ b/src/xml_parser.c
@@ -573,7 +573,7 @@ parseOption(xmlDoc *doc, ParserState* pState, xmlNode *node)
Option *ns = calloc(1, sizeof(Option));
ns->name = strToLower((char *)name);
ns->uName = strToUpper((char *)name);
- ns->fUName = strToFirstUp((char *)name);
+ ns->fUName = strToCamel((char *)name);
ns->type = sType;
ns->group = (pState->group)?strdup(pState->group):NULL;
ns->subGroup = (pState->subGroup)?strdup(pState->subGroup):NULL;
@@ -833,6 +833,28 @@ char * strToFirstUp(char *str)
return ret;
}
+char * strToCamel(char *str)
+{
+ char *lowString = strToLower(str);
+ char *token;
+ char *buffer;
+
+ buffer = malloc (sizeof(char) * (strlen(lowString) + 1));
+ strcpy (buffer, "");
+
+ token = strtok (lowString, "_");
+ while (token)
+ {
+ token[0] = toupper(token[0]);
+ strcat (buffer, token);
+ token = strtok (NULL, "_");
+ }
+
+ free (lowString);
+
+ return buffer;
+}
+
static void usage(void)
{
printf("Usage: %9s [options] <options file>\n",programName);