mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
pw-metadata: add -l option to list available metadata
This commit is contained in:
parent
6394eb1b18
commit
ccd118368e
2 changed files with 28 additions and 7 deletions
|
|
@ -44,6 +44,9 @@ OPTIONS
|
||||||
--version
|
--version
|
||||||
Show version information.
|
Show version information.
|
||||||
|
|
||||||
|
-l | --list
|
||||||
|
List available metadata objects
|
||||||
|
|
||||||
-m | --monitor
|
-m | --monitor
|
||||||
Keeps running and log the changes to the metadata.
|
Keeps running and log the changes to the metadata.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ struct data {
|
||||||
|
|
||||||
const char *opt_remote;
|
const char *opt_remote;
|
||||||
const char *opt_name;
|
const char *opt_name;
|
||||||
|
bool opt_list;
|
||||||
bool opt_monitor;
|
bool opt_monitor;
|
||||||
bool opt_delete;
|
bool opt_delete;
|
||||||
uint32_t opt_id;
|
uint32_t opt_id;
|
||||||
|
|
@ -48,6 +49,9 @@ static int metadata_property(void *data, uint32_t id,
|
||||||
{
|
{
|
||||||
struct data *d = data;
|
struct data *d = data;
|
||||||
|
|
||||||
|
if (d->opt_list)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if ((d->opt_id == SPA_ID_INVALID || d->opt_id == id) &&
|
if ((d->opt_id == SPA_ID_INVALID || d->opt_id == id) &&
|
||||||
(d->opt_key == NULL || spa_streq(d->opt_key, key))) {
|
(d->opt_key == NULL || spa_streq(d->opt_key, key))) {
|
||||||
if (key == NULL) {
|
if (key == NULL) {
|
||||||
|
|
@ -72,22 +76,30 @@ static void registry_event_global(void *data, uint32_t id, uint32_t permissions,
|
||||||
const struct spa_dict *props)
|
const struct spa_dict *props)
|
||||||
{
|
{
|
||||||
struct data *d = data;
|
struct data *d = data;
|
||||||
const char *str;
|
const char *name;
|
||||||
|
|
||||||
if (!spa_streq(type, PW_TYPE_INTERFACE_Metadata))
|
if (!spa_streq(type, PW_TYPE_INTERFACE_Metadata))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (props != NULL &&
|
if (props == NULL)
|
||||||
(str = spa_dict_lookup(props, PW_KEY_METADATA_NAME)) != NULL &&
|
|
||||||
!spa_streq(str, d->opt_name))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (d->metadata != NULL) {
|
name = spa_dict_lookup(props, PW_KEY_METADATA_NAME);
|
||||||
|
if (name == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (d->opt_name && !spa_streq(name, d->opt_name))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!d->opt_list && d->metadata != NULL) {
|
||||||
pw_log_warn("Multiple metadata: ignoring metadata %d", id);
|
pw_log_warn("Multiple metadata: ignoring metadata %d", id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Found \"%s\" metadata %d\n", d->opt_name, id);
|
printf("Found \"%s\" metadata %d\n", name, id);
|
||||||
|
if (d->opt_list)
|
||||||
|
return;
|
||||||
|
|
||||||
d->metadata = pw_registry_bind(d->registry,
|
d->metadata = pw_registry_bind(d->registry,
|
||||||
id, type, PW_VERSION_METADATA, 0);
|
id, type, PW_VERSION_METADATA, 0);
|
||||||
|
|
||||||
|
|
@ -157,6 +169,7 @@ static void show_help(struct data *data, const char *name, bool error)
|
||||||
" -h, --help Show this help\n"
|
" -h, --help Show this help\n"
|
||||||
" --version Show version\n"
|
" --version Show version\n"
|
||||||
" -r, --remote Remote daemon name\n"
|
" -r, --remote Remote daemon name\n"
|
||||||
|
" -l, --list List available metadata\n"
|
||||||
" -m, --monitor Monitor metadata\n"
|
" -m, --monitor Monitor metadata\n"
|
||||||
" -d, --delete Delete metadata\n"
|
" -d, --delete Delete metadata\n"
|
||||||
" -n, --name Metadata name (default: \"%s\")\n",
|
" -n, --name Metadata name (default: \"%s\")\n",
|
||||||
|
|
@ -171,6 +184,7 @@ int main(int argc, char *argv[])
|
||||||
{ "help", no_argument, NULL, 'h' },
|
{ "help", no_argument, NULL, 'h' },
|
||||||
{ "version", no_argument, NULL, 'V' },
|
{ "version", no_argument, NULL, 'V' },
|
||||||
{ "remote", required_argument, NULL, 'r' },
|
{ "remote", required_argument, NULL, 'r' },
|
||||||
|
{ "list", no_argument, NULL, 'l' },
|
||||||
{ "monitor", no_argument, NULL, 'm' },
|
{ "monitor", no_argument, NULL, 'm' },
|
||||||
{ "delete", no_argument, NULL, 'd' },
|
{ "delete", no_argument, NULL, 'd' },
|
||||||
{ "name", required_argument, NULL, 'n' },
|
{ "name", required_argument, NULL, 'n' },
|
||||||
|
|
@ -184,7 +198,7 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
data.opt_name = "default";
|
data.opt_name = "default";
|
||||||
|
|
||||||
while ((c = getopt_long(argc, argv, "hVr:mdn:", long_options, NULL)) != -1) {
|
while ((c = getopt_long(argc, argv, "hVr:lmdn:", long_options, NULL)) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'h':
|
case 'h':
|
||||||
show_help(&data, argv[0], false);
|
show_help(&data, argv[0], false);
|
||||||
|
|
@ -200,6 +214,10 @@ int main(int argc, char *argv[])
|
||||||
case 'r':
|
case 'r':
|
||||||
data.opt_remote = optarg;
|
data.opt_remote = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 'l':
|
||||||
|
data.opt_name = NULL;
|
||||||
|
data.opt_list = true;
|
||||||
|
break;
|
||||||
case 'm':
|
case 'm':
|
||||||
data.opt_monitor = true;
|
data.opt_monitor = true;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue