document xml_copy_escape() and add an extra function, namely
authorLuigi Rizzo <rizzo@icir.org>
Tue, 17 Oct 2006 17:19:31 +0000 (17:19 +0000)
committerLuigi Rizzo <rizzo@icir.org>
Tue, 17 Oct 2006 17:19:31 +0000 (17:19 +0000)
replace non-alphanum chars with underscore.
This is useful when building field names in xml formatting.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45325 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/manager.c

index 532ceb8..45cdd6e 100644 (file)
@@ -240,9 +240,19 @@ static char *complete_show_mancmd(const char *line, const char *word, int pos, i
        return ret;
 }
 
-static void xml_copy_escape(char **dst, size_t *maxlen, const char *src, int lower)
+/*
+ * convert to xml with various conversion:
+ * mode & 1    -> lowercase;
+ * mode & 2    -> replace non-alphanumeric chars with underscore
+ */
+static void xml_copy_escape(char **dst, size_t *maxlen, const char *src, int mode)
 {
-       while (*src && (*maxlen > 6)) {
+       for ( ; *src && *maxlen > 6; src++) {
+               if ( (mode & 2) && !isalnum(*src)) {
+                       *(*dst)++ = '_';
+                       (*maxlen)--;
+                       continue;
+               }
                switch (*src) {
                case '<':
                        strcpy(*dst, "&lt;");
@@ -269,11 +279,11 @@ static void xml_copy_escape(char **dst, size_t *maxlen, const char *src, int low
                        (*dst) += 5;
                        *maxlen -= 5;
                        break;          
+
                default:
-                       *(*dst)++ = lower ? tolower(*src) : *src;
+                       *(*dst)++ = mode ? tolower(*src) : *src;
                        (*maxlen)--;
                }
-               src++;
        }
 }