From 3321748e4a9ef0cc5e490fb784c2a7e0a67ef473 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Sat, 28 Jul 2012 19:28:27 +0200 Subject: [PATCH] util_strtocmd, util_strtononcmd --- gmqcc.h | 3 +++ util.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/gmqcc.h b/gmqcc.h index 3910159..bfc22d9 100644 --- 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 3a347b4..4f40928 100644 --- 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; +} -- 2.39.2