Alternative yang spec option -y added to all applications

This commit is contained in:
Olof hagsand 2017-04-04 21:37:42 +02:00
parent 236b661e43
commit c59869a44e
10 changed files with 86 additions and 167 deletions

View file

@ -65,7 +65,7 @@
* @param[in] string String to be split
* @param[in] delim String of delimiter characters
* @param[out] nvec Number of entries in returned vector
* @retval vec Vector of strings. Free after use
* @retval vec Vector of strings. NULL terminated. Free after use
* @retval NULL Error *
*/
char **
@ -78,6 +78,7 @@ clicon_strsep(char *string,
char *p;
int nvec = 1;
int i;
size_t siz;
char *s;
char *d;
@ -89,11 +90,13 @@ clicon_strsep(char *string,
s++;
}
/* alloc vector and append copy of string */
if ((vec = (char**)malloc(nvec* sizeof(char*) + strlen(string)+1)) == NULL){
siz = (nvec+1)* sizeof(char*) + strlen(string)+1;
if ((vec = (char**)malloc(siz)) == NULL){
clicon_err(OE_UNIX, errno, "malloc");
goto done;
}
ptr = (char*)vec + nvec* sizeof(char*); /* this is where ptr starts */
memset(vec, 0, siz);
ptr = (char*)vec + (nvec+1)* sizeof(char*); /* this is where ptr starts */
strncpy(ptr, string, strlen(string)+1);
i = 0;
while ((p = strsep(&ptr, delim)) != NULL)
@ -190,10 +193,10 @@ main(int argc, char **argv)
return 0;
}
str0 = argv[1];
if ((vec = clicon_strsep("a b\tc", " \t", &nvec)) == NULL)
if ((vec = clicon_strsep(str0, " \t", &nvec)) == NULL)
return -1;
fprintf(stderr, "nvec: %d\n", nvec);
for (i=0; i<nvec; i++)
for (i=0; i<nvec+1; i++)
fprintf(stderr, "vec[%d]: %s\n", i, vec[i]);
if ((str1 = clicon_strjoin(nvec, vec, " ")) == NULL)
return -1;