diff --git a/src/lib66/environ.c b/src/lib66/environ.c index e01b49f53fe32e24cb76eab70e5183defbe74a81..885ff87c0ae65cda999af7b255d5a1b994500bba 100644 --- a/src/lib66/environ.c +++ b/src/lib66/environ.c @@ -113,15 +113,13 @@ int env_split_one(char *line,genalloc *ga,stralloc *sa) int env_split(genalloc *gaenv,stralloc *saenv,stralloc *src) { int nbline = 0, i = 0 ; - printf("src::%s\n",src->s) ; genalloc gatmp = GENALLOC_ZERO ;//stralist nbline = get_nbline_ga(src->s,src->len,&gatmp) ; - printf("nbline::%i\n",nbline) ; for (; i < nbline ; i++) { char *line = gaistr(&gatmp,i) ; - printf("line::%s\n",line) ; - if (!env_split_one(line,gaenv,saenv)) goto err ; + if (*line) + if (!env_split_one(line,gaenv,saenv)) goto err ; } genalloc_deepfree(stralist,&gatmp,stra_free) ; return 1 ; @@ -134,25 +132,28 @@ int env_parsenclean(stralloc *modifs,stralloc *src) { int nbline = 0, i = 0 ; genalloc gatmp = GENALLOC_ZERO ;//stralist - - if (!parse_env(src)) goto err ; - if (!env_clean(src)) goto err ; + stralloc tmp = STRALLOC_ZERO ; nbline = get_nbline_ga(src->s,src->len,&gatmp) ; -printf("src + u::%s\n",src->s ) ; + for (; i < nbline ; i++) { - char *line = gaistr(&gatmp,i) ; + tmp.len = 0 ; + if (!gaistrlen(&gatmp,i)) break ; + if (!stralloc_cats(&tmp,gaistr(&gatmp,i))) goto err ; + if (!parse_env(&tmp)) goto err ; + if (!env_clean(&tmp)) goto err ; + tmp.len--;//remove '0' int u = 0 ; - if (line[0] == '!') u++ ; - printf("line + u::%s\n",gaistr(&gatmp,i) ) ; - if (!stralloc_catb(modifs,line + u ,strlen(line) - u) || - !stralloc_0(modifs)) goto err ; + if (tmp.s[0] == '!') u++ ; + if (!stralloc_catb(modifs,tmp.s + u ,(tmp.len - u) + 1)) goto err ;// || +// !stralloc_0(modifs)) goto err ; } genalloc_deepfree(stralist,&gatmp,stra_free) ; - + stralloc_free(&tmp) ; return 1 ; err: genalloc_deepfree(stralist,&gatmp,stra_free) ; + stralloc_free(&tmp) ; return 0 ; }