From: Dirk Lemstra Date: Sat, 24 Mar 2018 20:53:41 +0000 (+0100) Subject: Added extra implementation of StringToList that also returns the number of items... X-Git-Tag: 7.0.7-28~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=47092b185cf92ee42bcfab85ae959a3cfe806402;p=imagemagick Added extra implementation of StringToList that also returns the number of items in the list. --- diff --git a/MagickCore/string.c b/MagickCore/string.c index d2d15bc93..762bbf35d 100644 --- a/MagickCore/string.c +++ b/MagickCore/string.c @@ -2368,6 +2368,37 @@ MagickExport char *StringToken(const char *delimiters,char **string) % */ MagickExport char **StringToList(const char *text) +{ + return(StringToStrings(text, (size_t *) NULL)); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % +% 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); } diff --git a/MagickCore/string_.h b/MagickCore/string_.h index 4cef32ea4..ebdcd25ad 100644 --- a/MagickCore/string_.h +++ b/MagickCore/string_.h @@ -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 *),