diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2014-12-04 18:43:32 +0100 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2014-12-04 18:43:32 +0100 |
commit | 720079063a4e97794dada308faac5834c0c2b067 (patch) | |
tree | a08ac3c9aee0df89c5870f59c308b23b9d971122 /src/worker.c | |
parent | 8717001af5170c3b63f9db543986b87ea7dd2049 (diff) | |
download | biruda-720079063a4e97794dada308faac5834c0c2b067.tar.gz biruda-720079063a4e97794dada308faac5834c0c2b067.tar.bz2 |
adde a run time parameter to worktest
reading worker command now with parameters as in the shell
Diffstat (limited to 'src/worker.c')
-rw-r--r-- | src/worker.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/worker.c b/src/worker.c index e915697..c347ee8 100644 --- a/src/worker.c +++ b/src/worker.c @@ -108,14 +108,23 @@ static void *worker_func( void *thread_data ) direct_glib_execution_worker_data_t *wed = (direct_glib_execution_worker_data_t *)thread_data; worker_t *worker = wed->worker; - gchar *argv[] = { worker->command, NULL }; - + gchar **args; + gint nof_args; GError *error = NULL; + if( !g_shell_parse_argv( worker->command, &nof_args, &args, &error ) ) { + fprintf( stderr, "ERROR: Failed to parse command of worker '%s', '%s': %s\n", + worker->name, worker->command, error->message ); + g_strfreev( args ); + return NULL; + } + + error = NULL; gboolean ret = g_spawn_async_with_pipes( NULL, - argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD, NULL, + args, NULL, G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &wed->pid, NULL, &wed->out, &wed->err, &error ); if( !ret ) { fprintf( stderr, "ERROR: Starting worker failed: %s\n", error->message ); + g_strfreev( args ); return NULL; } @@ -147,6 +156,8 @@ static void *worker_func( void *thread_data ) printf( "worker %s: leaving glib worker main loop..\n", worker->name ); worker->state = WORKER_STATE_STOPPED; + + g_strfreev( args ); return NULL; } |