]> de.git.xonotic.org Git - xonotic/gmqcc.git/commitdiff
util_strtocmd, util_strtononcmd
authorWolfgang Bumiller <wolfgang.linux@bumiller.com>
Sat, 28 Jul 2012 17:28:27 +0000 (19:28 +0200)
committerWolfgang Bumiller <wolfgang.linux@bumiller.com>
Sat, 28 Jul 2012 17:28:27 +0000 (19:28 +0200)
gmqcc.h
util.c

diff --git a/gmqcc.h b/gmqcc.h
index 3910159f2e18a4b78a1640ab4c0a0676fbc8ce8d..bfc22d96a5c28504a6dbb7fb42597cb849223ec2 100644 (file)
--- a/gmqcc.h
+++ b/gmqcc.h
@@ -287,6 +287,9 @@ void  util_debug         (const char *, const char *, ...);
 int   util_getline       (char **, size_t *, FILE *);
 void  util_endianswap    (void *,  int, int);
 
+size_t util_strtocmd    (const char *, char *, size_t);
+size_t util_strtononcmd (const char *, char *, size_t);
+
 uint32_t util_crc32(const char *, int, register const short);
 
 #ifdef NOTRACK
diff --git a/util.c b/util.c
index 3a347b4669986dec685dbd4fd9e6a4f8452a4652..4f4092830e539e5dece0e6d47bab273653a2cfbc 100644 (file)
--- a/util.c
+++ b/util.c
@@ -370,3 +370,31 @@ int util_getline(char **lineptr, size_t *n, FILE *stream) {
     *pos = '\0';
     return (ret = pos - *lineptr);
 }
+
+size_t util_strtocmd(const char *in, char *out, size_t outsz) {
+    size_t sz = 1;
+    for (; *in && sz < outsz; ++in, ++out, ++sz) {
+        if (*in == '-')
+            *out = '_';
+        else if (isalpha(*in) && !isupper(*in))
+            *out = *in + 'A' - 'a';
+        else
+            *out = *in;
+    }
+    *out = 0;
+    return sz-1;
+}
+
+size_t util_strtononcmd(const char *, char *, size_t) {
+    size_t sz = 1;
+    for (; *in && sz < outsz; ++in, ++out, ++sz) {
+        if (*in == '_')
+            *out = '-';
+        else if (isalpha(*in) && isupper(*in))
+            *out = *in + 'a' - 'A';
+        else
+            *out = *in;
+    }
+    *out = 0;
+    return sz-1;
+}