/*
- * Copyright (C) 2006-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2010 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
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. */
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;
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(&(struct btr_node_description)
+ EMBRACE(.name = name, .parent = parent));
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);
}
}
*/
close(gc->fd);
free(gc->parent);
+ free(gc->name);
return 1;
}
gc_activate(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)