X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=grab_client.c;h=2b8235b4e800e260263850dde263a0de224a605e;hp=2c95022e3ed7769308532f9598d3b80a8d82bda9;hb=fe838e619339649b050ef71715127fe6b8e872b6;hpb=d498a6316f662a5f423e39a4d22fff624fca8816 diff --git a/grab_client.c b/grab_client.c index 2c95022e..2b8235b4 100644 --- a/grab_client.c +++ b/grab_client.c @@ -45,6 +45,8 @@ enum grab_flags { struct grab_client { /* The value of the -p option. */ char *parent; + /* The value of the -n option. */ + char *name; /** The file descriptor to send the grabbed stream to. */ int fd; /** See \ref grab_mode. */ @@ -121,6 +123,7 @@ static void gc_post_select(struct sched *s, struct task *t); static void gc_activate(struct grab_client *gc) { struct btr_node *root = audiod_get_btr_root(), *parent; + char *name = gc->name? gc->name : "grab"; if (!root) return; @@ -129,11 +132,12 @@ static void gc_activate(struct grab_client *gc) return; PARA_INFO_LOG("activating fd %d\n", gc->fd); list_move(&gc->node, &active_grab_client_list); - gc->btrn = btr_new_node("grab", parent, NULL, NULL); + gc->btrn = btr_new_node(name, parent, NULL, NULL); if (!gc->task.pre_select) { gc->task.pre_select = gc_pre_select; gc->task.post_select = gc_post_select; - sprintf(gc->task.status, "grab"); + snprintf(gc->task.status, sizeof(gc->task.status) - 1, "%s", name); + gc->task.status[sizeof(gc->task.status) - 1] = '\0'; register_task(&gc->task); } } @@ -178,6 +182,7 @@ static int gc_close(struct grab_client *gc, int err) */ close(gc->fd); free(gc->parent); + free(gc->name); return 1; } gc_activate(gc); @@ -247,6 +252,10 @@ static int gc_check_args(int argc, char **argv, struct grab_client *gc) gc->parent = para_strdup(arg + 3); continue; } + if (!strncmp(arg, "-n=", 3)) { + gc->name = para_strdup(arg + 3); + continue; + } return -E_GC_SYNTAX; } if (i != argc)