diff options
Diffstat (limited to 'lib/src')
| -rw-r--r-- | lib/src/delsvc.c | 1 | ||||
| -rw-r--r-- | lib/src/rdsvc.c | 29 | ||||
| -rw-r--r-- | lib/src/split_argv.c | 22 | 
3 files changed, 5 insertions, 47 deletions
| diff --git a/lib/src/delsvc.c b/lib/src/delsvc.c index f4f9c76..fd10cfe 100644 --- a/lib/src/delsvc.c +++ b/lib/src/delsvc.c @@ -30,7 +30,6 @@ void delsvc(service_t *svc)  		e = svc->exec;  		svc->exec = e->next; -		free(e->argv);  		free(e);  	} diff --git a/lib/src/rdsvc.c b/lib/src/rdsvc.c index c8ba590..1a8cf7e 100644 --- a/lib/src/rdsvc.c +++ b/lib/src/rdsvc.c @@ -38,26 +38,6 @@ static int try_unescape(char *arg, rdline_t *rd)  	return 0;  } -static char **try_split_argv(char *str, rdline_t *rd) -{ -	char **argv = split_argv(str); - -	if (argv == NULL) { -		switch (errno) { -		case EINVAL: -			fprintf(stderr, "%s: %zu: malformed string constant\n", -				rd->filename, rd->lineno); -			break; -		default: -			fprintf(stderr, "%s: %zu: %s\n", -				rd->filename, rd->lineno, strerror(errno)); -			break; -		} -	} - -	return argv; -} -  static char *try_strdup(const char *str, rdline_t *rd)  {  	char *out = strdup(str); @@ -96,11 +76,12 @@ static int svc_exec(service_t *svc, char *arg, rdline_t *rd)  		return -1;  	} -	strcpy(e->buffer, arg); +	strcpy(e->args, arg); -	e->argv = try_split_argv(e->buffer, rd); -	if (e->argv == NULL) { -		free(e); +	e->argc = pack_argv(e->args); +	if (e->argc < 0) { +		fprintf(stderr, "%s: %zu: malformed string constant\n", +				rd->filename, rd->lineno);  		return -1;  	} diff --git a/lib/src/split_argv.c b/lib/src/split_argv.c index b95720d..5930e2d 100644 --- a/lib/src/split_argv.c +++ b/lib/src/split_argv.c @@ -80,25 +80,3 @@ fail_str:  	errno = EINVAL;  	return -1;  } - -char **split_argv(char *str) -{ -	char **argv = NULL; -	int i, count; - -	count = pack_argv(str); -	if (count <= 0) -		return NULL; - -	argv = malloc(sizeof(argv[0]) * (count + 1)); -	if (argv == NULL) -		return NULL; - -	for (i = 0; i < count; ++i) { -		argv[i] = str; -		str += strlen(str) + 1; -	} - -	argv[i] = NULL; -	return argv; -} | 
