]> granicus.if.org Git - imagemagick/commitdiff
Added extra implementation of StringToList that also returns the number of items...
authorDirk Lemstra <dirk@git.imagemagick.org>
Sat, 24 Mar 2018 20:53:41 +0000 (21:53 +0100)
committerDirk Lemstra <dirk@git.imagemagick.org>
Sat, 24 Mar 2018 20:56:18 +0000 (21:56 +0100)
MagickCore/string.c
MagickCore/string_.h

index d2d15bc93ba4523282ed38e3d10f4718372fe876..762bbf35d1ee5cadf77b4998f0b0276e546fd3dc 100644 (file)
@@ -2368,6 +2368,37 @@ MagickExport char *StringToken(const char *delimiters,char **string)
 %
 */
 MagickExport char **StringToList(const char *text)
+{
+  return(StringToStrings(text, (size_t *) NULL));
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%  S t r i n g T o S t r i n g s                                              %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  StringToList() converts a text string into a list by segmenting the text
+%  string at each carriage return discovered.  The list is converted to HEX
+%  characters if any control characters are discovered within the text string.
+%
+%  The format of the StringToList method is:
+%
+%      char **StringToList(const char *text,size_t *lines)
+%
+%  A description of each parameter follows:
+%
+%    o text:  Specifies the string to segment into a list.
+%
+%    o count: Return value for the number of items in the list.
+%
+*/
+MagickExport char **StringToStrings(const char *text,size_t *count)
 {
   char
     **textlist;
@@ -2382,7 +2413,11 @@ MagickExport char **StringToList(const char *text)
     lines;
 
   if (text == (char *) NULL)
-    return((char **) NULL);
+    {
+      if (count != (size_t *) NULL)
+        *count=0;
+      return((char **) NULL);
+    }
   for (p=text; *p != '\0'; p++)
     if (((int) ((unsigned char) *p) < 32) &&
         (isspace((int) ((unsigned char) *p)) == 0))
@@ -2476,6 +2511,8 @@ MagickExport char **StringToList(const char *text)
         *q='\0';
       }
     }
+  if (count != (size_t *) NULL)
+    *count=lines;
   textlist[i]=(char *) NULL;
   return(textlist);
 }
index 4cef32ea486d5dab656f8ce67bbe9befd671a033..ebdcd25add02aa3e28fc1933553e0a2ae433d8b8 100644 (file)
@@ -54,7 +54,8 @@ extern MagickExport char
   *StringInfoToString(const StringInfo *),
   **StringToArgv(const char *,int *),
   *StringToken(const char *,char **),
-  **StringToList(const char *);
+  **StringToList(const char *),
+  **StringToStrings(const char *,size_t *);
 
 extern MagickExport const char
   *GetStringInfoName(const StringInfo *),