From 36247fe49d1b94226938e386b7cad30d93ee5a82 Mon Sep 17 00:00:00 2001 From: Jaska Uimonen Date: Wed, 26 Nov 2014 10:43:10 +0200 Subject: [PATCH] fix high risk coverity warnings Change-Id: I47d29c937029e13c4b2b02dbd6a98325550bac90 --- murphy/audiomgr.c | 46 +++++++------- murphy/classify.c | 22 ++++--- murphy/constrain.c | 16 ++--- murphy/dbusif.c | 36 +++++------ murphy/discover.c | 129 ++++++++++++++++++-------------------- murphy/extapi.c | 8 +-- murphy/fader.c | 32 +++++----- murphy/list.h | 4 +- murphy/loopback.c | 6 +- murphy/module-murphy-ivi.c | 6 -- murphy/multiplex.c | 8 +-- murphy/murphy-config.c | 20 +++--- murphy/murphyif.c | 53 +++++++--------- murphy/node.c | 33 +++------- murphy/node.h | 76 ++--------------------- murphy/router.c | 24 ++----- murphy/router.h | 3 +- murphy/routerif.h | 4 +- murphy/scripting.c | 151 ++++++++++++++++++++++----------------------- murphy/stream-state.c | 8 ++- murphy/userdata.h | 99 ++++++++++++++++++++++++----- murphy/utils.c | 26 ++++---- murphy/utils.h | 16 ++--- murphy/volume.c | 8 +-- murphy/zone.c | 20 +----- 25 files changed, 396 insertions(+), 458 deletions(-) diff --git a/murphy/audiomgr.c b/murphy/audiomgr.c index 023da30..a6b4b08 100644 --- a/murphy/audiomgr.c +++ b/murphy/audiomgr.c @@ -100,12 +100,14 @@ struct pa_audiomgr { }; +/* static bool find_default_route(struct userdata *, mir_node *, am_connect_data *); +*/ static void *node_hash(mir_direction, uint16_t); static void *conn_hash(uint16_t); - +static void fill_am_data_and_register(struct userdata *, mir_node *, pa_audiomgr *); struct pa_audiomgr *pa_audiomgr_init(struct userdata *u) { @@ -204,7 +206,7 @@ void pa_audiomgr_unregister_domain(struct userdata *u, bool send_state) pa_log_debug("unregistering domain '%s'", am->domain.name); while ((node = pa_hashmap_iterate(am->nodes, &state, &key))) { - pa_log_debug(" unregistering '%s' (%p/%p)", node->amname, key,node); + pa_log_debug(" unregistering '%s' (%p/%p)", node->amname, (void *)key, (void *)node); node->amid = AM_ID_INVALID; pa_hashmap_remove(am->nodes, key); } @@ -244,11 +246,11 @@ void fill_am_data_and_register(struct userdata *u, mir_node *node, pa_audiomgr * if (success) { pa_log_debug("initiate registration node '%s' (%p)" - "to audio manager", rd->name, node); + "to audio manager", rd->name, (void *)node); } else { pa_log("%s: failed to register node '%s' (%p)" - "to audio manager", __FILE__, rd->name, node); + "to audio manager", __FILE__, rd->name, (void *)node); } return; @@ -266,7 +268,6 @@ void pa_audiomgr_register_node(struct userdata *u, mir_node *node) }; pa_audiomgr *am; - bool success; const char *class_to_register; int i; @@ -297,7 +298,7 @@ void pa_audiomgr_register_node(struct userdata *u, mir_node *node) } pa_log_debug("skip registration of node '%s' (%p): " - "not known by audio manager", node->amname, node); + "not known by audio manager", node->amname, (void *)node); } void pa_audiomgr_node_registered(struct userdata *u, @@ -308,7 +309,6 @@ void pa_audiomgr_node_registered(struct userdata *u, pa_audiomgr *am; mir_node *node; void *key; - am_connect_data cd; pa_assert(u); pa_assert(rd); @@ -323,7 +323,7 @@ void pa_audiomgr_node_registered(struct userdata *u, key = node_hash(node->direction, id); pa_log_debug("registering node '%s' (%p/%p)", - node->amname, key, node); + node->amname, (void *)key, (void *)node); pa_hashmap_put(am->nodes, key, node); @@ -370,11 +370,12 @@ void pa_audiomgr_unregister_node(struct userdata *u, mir_node *node) pa_log("%s: confused with data structures: key mismatch. " "attempted to remove '%s' (%p/%p); " "actually removed '%s' (%p/%p)", __FILE__, - node->amname, key, node, removed->amname, - node_hash(removed->direction, removed->amid), removed); + node->amname, (void *)key, (void *)node, removed->amname, + (void *)node_hash(removed->direction, removed->amid), + (void *)removed); else pa_log("%s: confused with data structures: node %u (%p)" - "is not in the hash table", __FILE__, node->amid, node); + "is not in the hash table", __FILE__, node->amid, (void *)node); } @@ -388,11 +389,12 @@ void pa_audiomgr_unregister_node(struct userdata *u, mir_node *node) if (success) { pa_log_debug("sucessfully unregistered node '%s' (%p/%p)" - "from audio manager", node->amname, key, node); + "from audio manager", node->amname, + (void *)key, (void *)node); } else { pa_log("%s: failed to unregister node '%s' (%p)" - "from audio manager", __FILE__, node->amname, node); + "from audio manager", __FILE__, node->amname, (void *)node); } } } @@ -449,15 +451,15 @@ void pa_audiomgr_add_default_route(struct userdata *u, if (defrts->nlink >= defrts->maxlink) { defrts->maxlink += 16; - size = sizeof(link_t) * defrts->maxlink; + size = sizeof(link_t) * (size_t)defrts->maxlink; defrts->links = realloc(defrts->links, size); pa_assert(defrts->links); } link = defrts->links + defrts->nlink++; - link->fromidx = from->index; - link->toidx = to->index; + link->fromidx = (uint16_t)from->index; + link->toidx = (uint16_t)to->index; link->channels = from->channels < to->channels ? from->channels : to->channels; } @@ -549,7 +551,7 @@ void pa_audiomgr_connect(struct userdata *u, am_connect_data *cd) err = E_NOT_POSSIBLE; else { pa_log_debug("registering connection (%u/%p)", - cd->connection, conn); + cd->connection, (void *)conn); pa_hashmap_put(am->conns, conn_hash(cid), conn); } } @@ -563,7 +565,7 @@ void pa_audiomgr_connect(struct userdata *u, am_connect_data *cd) memset(&ad, 0, sizeof(ad)); ad.handle = cd->handle; ad.param1 = cd->connection; - ad.error = err; + ad.error = (am_uint16_t)err; pa_routerif_acknowledge(u, audiomgr_connect_ack, &ad); } @@ -592,11 +594,12 @@ void pa_audiomgr_disconnect(struct userdata *u, am_connect_data *cd) memset(&ad, 0, sizeof(ad)); ad.handle = cd->handle; ad.param1 = cd->connection; - ad.error = err; + ad.error = (am_uint16_t)err; pa_routerif_acknowledge(u, audiomgr_disconnect_ack, &ad); } +#if 0 static bool find_default_route(struct userdata *u, mir_node *node, am_connect_data *cd) @@ -636,15 +639,16 @@ static bool find_default_route(struct userdata *u, return false; } +#endif static void *node_hash(mir_direction direction, uint16_t amid) { - return NULL + ((uint32_t)direction << 16 | (uint32_t)amid); + return (char *)NULL + ((uint32_t)direction << 16 | (uint32_t)amid); } static void *conn_hash(uint16_t connid) { - return NULL + (uint32_t)connid; + return (char *)NULL + (uint32_t)connid; } diff --git a/murphy/classify.c b/murphy/classify.c index d46e2b7..2ac8c4b 100644 --- a/murphy/classify.c +++ b/murphy/classify.c @@ -61,7 +61,12 @@ void pa_classify_node_by_card(mir_node *node, pa_assert(node); pa_assert(card); - bus = pa_utils_get_card_bus(card); + bus = pa_utils_get_card_bus(card); + + /* bus might be null */ + if (!bus) + bus = " "; + form = pa_proplist_gets(card->proplist, PA_PROP_DEVICE_FORM_FACTOR); /* desc = pa_proplist_gets(card->proplist, PA_PROP_DEVICE_DESCRIPTION); @@ -373,11 +378,12 @@ mir_node_type pa_classify_guess_stream_node_type(struct userdata *u, return map ? map->type : mir_player; } -static char *get_tag(pid_t pid, char *tag, char *buf, size_t size) +static char *get_tag(pid_t pid, const char *tag, char *buf, size_t size) { char path[PATH_MAX]; char data[8192], *p, *q; - int fd, n, tlen; + int fd, n; + size_t tlen; fd = -1; snprintf(path, sizeof(path), "/proc/%u/status", pid); @@ -437,7 +443,7 @@ static pid_t get_ppid(pid_t pid) pid_t ppid; if (get_tag(pid, "PPid", buf, sizeof(buf)) != NULL) { - ppid = strtoul(buf, &end, 10); + ppid = strtol(buf, &end, 10); if (end && !*end) return ppid; @@ -461,7 +467,7 @@ static int pid2exe(pid_t pid, char *buf, size_t len) snprintf(path, sizeof(path), "/proc/%u/cmdline", ppid); if ((f = fopen(path, "r"))) { - if (fgets(buf, len-1, f)) { + if (fgets(buf, (int)len-1, f)) { if ((p = strchr(buf, ' '))) *p = '\0'; else if ((p = strchr(buf, '\n'))) @@ -470,7 +476,7 @@ static int pid2exe(pid_t pid, char *buf, size_t len) p = buf + strlen(buf); if ((q = strrchr(buf, '/'))) - memmove(buf, q+1, p-q); + memmove(buf, q+1, (size_t)(p-q)); st = 0; } @@ -518,7 +524,7 @@ static char *pid2appid(pid_t pid, char *buf, size_t size) { char binary[PATH_MAX]; char path[PATH_MAX], *dir, *p, *base; - int len; + unsigned int len; if (!pid || !get_binary(pid, binary, sizeof(binary))) return NULL; @@ -548,7 +554,7 @@ static char *pid2appid(pid_t pid, char *buf, size_t size) if ((dir = strprev(p, '/', path)) == NULL || dir == path) goto return_base; - len = p - dir; + len = (size_t)(p - dir); /* fetch 'apps' dir */ p = dir - 1; diff --git a/murphy/constrain.c b/murphy/constrain.c index 4d61263..ea0beea 100644 --- a/murphy/constrain.c +++ b/murphy/constrain.c @@ -41,13 +41,6 @@ static mir_constr_link *cstrlink_create(struct userdata *, mir_constr_def *, mir_node *); static void cstrlink_destroy(struct userdata *, mir_constr_link *); - -static void pa_hashmap_constrdef_free(void *cd, void *u) -{ - cstrdef_destroy(u, cd); -} - - pa_constrain *pa_constrain_init(struct userdata *u) { pa_constrain *constrain = pa_xnew0(pa_constrain, 1); @@ -223,7 +216,8 @@ int mir_constrain_print(mir_node *node, char *buf, int len) { mir_constr_def *cd; mir_constr_link *cl; - char *p, *e, *s; + char *p, *e; + const char *s; pa_assert(node); pa_assert(buf); @@ -240,7 +234,7 @@ int mir_constrain_print(mir_node *node, char *buf, int len) cd = cl->def; - p += snprintf(p, e-p, "%s'%s'", s, cd->name); + p += snprintf(p, (size_t)(e-p), "%s'%s'", s, cd->name); s = " "; } @@ -252,8 +246,8 @@ bool mir_constrain_port(struct userdata *u, mir_node *active, mir_node *node) { - char *active_port; - char *node_port; + const char *active_port; + const char *node_port; bool block; pa_assert(u); diff --git a/murphy/dbusif.c b/murphy/dbusif.c index f3df76d..7b7c78b 100644 --- a/murphy/dbusif.c +++ b/murphy/dbusif.c @@ -161,10 +161,10 @@ pa_routerif *pa_routerif_init(struct userdata *u, char pathbuf[128]; char ctlnambuf[128]; char ctlpathbuf[128]; - char *amrnam; - char *amrpath; - char *amcnam; - char *amcpath; + const char *amrnam; + const char *amrpath; + const char *amcnam; + const char *amcpath; char admarule[512]; int result; @@ -214,7 +214,7 @@ pa_routerif *pa_routerif_init(struct userdata *u, } if (ampath && *ampath) { - char *slash = ampath[strlen(ampath)-1] == '/' ? "" : "/"; + const char *slash = ampath[strlen(ampath)-1] == '/' ? "" : "/"; snprintf(pathbuf, sizeof(pathbuf), "%s%s" AUDIOMGR_DBUS_ROUTE_PATH, ampath, slash); amrpath = pathbuf; @@ -229,7 +229,7 @@ pa_routerif *pa_routerif_init(struct userdata *u, } if (amnam && *amnam){ - char *dot = amnam[strlen(amnam)-1] == '.' ? "" : "."; + const char *dot = amnam[strlen(amnam)-1] == '.' ? "" : "."; snprintf(nambuf, sizeof(nambuf), "%s%s" AUDIOMGR_DBUS_ROUTE_NAME, amnam, dot); amrnam = nambuf; @@ -345,7 +345,7 @@ static void handle_admin_message(struct userdata *u, DBusMessage *msg) char *name; char *before; char *after; - int success; + bool success; pa_assert(u); pa_assert_se((routerif = u->routerif)); @@ -562,7 +562,7 @@ static void audiomgr_register_domain_cb(struct userdata *u, const char *error_descr; dbus_uint16_t domain_id; dbus_uint16_t status; - int success; + bool success; if (dbus_message_get_type(reply) == DBUS_MESSAGE_TYPE_ERROR) { success = dbus_message_get_args(reply, NULL, @@ -607,7 +607,7 @@ bool pa_routerif_register_domain(struct userdata *u, const char *dbus_name; const char *dbus_path; const char *dbus_if; - int success; + bool success; uint16_t error = 0; pa_assert(u); @@ -676,7 +676,7 @@ bool pa_routerif_domain_complete(struct userdata *u, uint16_t domain) pa_routerif *routerif; DBusConnection *conn; DBusMessage *msg; - bool success; + bool success; pa_assert(u); pa_assert_se((routerif = u->routerif)); @@ -723,7 +723,7 @@ bool pa_routerif_unregister_domain(struct userdata *u, uint16_t domain) pa_routerif *routerif; DBusConnection *conn; DBusMessage *msg; - bool success; + bool success; pa_assert(u); pa_assert_se((routerif = u->routerif)); @@ -775,7 +775,7 @@ static void audiomgr_register_node_cb(struct userdata *u, const char *error_descr; dbus_uint16_t object_id; dbus_uint16_t status; - int success; + bool success; const char *objtype; pa_assert(u); @@ -927,7 +927,7 @@ bool pa_routerif_register_node(struct userdata *u, DBusMessageIter mit; DBusMessageIter cit; DBusMessageIter dit; - bool success = false; + bool success = false; pa_assert(u); pa_assert(rd); @@ -1029,7 +1029,7 @@ static void audiomgr_unregister_node_cb(struct userdata *u, { const char *error_descr; dbus_uint16_t status; - int success; + bool success; const char *objtype; pa_assert(u); @@ -1079,7 +1079,7 @@ bool pa_routerif_unregister_node(struct userdata *u, pa_routerif *routerif; DBusConnection *conn; DBusMessage *msg; - bool success = false; + bool success = false; pa_assert(u); pa_assert(ud); @@ -1248,7 +1248,7 @@ bool pa_routerif_register_implicit_connections(struct userdata *u, static bool routerif_connect(struct userdata *u, DBusMessage *msg) { struct am_connect_data ac; - int success; + bool success; pa_assert(u); pa_assert(msg); @@ -1279,7 +1279,7 @@ static bool routerif_connect(struct userdata *u, DBusMessage *msg) static bool routerif_disconnect(struct userdata *u, DBusMessage *msg) { struct am_connect_data ac; - int success; + bool success; pa_assert(u); pa_assert(msg); @@ -1310,7 +1310,7 @@ bool pa_routerif_acknowledge(struct userdata *u, am_method m, pa_routerif *routerif; DBusConnection *conn; DBusMessage *msg; - bool success; + bool success; pa_assert(u); pa_assert(method); diff --git a/murphy/discover.c b/murphy/discover.c index 86860c8..fd779a9 100644 --- a/murphy/discover.c +++ b/murphy/discover.c @@ -92,7 +92,7 @@ static void handle_bluetooth_card(struct userdata *, pa_card *); static bool get_bluetooth_port_availability(mir_node *, pa_device_port *); static void handle_udev_loaded_card(struct userdata *, pa_card *, - mir_node *, char *); + mir_node *, const char *); static void handle_card_ports(struct userdata *, mir_node *, pa_card *, pa_card_profile *); @@ -108,7 +108,7 @@ static bool update_node_availability_by_device(struct userdata *, static void parse_profile_name(pa_card_profile *, char **, char **, char *, int); -static char *node_key(struct userdata *, mir_direction, +static const char *node_key(struct userdata *, mir_direction, void *, pa_device_port *, char *, size_t); static pa_sink *make_output_prerouting(struct userdata *, mir_node *, @@ -118,7 +118,7 @@ static pa_source *make_input_prerouting(struct userdata *, mir_node *, const char *, mir_node **); static mir_node_type get_stream_routing_class(pa_proplist *); -static char *get_stream_amname(mir_node_type, char *, pa_proplist *); +static const char *get_stream_amname(mir_node_type, const char *, pa_proplist *); static void set_bluetooth_profile(struct userdata *, pa_card *, pa_direction_t); @@ -130,12 +130,6 @@ static void schedule_source_cleanup(struct userdata *, mir_node *); static void schedule_stream_uncorking(struct userdata *, pa_sink *); #endif -static void pa_hashmap_node_free(void *node, void *u) -{ - mir_node_destroy(u, node); -} - - struct pa_discover *pa_discover_init(struct userdata *u) { pa_discover *discover = pa_xnew0(pa_discover, 1); @@ -233,7 +227,6 @@ void pa_discover_remove_card(struct userdata *u, pa_card *card) if (!(bus = pa_utils_get_card_bus(card))) bus = ""; - PA_HASHMAP_FOREACH(node, discover->nodes.byname, state) { if (node->implement == mir_device && node->pacard.index == card->index) @@ -272,7 +265,6 @@ void pa_discover_profile_changed(struct userdata *u, pa_card *card) pa_assert_se((core = u->core)); pa_assert_se((discover = u->discover)); - if ((bus = pa_utils_get_card_bus(card)) == NULL) { pa_log_debug("ignoring profile change on card '%s' due to lack of '%s'" "property", pa_utils_get_card_name(card), @@ -448,14 +440,13 @@ void pa_discover_add_sink(struct userdata *u, pa_sink *sink, bool route) pa_module *module; mir_node *node; pa_card *card; - char *key; + const char *key; char kbf[256]; char nbf[2048]; const char *loopback_role; pa_nodeset_map *map; pa_nodeset_resdef *resdef; - bool make_rset; - pa_nodeset_resdef rdbuf; + bool make_rset; pa_source *ns; mir_node data; mir_node_type type; @@ -534,7 +525,7 @@ void pa_discover_add_sink(struct userdata *u, pa_sink *sink, bool route) if (sink == pa_utils_get_null_sink(u)) { data.visible = false; data.type = mir_null; - data.amname = pa_xstrdup("Silent"); + data.amname = "Silent"; data.amid = AM_ID_INVALID; data.paname = pa_xstrdup(sink->name); } @@ -542,14 +533,14 @@ void pa_discover_add_sink(struct userdata *u, pa_sink *sink, bool route) if (data.type == mir_gateway_sink) { data.privacy = mir_private; data.visible = false; - data.amname = pa_xstrdup(sink->name); + data.amname = sink->name; data.amid = AM_ID_INVALID; data.paname = pa_xstrdup(sink->name); } else { data.privacy = mir_public; data.visible = true; - data.amname = pa_xstrdup(mir_node_type_str(data.type)); + data.amname = mir_node_type_str(data.type); data.amid = AM_ID_INVALID; data.paname = pa_xstrdup(sink->name); } @@ -575,7 +566,7 @@ void pa_discover_remove_sink(struct userdata *u, pa_sink *sink) { pa_discover *discover; mir_node *node; - char *name; + const char *name; mir_node_type type; pa_assert(u); @@ -618,7 +609,7 @@ void pa_discover_add_source(struct userdata *u, pa_source *source) pa_discover *discover; mir_node *node; pa_card *card; - char *key; + const char *key; char kbf[256]; char nbf[2048]; const char *loopback_role; @@ -691,7 +682,7 @@ void pa_discover_add_source(struct userdata *u, pa_source *source) if (source == pa_utils_get_null_source(u)) { data.visible = false; data.type = mir_null; - data.amname = pa_xstrdup("Silent"); + data.amname = "Silent"; data.amid = AM_ID_INVALID; data.paname = pa_xstrdup(source->name); data.paidx = source->index; @@ -700,16 +691,16 @@ void pa_discover_add_source(struct userdata *u, pa_source *source) if (data.type == mir_gateway_source) { data.privacy = mir_private; data.visible = false; - data.amname = pa_xstrdup(source->name); + data.amname = source->name; data.amid = AM_ID_INVALID; - data.paname = pa_xstrdup(source->name); + data.paname = source->name; } else { data.privacy = mir_public; data.visible = true; - data.amname = pa_xstrdup(mir_node_type_str(data.type)); + data.amname = mir_node_type_str(data.type); data.amid = AM_ID_INVALID; - data.paname = pa_xstrdup(source->name); + data.paname = source->name; } } else { @@ -727,7 +718,7 @@ void pa_discover_remove_source(struct userdata *u, pa_source *source) { pa_discover *discover; mir_node *node; - char *name; + const char *name; mir_node_type type; pa_assert(u); @@ -768,7 +759,7 @@ void pa_discover_register_sink_input(struct userdata *u, pa_sink_input *sinp) pa_core *core; pa_discover *discover; pa_proplist *pl; - char *name; + const char *name; const char *media; mir_node_type type; mir_node data; @@ -821,9 +812,9 @@ void pa_discover_register_sink_input(struct userdata *u, pa_sink_input *sinp) data.visible = true; data.available = true; data.amname = get_stream_amname(type, name, pl); - data.amdescr = (char *)pa_proplist_gets(pl, PA_PROP_MEDIA_NAME); + data.amdescr = pa_proplist_gets(pl, PA_PROP_MEDIA_NAME); data.amid = AM_ID_INVALID; - data.paname = name; + data.paname = (char *)name; data.paidx = sinp->index; data.rsetid = pa_utils_get_rsetid(pl, idbuf, sizeof(idbuf)); @@ -909,7 +900,7 @@ bool pa_discover_preroute_sink_input(struct userdata *u, if (node->direction == mir_output) { pa_log_debug("refuse to preroute loopback sink-input " "(current route: sink %u @ %p)", data->sink ? - data->sink->index : PA_IDXSET_INVALID,data->sink); + data->sink->index : PA_IDXSET_INVALID,(void *)data->sink); return true; } @@ -997,7 +988,7 @@ void pa_discover_add_sink_input(struct userdata *u, pa_sink_input *sinp) mir_node data; mir_node *node; mir_node *snod; - char *name; + const char *name; const char *media; mir_node_type type; char key[256]; @@ -1083,9 +1074,9 @@ void pa_discover_add_sink_input(struct userdata *u, pa_sink_input *sinp) data.visible = true; data.available = true; data.amname = get_stream_amname(type, name, pl); - data.amdescr = (char *)pa_proplist_gets(pl, PA_PROP_MEDIA_NAME); + data.amdescr = pa_proplist_gets(pl, PA_PROP_MEDIA_NAME); data.amid = AM_ID_INVALID; - data.paname = name; + data.paname = (char *)name; data.paidx = sinp->index; data.mux = pa_multiplex_find_by_sink(u->multiplex, sinp->sink->index); @@ -1115,7 +1106,7 @@ void pa_discover_add_sink_input(struct userdata *u, pa_sink_input *sinp) s = csinp ? csinp->sink : NULL; if ((sinp->flags & PA_SINK_INPUT_START_RAMP_MUTED)) { - pa_log_debug("ramp '%s' to 100%", media); + pa_log_debug("ramp '%s' to 100%%", media); pa_fader_ramp_volume(u, sinp, PA_VOLUME_NORM); } } @@ -1147,7 +1138,7 @@ void pa_discover_remove_sink_input(struct userdata *u, pa_sink_input *sinp) pa_discover *discover; mir_node *node; mir_node *sinknod; - char *name; + const char *name; bool had_properties = false; pa_assert(u); @@ -1193,7 +1184,7 @@ void pa_discover_register_source_output(struct userdata *u, pa_core *core; pa_discover *discover; pa_proplist *pl; - char *name; + const char *name; const char *media; mir_node_type type; mir_node data; @@ -1242,7 +1233,7 @@ void pa_discover_register_source_output(struct userdata *u, data.visible = true; data.available = true; data.amname = name; - data.amdescr = (char *)pa_proplist_gets(pl, PA_PROP_MEDIA_NAME); + data.amdescr = pa_proplist_gets(pl, PA_PROP_MEDIA_NAME); data.amid = AM_ID_INVALID; data.paname = name; data.paidx = sout->index; @@ -1308,7 +1299,7 @@ bool pa_discover_preroute_source_output(struct userdata *u, if (node->direction == mir_input) { pa_log_debug("refuse to preroute loopback source-output " "(current route: source %u @ %p)", data->source ? - data->source->index : PA_IDXSET_INVALID,data->source); + data->source->index : PA_IDXSET_INVALID,(void *)data->source); return true; } @@ -1363,7 +1354,7 @@ void pa_discover_add_source_output(struct userdata *u, pa_source_output *sout) mir_node data; mir_node *node; mir_node *snod; - char *name; + const char *name; const char *media; mir_node_type type; char key[256]; @@ -1432,7 +1423,7 @@ void pa_discover_add_source_output(struct userdata *u, pa_source_output *sout) data.visible = true; data.available = true; data.amname = name; - data.amdescr = (char *)pa_proplist_gets(pl, PA_PROP_MEDIA_NAME); + data.amdescr = pa_proplist_gets(pl, PA_PROP_MEDIA_NAME); data.amid = AM_ID_INVALID; data.paname = name; data.paidx = sout->index; @@ -1475,7 +1466,7 @@ void pa_discover_remove_source_output(struct userdata *u, pa_discover *discover; mir_node *node; mir_node *srcnod; - char *name; + const char *name; pa_assert(u); pa_assert(sout); @@ -1570,8 +1561,8 @@ static void handle_alsa_card(struct userdata *u, pa_card *card) { mir_node data; const char *udd; - char *cnam; - char *cid; + const char *cnam; + const char *cid; memset(&data, 0, sizeof(data)); data.zone = pa_utils_get_zone(card->proplist); @@ -1696,16 +1687,16 @@ static void handle_bluetooth_card(struct userdata *u, pa_card *card) mir_node data; mir_node *node; mir_constr_def *cd; - char *cnam; - char *cid; + const char *cnam; + const char *cid; const char *cdescr; void *state0, *state1; char paname[MAX_NAME_LENGTH+1]; char amname[MAX_NAME_LENGTH+1]; char key[MAX_NAME_LENGTH+1]; - int len; - bool input; - bool output; + unsigned int len; + bool input; + bool output; pa_assert_se((discover = u->discover)); @@ -1815,7 +1806,7 @@ static bool get_bluetooth_port_availability(mir_node *node, } static void handle_udev_loaded_card(struct userdata *u, pa_card *card, - mir_node *data, char *cardid) + mir_node *data, const char *cardid) { pa_discover *discover; pa_card_profile *prof; @@ -1892,12 +1883,12 @@ static void handle_card_ports(struct userdata *u, mir_node *data, pa_card *card, pa_card_profile *prof) { mir_node *node = NULL; - bool have_ports = false; + bool have_ports = false; mir_constr_def *cd = NULL; - char *amname = data->amname; + const char *amname = data->amname; pa_device_port *port; void *state; - bool created; + bool created; char key[MAX_NAME_LENGTH+1]; pa_assert(u); @@ -1918,7 +1909,7 @@ static void handle_card_ports(struct userdata *u, mir_node *data, { have_ports = true; - amname[0] = '\0'; + amname = ""; snprintf(key, sizeof(key), "%s@%s", data->paname, port->name); data->key = key; @@ -1943,7 +1934,7 @@ static void handle_card_ports(struct userdata *u, mir_node *data, } if (!have_ports) { - data->key = data->paname; + data->key = pa_xstrdup(data->paname); data->available = true; pa_classify_node_by_card(data, card, prof, NULL); @@ -1954,8 +1945,8 @@ static void handle_card_ports(struct userdata *u, mir_node *data, node->stamp = data->stamp; } + amname = ""; data->amname = amname; - *amname = '\0'; } @@ -2070,9 +2061,9 @@ static bool update_node_availability_by_device(struct userdata *u, pa_device_port *port, bool available) { - mir_node *node; - char *key; - char buf[256]; + mir_node *node; + const char *key; + char buf[256]; pa_assert(u); pa_assert(data); @@ -2123,7 +2114,7 @@ static void parse_profile_name(pa_card_profile *prof, pa_assert(prof->name); - strncpy(buf, prof->name, buflen); + strncpy(buf, prof->name, (size_t)buflen); buf[buflen-1] = '\0'; memset(sinks, 0, sizeof(char *) * (MAX_CARD_TARGET+1)); @@ -2155,20 +2146,20 @@ static void parse_profile_name(pa_card_profile *prof, } -static char *node_key(struct userdata *u, mir_direction direction, +static const char *node_key(struct userdata *u, mir_direction direction, void *data, pa_device_port *port, char *buf, size_t len) { pa_card *card; pa_card_profile *profile; const char *bus; - bool pci; - bool usb; - bool bluetooth; - bool platform; + bool pci; + bool usb; + bool bluetooth; + bool platform; char *type; - char *name; + const char *name; const char *profile_name; - char *key; + const char *key; pa_assert(u); pa_assert(data); @@ -2177,7 +2168,7 @@ static char *node_key(struct userdata *u, mir_direction direction, if (direction == mir_output) { pa_sink *sink = data; - type = "sink"; + type = pa_xstrdup("sink"); name = pa_utils_get_sink_name(sink); card = sink->card; if (!port) @@ -2185,7 +2176,7 @@ static char *node_key(struct userdata *u, mir_direction direction, } else { pa_source *source = data; - type = "source"; + type = pa_xstrdup("source"); name = pa_utils_get_source_name(source); card = source->card; if (!port) @@ -2335,14 +2326,14 @@ static mir_node_type get_stream_routing_class(pa_proplist *pl) return mir_node_type_unknown; } -static char *get_stream_amname(mir_node_type type, char *name, pa_proplist *pl) +static const char *get_stream_amname(mir_node_type type, const char *name, pa_proplist *pl) { const char *appid; switch (type) { case mir_radio: - return "radio"; + return pa_xstrdup("radio"); case mir_player: case mir_game: diff --git a/murphy/extapi.c b/murphy/extapi.c index d704ac4..4dd2d5d 100644 --- a/murphy/extapi.c +++ b/murphy/extapi.c @@ -29,7 +29,7 @@ #include #include -#include "userdata.h" +#include "extapi.h" #include "node.h" #include "router.h" @@ -87,7 +87,7 @@ static const char *mir_node_type_names[512] = { [mir_rear_speakers] = "rear_speakers", [mir_microphone] = "microphone", [mir_jack] = "jack", - [mir_spdif] "spdif", + [mir_spdif] = "spdif", [mir_hdmi] = "hdmi", [mir_wired_headset] = "wired_headset", [mir_wired_headphone] = "wired_headphone", @@ -231,7 +231,7 @@ int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connection *c, u goto fail; } - if(!(conn = mir_router_add_explicit_route(u, id, from, to))) { + if(!(conn = mir_router_add_explicit_route(u, (uint16_t)id, from, to))) { pa_log_debug("explicit connection failed in module-murphy-ivi"); goto fail; } @@ -331,7 +331,7 @@ void extapi_signal_node_change(struct userdata *u) { static void *conn_hash(uint32_t connid) { - return NULL + connid; + return (char *)NULL + connid; } /* diff --git a/murphy/fader.c b/murphy/fader.c index 5c5aea7..aff0c3d 100644 --- a/murphy/fader.c +++ b/murphy/fader.c @@ -36,8 +36,8 @@ #include "utils.h" typedef struct { - uint32_t fade_out; - uint32_t fade_in; + long fade_out; + long fade_in; } transition_time; @@ -46,16 +46,16 @@ struct pa_fader { }; static void set_stream_volume_limit(struct userdata *, pa_sink_input *, - pa_volume_t, uint32_t); + pa_volume_t, long); pa_fader *pa_fader_init(const char *fade_out_str, const char *fade_in_str) { pa_fader *fader = pa_xnew0(pa_fader, 1); - if (!fade_out_str || pa_atou(fade_out_str, &fader->transit.fade_out) < 0) + if (!fade_out_str || pa_atol(fade_out_str, &fader->transit.fade_out) < 0) fader->transit.fade_out = 100; - if (!fade_in_str || pa_atou(fade_in_str, &fader->transit.fade_in) < 0) + if (!fade_in_str || pa_atol(fade_in_str, &fader->transit.fade_in) < 0) fader->transit.fade_in = 1000; if (fader->transit.fade_out > 10000) @@ -64,7 +64,7 @@ pa_fader *pa_fader_init(const char *fade_out_str, const char *fade_in_str) if (fader->transit.fade_in > 10000) fader->transit.fade_in = 10000; - pa_log_info("fader transition times: out %u ms, in %u ms", + pa_log_info("fader transition times: out %ld ms, in %ld ms", fader->transit.fade_out, fader->transit.fade_in); return fader; @@ -90,7 +90,7 @@ void pa_fader_apply_volume_limits(struct userdata *u, uint32_t stamp) double dB; pa_volume_t newvol; pa_volume_t oldvol; - uint32_t time; + long time; uint32_t i,j; int class; bool rampit; @@ -117,11 +117,11 @@ void pa_fader_apply_volume_limits(struct userdata *u, uint32_t stamp) if (!(sinp->flags & PA_SINK_INPUT_START_RAMP_MUTED)) pa_log_debug(" skipping"); else { - sinp->flags &= ~PA_SINK_INPUT_START_RAMP_MUTED; + sinp->flags &= ~((unsigned int)PA_SINK_INPUT_START_RAMP_MUTED); time = transit->fade_in; pa_log_debug(" attenuation 0 dB " - "transition time %u ms", time); + "transition time %ld ms", time); set_stream_volume_limit(u, sinp, PA_VOLUME_NORM, time); } } @@ -149,7 +149,7 @@ void pa_fader_apply_volume_limits(struct userdata *u, uint32_t stamp) pa_log_debug(" attenuation %.2lf dB",dB); else { pa_log_debug(" attenuation %.2lf dB " - "transition time %u ms", dB, time); + "transition time %ld ms", dB, time); set_stream_volume_limit(u, sinp, newvol, time); } } @@ -162,12 +162,12 @@ void pa_fader_ramp_volume(struct userdata *u, pa_sink_input *sinp, pa_volume_t newvol) { - transition_time *transit; - bool rampit; - pa_volume_t oldvol; + transition_time *transit; + bool rampit; + pa_volume_t oldvol; pa_cvolume_ramp_int *ramp; - uint32_t time; - pa_cvolume_ramp rampvol; + long time; + pa_cvolume_ramp rampvol; pa_assert(u); pa_assert(u->fader); @@ -232,7 +232,7 @@ pa_volume_t pa_fader_get_volume(struct userdata *u, pa_sink_input *sinp) static void set_stream_volume_limit(struct userdata *u, pa_sink_input *sinp, pa_volume_t vol, - uint32_t ramp_time) + long ramp_time) { pa_sink *sink; pa_cvolume_ramp rampvol; diff --git a/murphy/list.h b/murphy/list.h index c1cf329..fb3bbd6 100644 --- a/murphy/list.h +++ b/murphy/list.h @@ -23,10 +23,10 @@ #define MIR_DIM(a) (sizeof(a)/sizeof((a)[0])) #define MIR_OFFSET(structure, member) \ - ((int)((void *)((&((structure *)0)->member)) - (void *)0)) + ((int)((char *)((&((structure *)0)->member)) - (char *)0)) #define MIR_LIST_RELOCATE(structure, member, ptr) \ - ((structure *)((void *)ptr - MIR_OFFSET(structure, member))) + ((structure *)(void *)((char *)ptr - MIR_OFFSET(structure, member))) #define MIR_DLIST_HEAD(name) mir_dlist name = { &(name), &(name) } diff --git a/murphy/loopback.c b/murphy/loopback.c index b6803bd..72bf135 100644 --- a/murphy/loopback.c +++ b/murphy/loopback.c @@ -74,7 +74,7 @@ pa_loopnode *pa_loopback_create(pa_loopback *loopback, uint32_t resource_set_flags, uint32_t resource_audio_flags) { - static char *modnam = "module-loopback"; + static const char *modnam = "module-loopback"; pa_loopnode *loop; pa_source *source; @@ -220,9 +220,9 @@ int pa_loopback_print(pa_loopnode *loop, char *buf, int len) e = (p = buf) + len; if (!loop) - p += snprintf(p, e-p, ""); + p += snprintf(p, (size_t)(e-p), ""); else { - p += snprintf(p, e-p, "module %u, sink_input %u", + p += snprintf(p, (size_t)(e-p), "module %u, sink_input %u", loop->module_index, loop->sink_input_index); } diff --git a/murphy/module-murphy-ivi.c b/murphy/module-murphy-ivi.c index 895451e..b0be782 100644 --- a/murphy/module-murphy-ivi.c +++ b/murphy/module-murphy-ivi.c @@ -154,9 +154,6 @@ int pa__init(pa_module *m) { #endif #ifdef WITH_DBUS const char *dbustype; - const char *ifnam; - const char *mrppath; - const char *mrpnam; const char *ampath; const char *amnam; #else @@ -193,9 +190,6 @@ int pa__init(pa_module *m) { #endif #ifdef WITH_DBUS dbustype = pa_modargs_get_value(ma, "dbus_bus_type", NULL); - ifnam = pa_modargs_get_value(ma, "dbus_if_name", NULL); - mrppath = pa_modargs_get_value(ma, "dbus_murphy_path", NULL); - mrpnam = pa_modargs_get_value(ma, "dbus_murphy_name", NULL); ampath = pa_modargs_get_value(ma, "dbus_audiomgr_path", NULL); amnam = pa_modargs_get_value(ma, "dbus_audiomgr_name", NULL); #else diff --git a/murphy/multiplex.c b/murphy/multiplex.c index be0a5ae..55e7e46 100644 --- a/murphy/multiplex.c +++ b/murphy/multiplex.c @@ -70,7 +70,7 @@ pa_muxnode *pa_multiplex_create(pa_multiplex *multiplex, const char *media_role, int type) { - static char *modnam = "module-combine-sink"; + static const char *modnam = "module-combine-sink"; struct userdata *u; /* combine's userdata! */ struct output *o; @@ -189,7 +189,7 @@ bool pa_multiplex_sink_input_remove(pa_multiplex *multiplex, pa_sink_input *sinp) { pa_muxnode *mux; - char *name; + const char *name; pa_assert(multiplex); pa_assert(sinp); @@ -470,9 +470,9 @@ int pa_multiplex_print(pa_muxnode *mux, char *buf, int len) e = (p = buf) + len; if (!mux) - p += snprintf(p, e-p, ""); + p += snprintf(p, (size_t)(e-p), ""); else { - p += snprintf(p, e-p, "module %u, sink %u, default stream %u", + p += snprintf(p, (size_t)(e-p), "module %u, sink %u, default stream %u", mux->module_index, mux->sink_index,mux->defstream_index); } diff --git a/murphy/murphy-config.c b/murphy/murphy-config.c index ed7614f..5b1bebf 100644 --- a/murphy/murphy-config.c +++ b/murphy/murphy-config.c @@ -50,7 +50,7 @@ typedef struct { } classmap_def; typedef struct { - char *id; + const char *id; mir_node_type type; } typemap_def; @@ -62,12 +62,12 @@ typedef struct { static zone_def zones[] = { - "driver", - "passanger1", - "passanger2", - "passanger3", - "passanger4", - NULL + {"driver"}, + {"passanger1"}, + {"passanger2"}, + {"passanger3"}, + {"passanger4"}, + {NULL} }; static rtgroup_def rtgroups[] = { @@ -144,7 +144,7 @@ static double speedvol; static double supprvol = -20.0; static int exception_classes[] = {mir_phone, mir_navigator}; static mir_volume_suppress_arg suppress = { - &supprvol, {DIM(exception_classes), exception_classes} + &supprvol, {DIM(exception_classes), exception_classes, 0} }; @@ -200,7 +200,7 @@ bool pa_mir_config_parse_file(struct userdata *u, const char *path) } pa_nodeset_print_maps(u, buf, sizeof(buf)); - pa_log_debug(buf); + pa_log_debug("maps %s", buf); return success; } @@ -216,7 +216,7 @@ static bool use_default_configuration(struct userdata *u) pa_assert(u); for (z = zones; z->name; z++) - pa_zoneset_add_zone(u, z->name, z - zones); + pa_zoneset_add_zone(u, z->name, (uint32_t)(z - zones)); for (r = rtgroups; r->name; r++) mir_router_create_rtgroup(u, r->type, r->name, r->accept, r->compare); diff --git a/murphy/murphyif.c b/murphy/murphyif.c index 2f4596a..95c4030 100644 --- a/murphy/murphyif.c +++ b/murphy/murphyif.c @@ -230,10 +230,14 @@ static bool resource_fetch_seqno(mrp_msg_t *, void **, uint32_t *); static bool resource_fetch_request(mrp_msg_t *, void **, uint16_t *); static bool resource_fetch_status(mrp_msg_t *, void **, int *); static bool resource_fetch_rset_id(mrp_msg_t *, void **, uint32_t*); + +/* static bool resource_fetch_rset_state(mrp_msg_t *, void **, mrp_resproto_state_t *); + static bool resource_fetch_rset_mask(mrp_msg_t *, void **, mrp_resproto_state_t *); +*/ static bool resource_transport_create(struct userdata *, pa_murphyif *); static void resource_transport_destroy(pa_murphyif *); @@ -434,7 +438,7 @@ void pa_murphyif_add_table(struct userdata *u, domctl_interface *dif; mrp_domctl_table_t *t; size_t size; - size_t idx; + int idx; pa_assert(u); pa_assert(table); @@ -444,7 +448,7 @@ void pa_murphyif_add_table(struct userdata *u, dif = &murphyif->domctl; idx = dif->ntable++; - size = sizeof(mrp_domctl_table_t) * dif->ntable; + size = sizeof(mrp_domctl_table_t) * (size_t)(dif->ntable); t = (dif->tables = pa_xrealloc(dif->tables, size)) + idx; t->table = pa_xstrdup(table); @@ -462,7 +466,7 @@ int pa_murphyif_add_watch(struct userdata *u, domctl_interface *dif; mrp_domctl_watch_t *w; size_t size; - size_t idx; + int idx; pa_assert(u); pa_assert(table); @@ -473,7 +477,7 @@ int pa_murphyif_add_watch(struct userdata *u, dif = &murphyif->domctl; idx = dif->nwatch++; - size = sizeof(mrp_domctl_watch_t) * dif->nwatch; + size = sizeof(mrp_domctl_watch_t) * (size_t)(dif->nwatch); w = (dif->watches = pa_xrealloc(dif->watches, size)) + idx; w->table = pa_xstrdup(table); @@ -696,7 +700,6 @@ int pa_murphyif_add_node(struct userdata *u, mir_node *node) { #ifdef WITH_RESOURCES pa_murphyif *murphyif; - resource_interface *rif; const char *pid; rset_data *rset; rset_hash *rh; @@ -708,8 +711,6 @@ int pa_murphyif_add_node(struct userdata *u, mir_node *node) pa_assert_se((murphyif = u->murphyif)); - rif = &murphyif->resource; - if (!node->rsetid) { pa_log("can't register resource set for node %u '%s'.: missing rsetid", node->paidx, node->amname); @@ -770,17 +771,13 @@ void pa_murphyif_delete_node(struct userdata *u, mir_node *node) { #ifdef WITH_RESOURCES pa_murphyif *murphyif; - resource_interface *rif; const char *pid; - mir_node *deleted; pa_assert(u); pa_assert(node); pa_assert_se((murphyif = u->murphyif)); - rif = &murphyif->resource; - if (node->rsetid) { if (pa_streq(node->rsetid, PA_RESOURCE_SET_ID_PID)) { if ((pid = get_node_pid(u, node))) { @@ -868,7 +865,8 @@ static void domctl_dump_data(mrp_domctl_data_t *table) int i, j; char buf[1024], *p; const char *t; - int n, l; + int n; + int l; pa_log_debug("Table #%d: %d rows x %d columns", table->id, table->nrow, table->ncolumn); @@ -881,27 +879,27 @@ static void domctl_dump_data(mrp_domctl_data_t *table) for (j = 0, t = ""; j < table->ncolumn; j++, t = ", ") { switch (row[j].type) { case MRP_DOMCTL_STRING: - l = snprintf(p, n, "%s'%s'", t, row[j].str); + l = snprintf(p, (size_t)n, "%s'%s'", t, row[j].str); p += l; n -= l; break; case MRP_DOMCTL_INTEGER: - l = snprintf(p, n, "%s%d", t, row[j].s32); + l = snprintf(p, (size_t)n, "%s%d", t, row[j].s32); p += l; n -= l; break; case MRP_DOMCTL_UNSIGNED: - l = snprintf(p, n, "%s%u", t, row[j].u32); + l = snprintf(p, (size_t)n, "%s%u", t, row[j].u32); p += l; n -= l; break; case MRP_DOMCTL_DOUBLE: - l = snprintf(p, n, "%s%f", t, row[j].dbl); + l = snprintf(p, (size_t)n, "%s%f", t, row[j].dbl); p += l; n -= l; break; default: - l = snprintf(p, n, "%s", + l = snprintf(p, (size_t)n, "%s", t, row[j].type); p += l; n -= l; @@ -1029,7 +1027,6 @@ static bool resource_set_create_node(struct userdata *u, pa_core *core; pa_murphyif *murphyif; resource_interface *rif; - resource_request *req; mrp_msg_t *msg; uint16_t reqid; uint32_t seqno; @@ -1323,17 +1320,17 @@ static void resource_set_notification(struct userdata *u, rset.name = name; rset.pid = pid; - if (rset.autorel != 0 && rset.autorel != 1) { + if (cautorel->s32 < 0 || cautorel->s32 > 1) { pa_log_debug("invalid autorel %d in table '%s'", - rset.autorel, table); + cautorel->s32, table); continue; } if (rset.state != RSET_RELEASE && rset.state != RSET_ACQUIRE) { pa_log_debug("invalid state %d in table '%s'", rset.state, table); continue; } - if (rset.grant != 0 && rset.grant != 1) { - pa_log_debug("invalid grant %d in table '%s'", rset.grant, table); + if (cgrant->s32 < 0 || cgrant->s32 > 1) { + pa_log_debug("invalid grant %d in table '%s'", cgrant->s32, table); continue; } if (!rset.policy) { @@ -1702,7 +1699,7 @@ static bool resource_fetch_request(mrp_msg_t *msg, if (!mrp_msg_iterate(msg, pcursor, &tag, &type, &value, &size) || tag != RESPROTO_REQUEST_TYPE || type != MRP_MSG_FIELD_UINT16) { - *preqtype = INVALID_REQUEST; + *preqtype = (uint16_t)INVALID_REQUEST; return false; } @@ -1750,6 +1747,7 @@ static bool resource_fetch_rset_id(mrp_msg_t *msg, return true; } +#if 0 static bool resource_fetch_rset_state(mrp_msg_t *msg, void **pcursor, mrp_resproto_state_t *pstate) @@ -1770,7 +1768,6 @@ static bool resource_fetch_rset_state(mrp_msg_t *msg, return true; } - static bool resource_fetch_rset_mask(mrp_msg_t *msg, void **pcursor, mrp_resproto_state_t *pmask) @@ -1790,6 +1787,7 @@ static bool resource_fetch_rset_mask(mrp_msg_t *msg, *pmask = value.u32; return true; } +#endif static bool resource_transport_create(struct userdata *u, pa_murphyif *murphyif) @@ -1910,9 +1908,9 @@ static void cancel_schedule(struct userdata *u, resource_interface *rif) static rset_hash *node_put_rset(struct userdata *u, mir_node *node, rset_data *rset) { pa_murphyif *murphyif; - resource_interface *rif; pa_proplist *pl; rset_hash *rh; + resource_interface *rif; int type; pa_assert(u); @@ -1924,6 +1922,7 @@ static rset_hash *node_put_rset(struct userdata *u, mir_node *node, rset_data *r pa_assert(node->direction == mir_input || node->direction == mir_output); pa_assert_se((murphyif = u->murphyif)); + rif = &murphyif->resource; type = (node->direction == mir_input) ? RSET_INPUT : RSET_OUTPUT; @@ -2004,8 +2003,6 @@ static rset_data *rset_data_dup(rset_data *orig) static void rset_data_copy(rset_data *dst, rset_data *src) { - rset_data *dup; - pa_assert(dst); pa_assert(src); pa_assert(src->id); @@ -2024,8 +2021,6 @@ static void rset_data_copy(rset_data *dst, rset_data *src) static void rset_data_update(rset_data *dst, rset_data *src) { - rset_data *dup; - pa_assert(dst); pa_assert(dst->id); pa_assert(src); diff --git a/murphy/node.c b/murphy/node.c index 4fe715b..27b4819 100644 --- a/murphy/node.c +++ b/murphy/node.c @@ -33,7 +33,7 @@ #include "scripting.h" #include "murphyif.h" -#define APCLASS_DIM (mir_application_class_end - mir_application_class_begin) +#define APCLASS_DIM (mir_application_class_end - mir_application_class_begin + 1) struct pa_nodeset { pa_idxset *nodes; @@ -42,8 +42,6 @@ struct pa_nodeset { const char *class_name[APCLASS_DIM]; }; - -static void free_map_cb(void *); static int print_map(pa_hashmap *, const char *, char *, int); pa_nodeset *pa_nodeset_init(struct userdata *u) @@ -326,10 +324,10 @@ mir_node *mir_node_create(struct userdata *u, mir_node *data) node->zone = pa_xstrdup(data->zone); node->visible = data->visible; node->available = data->available; - node->amname = pa_xstrdup(data->amname ? data->amname : data->paname); - node->amdescr = pa_xstrdup(data->amdescr ? data->amdescr : ""); + node->amname = data->amname ? data->amname : data->paname; + node->amdescr = data->amdescr ? data->amdescr : ""; node->amid = data->amid; - node->paname = pa_xstrdup(data->paname); + node->paname = data->paname; node->paidx = data->paidx; node->mux = data->mux; node->loop = data->loop; @@ -345,7 +343,7 @@ mir_node *mir_node_create(struct userdata *u, mir_node *data) if (data->pacard.profile) node->pacard.profile = pa_xstrdup(data->pacard.profile); if (data->paport) - node->paport = pa_xstrdup(data->paport); + node->paport = data->paport; } mir_router_register_node(u, node); @@ -375,12 +373,8 @@ void mir_node_destroy(struct userdata *u, mir_node *node) pa_xfree(node->key); pa_xfree(node->zone); - pa_xfree(node->amname); - pa_xfree(node->amdescr); - pa_xfree(node->paname); pa_xfree(node->pacard.profile); - pa_xfree(node->paport); - pa_xfree(node->rsetid); + pa_xfree(node->rset.id); pa_xfree(node); } @@ -417,7 +411,7 @@ int mir_node_print(mir_node *node, char *buf, int len) e = (p = buf) + len; -#define PRINT(f,v) if (p < e) p += snprintf(p, e-p, f "\n", v) +#define PRINT(f,v) if (p < e) p += snprintf(p, (size_t)(e-p), f "\n", v) PRINT(" index : %u" , node->index); PRINT(" key : '%s'", node->key ? node->key : ""); @@ -527,21 +521,10 @@ const char *mir_privacy_str(mir_privacy privacy) } } - -static void free_map_cb(void *void_map) -{ - pa_nodeset_map *map = (pa_nodeset_map *)void_map; - - pa_xfree((void *)map->name); - pa_xfree((void *)map->resdef); - - pa_xfree(map); -} - static int print_map(pa_hashmap *map, const char *name, char *buf, int len) { #define PRINT(fmt,args...) \ - do { if (p < e) p += snprintf(p, e-p, fmt "\n", args); } while (0) + do { if (p < e) p += snprintf(p, (size_t)(e-p), fmt "\n", args); } while (0) pa_nodeset_map *m; pa_nodeset_resdef *r; diff --git a/murphy/node.h b/murphy/node.h index 37271d0..a42b0e3 100644 --- a/murphy/node.h +++ b/murphy/node.h @@ -30,74 +30,6 @@ #define AM_ID_INVALID 65535 -enum mir_direction { - mir_direction_unknown, - mir_input, - mir_output -}; - -enum mir_implement { - mir_implementation_unknown = 0, - mir_device, - mir_stream -}; - -enum mir_location { - mir_location_unknown = 0, - mir_internal, - mir_external -}; - -enum mir_node_type { - mir_node_type_unknown = 0, - - /* application classes */ - mir_application_class_begin, - mir_radio = mir_application_class_begin, - mir_player, - mir_navigator, - mir_game, - mir_browser, - mir_camera, - mir_phone, /**< telephony voice */ - mir_alert, /**< ringtone, alarm */ - mir_event, /**< notifications */ - mir_system, /**< always audible system notifications, events */ - mir_application_class_end, - - /* device types */ - mir_device_class_begin = 128, - mir_null = mir_device_class_begin, - mir_speakers, - mir_front_speakers, - mir_rear_speakers, - mir_microphone, - mir_jack, - mir_hdmi, - mir_spdif, - mir_wired_headset, - mir_wired_headphone, - mir_usb_headset, - mir_usb_headphone, - mir_bluetooth_sco, - mir_bluetooth_a2dp, - mir_bluetooth_carkit, - mir_bluetooth_source, - mir_bluetooth_sink, - mir_gateway_sink, - mir_gateway_source, - mir_device_class_end, - - /* extensions */ - mir_user_defined_start = 256 -}; - -enum mir_privacy { - mir_privacy_unknown = 0, - mir_public, - mir_private -}; - struct pa_nodeset_resdef { uint32_t priority; struct { @@ -144,13 +76,13 @@ struct mir_node { bool available; /**< eg. is the headset connected? */ bool ignore; /**< do not consider it while routing */ bool localrset; /**< locally generated resource set */ - char *amname; /**< audiomanager name */ - char *amdescr; /**< UI description */ + const char *amname; /**< audiomanager name */ + const char *amdescr; /**< UI description */ uint16_t amid; /**< handle to audiomanager, if any */ - char *paname; /**< sink|source|sink_input|source_output name */ + const char *paname; /**< sink|source|sink_input|source_output name */ uint32_t paidx; /**< sink|source|sink_input|source_output index*/ pa_node_card pacard; /**< pulse card related data, if any */ - char *paport; /**< sink or source port if applies */ + const char *paport; /**< sink or source port if applies */ pa_muxnode *mux; /**< for multiplexable input streams only */ pa_loopnode *loop; /**< for looped back sources only */ mir_dlist rtentries; /**< in device nodes: listhead of nodchain */ diff --git a/murphy/router.c b/murphy/router.c index ace8695..c2ef3ef 100644 --- a/murphy/router.c +++ b/murphy/router.c @@ -62,13 +62,6 @@ static int volume_class(mir_node *); static int print_routing_table(pa_hashmap *, const char *, char *, int); - -static void pa_hashmap_rtgroup_free(void *rtg, void *u) -{ - rtgroup_destroy(u, rtg); -} - - pa_router *pa_router_init(struct userdata *u) { size_t num_classes = mir_application_class_end; @@ -601,12 +594,7 @@ bool mir_router_default_accept(struct userdata *u, mir_rtgroup *rtg, bool mir_router_phone_accept(struct userdata *u, mir_rtgroup *rtg, mir_node *node) { - pa_core *core; - pa_sink *sink; - pa_source *source; - pa_proplist *pl; mir_node_type class; - const char *role, *expected_role; pa_assert(u); pa_assert(rtg); @@ -708,7 +696,7 @@ static int rtgroup_print(mir_rtgroup *rtg, char *buf, int len) node = rte->node; if (p >= e) break; - p += snprintf(p, e-p, " '%s'", node->amname); + p += snprintf(p, (size_t)(e-p), " '%s'", node->amname); } return p - buf; @@ -968,7 +956,7 @@ static int node_priority(struct userdata *u, mir_node *node) class = pa_classify_guess_application_class(node); - if (class < 0 || class >= router->maplen) + if (class < 0 || class >= (int)router->maplen) return 0; return router->priormap[class]; @@ -1015,7 +1003,7 @@ static int print_routing_table(pa_hashmap *table, n = 0; if (len > 0) { - p += snprintf(p, e-p, "%s routing table:\n", type); + p += snprintf(p, (size_t)(e-p), "%s routing table:\n", type); state = NULL; @@ -1024,17 +1012,17 @@ static int print_routing_table(pa_hashmap *table, n++; if (p >= e) break; - p += snprintf(p, e-p, " %s:", rtg->name); + p += snprintf(p, (size_t)(e-p), " %s:", rtg->name); if (p >= e) break; p += rtgroup_print(rtg, p, e-p); if (p >= e) break; - p += snprintf(p, e-p, "\n"); + p += snprintf(p, (size_t)(e-p), "\n"); } if (!n && p < e) - p += snprintf(p, e-p, " \n"); + p += snprintf(p, (size_t)(e-p), " \n"); } } diff --git a/murphy/router.h b/murphy/router.h index dc7f568..74fe009 100644 --- a/murphy/router.h +++ b/murphy/router.h @@ -26,6 +26,7 @@ #include "userdata.h" #include "list.h" +#include "node.h" typedef bool (*mir_rtgroup_accept_t)(struct userdata *, mir_rtgroup *, mir_node *); @@ -44,7 +45,7 @@ typedef struct { struct pa_router { pa_rtgroup_hash rtgroups; - int maplen; /**< length of the class- and priormap */ + size_t maplen; /**< length of the class- and priormap */ pa_rtgroup_classmap classmap; /**< to map device node types to rtgroups */ int *priormap; /**< stream node priorities */ mir_dlist nodlist; /**< priorized list of the stream nodes diff --git a/murphy/routerif.h b/murphy/routerif.h index 514e6c1..171f85a 100644 --- a/murphy/routerif.h +++ b/murphy/routerif.h @@ -23,7 +23,7 @@ #include "userdata.h" -enum am_method { +typedef enum am_method { audiomgr_unknown_method = 0, audiomgr_register_domain, @@ -52,7 +52,7 @@ enum am_method { audiomgr_setsinkprop_ack, audiomgr_method_dim -}; +} am_method; #ifdef WITH_DBUS diff --git a/murphy/scripting.c b/murphy/scripting.c index 6cdedeb..a686346 100644 --- a/murphy/scripting.c +++ b/murphy/scripting.c @@ -176,7 +176,6 @@ struct scripting_vollim { char args[0]; }; - typedef struct { const char *name; int value; @@ -545,7 +544,7 @@ bool pa_scripting_dofile(struct userdata *u, const char *file) static int import_create(lua_State *L) { - struct userdata *u; + struct userdata *u = NULL; pa_scripting *scripting; size_t fldnamlen; const char *fldnam; @@ -555,7 +554,7 @@ static int import_create(lua_State *L) const char *condition = NULL; int maxrow = 0; mrp_funcbridge_t *update = NULL; - size_t maxcol; + int maxcol; pa_value **rows; pa_value **cols; int i,j; @@ -595,7 +594,7 @@ static int import_create(lua_State *L) if (!update) luaL_error(L, "missing update function"); - maxcol = columns->nstring; + maxcol = (int)columns->nstring; if (maxcol >= MQI_COLUMN_MAX) luaL_error(L, "too many columns (max %d allowed)", MQI_COLUMN_MAX); @@ -612,8 +611,8 @@ static int import_create(lua_State *L) imp->values = array_create(L, maxrow, NULL); imp->update = update; - for (i = 0, rows = imp->values->array; i < maxrow; i++) { - cols = (rows[i] = array_create(L, maxcol, columns))->array; + for (i = 0, rows = imp->values->value.array; i < maxrow; i++) { + cols = (rows[i] = array_create(L, (int)maxcol, columns))->value.array; lua_rawseti(L, -3, i+1); /* we add this to the import */ for (j = 0; j < maxcol; j++) cols[j] = pa_xnew0(pa_value, 1); @@ -727,15 +726,16 @@ static int import_link(lua_State *L) for (colidx = 0; colidx < columns->nstring; colidx++) { if (!strcmp(colnam, columns->strings[colidx])) { pa_assert_se((values = imp->values)); - pa_assert_se((row = values->array[rowidx])); + pa_assert_se((row = values->value.array[rowidx])); pa_assert(colidx < (size_t)-row->type); - pa_assert_se((col = row->array[colidx])); + pa_assert_se((col = row->value.array[colidx])); break; } } } - pa_log_debug("userdata: type:%d", col->type); + if(col) + pa_log_debug("userdata: type:%d", col->type); lua_pushlightuserdata(L, col); @@ -789,10 +789,10 @@ static void import_data_changed(struct userdata *u, pa_assert(imp->columns); pa_assert(imp->update); pa_assert_se((ptval = imp->values)); - pa_assert_se((prow = ptval->array)); + pa_assert_se((prow = ptval->value.array)); maxrow = -ptval->type; - maxcol = imp->columns->nstring; + maxcol = (int)imp->columns->nstring; pa_assert(maxrow >= 0); pa_assert(nrow <= maxrow); @@ -801,7 +801,7 @@ static void import_data_changed(struct userdata *u, for (i = 0; i < maxrow; i++) { pa_assert_se((prval = prow[i])); - pa_assert_se((pcol = prval->array)); + pa_assert_se((pcol = prval->value.array)); pa_assert(prval->type < 0); pa_assert(maxcol == -prval->type); @@ -814,28 +814,28 @@ static void import_data_changed(struct userdata *u, switch (mcol->type) { case MRP_DOMCTL_STRING: pa_assert(!pcval->type || pcval->type == pa_value_string); - pa_xfree((void *)pcval->string); + pa_xfree((void *)pcval->value.string); pcval->type = pa_value_string; - pcval->string = pa_xstrdup(mcol->str); + pcval->value.string = pa_xstrdup(mcol->str); break; case MRP_DOMCTL_INTEGER: pa_assert(!pcval->type || pcval->type == pa_value_integer); pcval->type = pa_value_integer; - pcval->integer = mcol->s32; + pcval->value.integer = mcol->s32; break; case MRP_DOMCTL_UNSIGNED: pa_assert(!pcval->type || pcval->type == pa_value_unsignd); pcval->type = pa_value_unsignd; - pcval->unsignd = mcol->u32; + pcval->value.unsignd = mcol->u32; break; case MRP_DOMCTL_DOUBLE: pa_assert(!pcval->type || pcval->type ==pa_value_floating); pcval->type = pa_value_floating; - pcval->floating = mcol->dbl; + pcval->value.floating = mcol->dbl; break; default: if (pcval->type == pa_value_string) - pa_xfree((void *)pcval->string); + pa_xfree((void *)pcval->value.string); memset(pcval, 0, sizeof(pa_value)); break; } @@ -911,10 +911,10 @@ static pa_value *array_create(lua_State *L, int dimension, pa_assert(dimension >= 0); pa_assert(dimension < MQI_QUERY_RESULT_MAX); - array = pa_xnew0(pa_value *, dimension + 1); + array = pa_xnew0(pa_value *, (size_t)(dimension + 1)); value = lua_newuserdata(L, sizeof(pa_value)); value->type = -dimension; - value->array = array; + value->value.array = array; array[dimension] = (pa_value *)names; @@ -932,7 +932,7 @@ static int array_getfield(lua_State *L) const char *key; mrp_lua_strarray_t *names; int idx; - size_t i; + int i; MRP_LUA_ENTER; @@ -951,8 +951,8 @@ static int array_getfield(lua_State *L) break; case LUA_TSTRING: idx = -1; - if ((names = (mrp_lua_strarray_t *)arr->array[dimension])) { - pa_assert(dimension == names->nstring); + if ((names = (mrp_lua_strarray_t *)arr->value.array[dimension])) { + pa_assert(dimension == (int)names->nstring); key = lua_tostring(L, 2); pa_assert(key); for (i = 0; i < dimension; i++) { @@ -969,16 +969,16 @@ static int array_getfield(lua_State *L) } - if (idx < 0 || idx >= dimension || !(value = arr->array[idx])) + if (idx < 0 || idx >= dimension || !(value = arr->value.array[idx])) lua_pushnil(L); else if (value->type < 0) lua_rawgeti(L, 1, 1 - value->type); else { switch (value->type) { - case pa_value_string: lua_pushstring(L, value->string); break; - case pa_value_integer: lua_pushinteger(L, value->integer); break; - case pa_value_unsignd: lua_pushinteger(L, value->unsignd); break; - case pa_value_floating: lua_pushnumber(L, value->floating); break; + case pa_value_string: lua_pushstring(L, value->value.string); break; + case pa_value_integer: lua_pushinteger(L, value->value.integer); break; + case pa_value_unsignd: lua_pushinteger(L, (int)(value->value.unsignd)); break; + case pa_value_floating: lua_pushnumber(L, value->value.floating); break; default: lua_pushnil(L); break; } } @@ -1015,7 +1015,7 @@ static void array_destroy(void *data) if (value) { pa_assert(value->type < 0); - pa_xfree(value->array); + pa_xfree(value->value.array); } MRP_LUA_LEAVE_NOARG; @@ -1096,17 +1096,17 @@ static int node_getfield(lua_State *L) pa_assert_se((node = sn->node)); switch (fld) { - case NAME: lua_pushstring(L, node->amname); break; - case DESCRIPTION: lua_pushstring(L, node->amdescr); break; - case DIRECTION: lua_pushinteger(L, node->direction); break; - case IMPLEMENT: lua_pushinteger(L, node->implement); break; - case CHANNELS: lua_pushinteger(L, node->channels); break; - case LOCATION: lua_pushinteger(L, node->location); break; - case PRIVACY: lua_pushinteger(L, node->privacy); break; - case ZONE: lua_pushstring(L, node->zone); break; - case TYPE: lua_pushinteger(L, node->type); break; - case AVAILABLE: lua_pushboolean(L, node->available); break; - default: lua_pushnil(L); break; + case NAME: lua_pushstring(L, node->amname); break; + case DESCRIPTION: lua_pushstring(L, node->amdescr); break; + case DIRECTION: lua_pushinteger(L, node->direction); break; + case IMPLEMENT: lua_pushinteger(L, node->implement); break; + case CHANNELS: lua_pushinteger(L, (int)(node->channels)); break; + case LOCATION: lua_pushinteger(L, node->location); break; + case PRIVACY: lua_pushinteger(L, node->privacy); break; + case ZONE: lua_pushstring(L, node->zone); break; + case TYPE: lua_pushinteger(L, node->type); break; + case AVAILABLE: lua_pushboolean(L, node->available); break; + default: lua_pushnil(L); break; } } @@ -1163,7 +1163,7 @@ static int zone_create(lua_State *L) const char *fldnam; scripting_zone *zone; const char *name = NULL; - attribute_t *attributes = NULL; + /* attribute_t *attributes = NULL; */ MRP_LUA_ENTER; @@ -1177,7 +1177,7 @@ static int zone_create(lua_State *L) switch (field_name_to_type(fldnam, fldnamlen)) { case NAME: name = luaL_checkstring(L, -1); break; - case ATTRIBUTES: attributes = attributes_check(L, -1); break; + /* case ATTRIBUTES: attributes = attributes_check(L, -1); break; */ default: luaL_error(L, "bad field '%s'", fldnam); break; } @@ -1255,7 +1255,6 @@ static int resource_create(lua_State *L) struct userdata *u; size_t fldnamlen; const char *fldnam; - mir_rtgroup *rtg; scripting_resource *res; resource_name_t *name = NULL; attribute_t *attributes = NULL; @@ -1332,15 +1331,14 @@ static int resource_create(lua_State *L) static int resource_getfield(lua_State *L) { - scripting_resource *res; - field_t fld; + /* field_t fld; */ MRP_LUA_ENTER; - fld = field_check(L, 2, NULL); + /* fld = field_check(L, 2, NULL);*/ lua_pop(L, 1); - if (!(res = (scripting_resource*)mrp_lua_check_object(L,RESOURCE_CLASS,1))) + if (!mrp_lua_check_object(L,RESOURCE_CLASS,1)) lua_pushnil(L); else { #if 0 @@ -1600,7 +1598,7 @@ static int rtgroup_compare(struct userdata *u, if (rt != MRP_FUNCBRIDGE_FLOATING) pa_log("compare function returned invalid type"); else - result = rv.floating; + result = (int)(rv.floating); } } @@ -1627,7 +1625,7 @@ static bool accept_bridge(lua_State *L, void *data, pa_assert(ret_type); pa_assert(ret_val); - pa_assert_se((accept = (mir_rtgroup_accept_t)data)); + pa_assert((accept = (mir_rtgroup_accept_t)data)); if (strcmp(signature, "oo")) success = false; @@ -1719,11 +1717,11 @@ static bool change_bridge(lua_State *L, void *data, /* FIXME: is this how it is supposed to be done?! */ - if (imp->values && imp->values->array && imp->values->array[0] && - imp->values->array[0]->array && - imp->values->array[0]->array[0] && - imp->values->array[0]->array[0]->type == pa_value_string) - pa_assert_se((s = imp->values->array[0]->array[0]->string)); + if (imp->values && imp->values->value.array && imp->values->value.array[0] && + imp->values->value.array[0]->value.array && + imp->values->value.array[0]->value.array[0] && + imp->values->value.array[0]->value.array[0]->type == pa_value_string) + pa_assert_se((s = imp->values->value.array[0]->value.array[0]->value.string)); success = true; *ret_type = MRP_FUNCBRIDGE_NO_DATA; @@ -1748,7 +1746,6 @@ static int apclass_create(lua_State *L) route_t *route = NULL; map_t *roles = NULL; map_t *binaries = NULL; - bool needs_resource = false; pa_nodeset_resdef *resdef; map_t *r, *b; size_t i; @@ -1916,7 +1913,6 @@ static void apclass_destroy(void *data) scripting_apclass *ac = (scripting_apclass *)data; struct userdata *u; map_t *r, *b; - size_t i; MRP_LUA_ENTER; @@ -2026,6 +2022,7 @@ static int route_definition_push(lua_State *L, const char **defs) } +#if 0 static void route_definition_free(const char **defs) { int i; @@ -2036,7 +2033,7 @@ static void route_definition_free(const char **defs) pa_xfree((void *)defs); } } - +#endif static route_t *route_check(lua_State *L, int idx) { @@ -2118,7 +2115,7 @@ static int vollim_create(lua_State *L) bool suppress = false; bool correct = false; size_t arglgh = 0; - size_t i; + int i; int class; uint32_t mask, clmask; char id[256]; @@ -2208,11 +2205,11 @@ static int vollim_create(lua_State *L) vlim->calculate = calculate; if (suppress) { - mir_volume_suppress_arg *args = (mir_volume_suppress_arg *)vlim->args; + mir_volume_suppress_arg *args = (mir_volume_suppress_arg *)(void *)vlim->args; size_t size = sizeof(int) * classes->nint; size_t n = mir_application_class_end - mir_application_class_begin; - for (i = 0, clmask = 0; i < classes->nint; i++) { + for (i = 0, clmask = 0; i < (int)(classes->nint); i++) { class = classes->ints[i]; if (class <= mir_application_class_begin || @@ -2262,7 +2259,7 @@ static int vollim_create(lua_State *L) mir_volume_add_generic_limit(u, vollim_calculate, vlim->args); break; case vollim_class: - for (i = 0; i < classes->nint; i++) { + for (i = 0; i < (int)(classes->nint); i++) { mir_volume_add_class_limit(u, classes->ints[i], vollim_calculate, vlim->args); } @@ -2362,7 +2359,7 @@ static double vollim_calculate(struct userdata *u, int class, mir_node *node, class < mir_application_class_end) ); pa_assert(node); - vlim = (scripting_vollim *)(data - offset); + vlim = (scripting_vollim *)(void*)((char *)data - offset); pa_assert(u == vlim->userdata); @@ -2437,7 +2434,7 @@ static limit_data_t *limit_data_check(lua_State *L, int idx) { static double nolimit = 0.0; - limit_data_t *ld; + limit_data_t *ld = NULL; double value; pa_value *v; @@ -2458,10 +2455,11 @@ static limit_data_t *limit_data_check(lua_State *L, int idx) else { ld = pa_xnew0(limit_data_t, 1); ld->mallocd = false; - ld->value = &v->floating; + ld->value = &v->value.floating; } break; default: + ld = pa_xnew0(limit_data_t, 1); ld->mallocd = false; ld->value = &nolimit; break; @@ -2494,11 +2492,11 @@ static void limit_data_destroy(limit_data_t *ld) static intarray_t *intarray_check(lua_State *L, int idx, int min, int max) { - size_t len; + int len; size_t size; intarray_t *arr; int val; - size_t i; + int i; idx = (idx < 0) ? lua_gettop(L) + idx + 1 : idx; @@ -2507,10 +2505,10 @@ static intarray_t *intarray_check(lua_State *L, int idx, int min, int max) if ((len = luaL_getn(L, idx)) < 1) arr = NULL; else { - size = sizeof(intarray_t) + sizeof(int) * len; + size = sizeof(intarray_t) + sizeof(int) * (size_t)len; arr = pa_xmalloc0(sizeof(intarray_t)); - arr->nint = len; + arr->nint = (size_t)len; arr->ints = pa_xmalloc0(size); for (i = 0; i < len; i++) { @@ -2538,7 +2536,7 @@ static int intarray_push(lua_State *L, intarray_t *arr) if (!arr) lua_pushnil(L); else { - lua_createtable(L, arr->nint, 0); + lua_createtable(L, (int)(arr->nint), 0); for (i = 0; i < arr->nint; i++) { lua_pushinteger(L, (int)(i+1)); @@ -2604,7 +2602,7 @@ static attribute_t *attributes_check(lua_State *L, int tbl) attribute_t *attr, *attrs = NULL; size_t nattr = 0; mrp_attr_value_t *v; - size_t i, len; + int i, len; tbl = (tbl < 0) ? lua_gettop(L) + tbl + 1 : tbl; @@ -2684,10 +2682,9 @@ static map_t *map_check(lua_State *L, int tbl) size_t namlen; const char *name; const char *option; - const char *role; map_t *m, *map = NULL; size_t n = 0; - size_t i, len; + int i, len; int priority; pa_nodeset_resdef *rd; @@ -2724,7 +2721,7 @@ static map_t *map_check(lua_State *L, int tbl) if ((len = luaL_getn(L, def)) < 1) luaL_error(L, "invalid resource definition '%s'", name); - for (i = 1; i <= len; i++) { + for (i = 1; i < len+1; i++) { lua_pushnumber(L, (int)i); lua_gettable(L, def); @@ -2736,7 +2733,7 @@ static map_t *map_check(lua_State *L, int tbl) priority, name); } - m->resource.priority = priority; + m->resource.priority = (uint32_t)priority; } else { option = luaL_checkstring(L, -1); @@ -2793,7 +2790,7 @@ static int map_push(lua_State *L, map_t *map) } else { lua_newtable(L); - lua_pushinteger(L, m->resource.priority); + lua_pushinteger(L, (int)(m->resource.priority)); if (m->role) lua_pushstring(L, m->role); if (m->resource.flags.rset & RESPROTO_RSETFLAG_AUTORELEASE) @@ -3024,7 +3021,7 @@ static int make_id(char *buf, size_t len, const char *fmt, ...) for (p = buf; (c = *p); p++) { if (isalpha(c)) - c = tolower(c); + c = (char)tolower(c); else if (!isdigit(c)) c = '_'; *p = c; @@ -3105,7 +3102,7 @@ static char *comma_separated_list(mrp_lua_strarray_t *arr, char *buf, int len) pa_assert(len > 0); for (i = 0, e = (p = buf) + len; i < arr->nstring && p < e; i++) - p += snprintf(p, e-p, "%s%s", (p == buf ? "" : ","), arr->strings[i]); + p += snprintf(p, (size_t)(e-p), "%s%s", (p == buf ? "" : ","), arr->strings[i]); return (p < e) ? buf : NULL; } diff --git a/murphy/stream-state.c b/murphy/stream-state.c index f75d647..5191b92 100644 --- a/murphy/stream-state.c +++ b/murphy/stream-state.c @@ -59,7 +59,6 @@ bool pa_stream_state_start_corked(struct userdata *u, void pa_stream_state_change(struct userdata *u, mir_node *node, int req) { pa_loopnode *loop; - uint32_t idx; pa_sink_input *sinp; pa_source_output *sout; pa_core *core; @@ -162,7 +161,7 @@ static void sink_input_block(struct userdata *u, corked = (sinp->flags & PA_SINK_INPUT_START_CORKED); if (corked && !block) - sinp->flags &= ~PA_SINK_INPUT_START_CORKED; + sinp->flags &= ~((unsigned int)PA_SINK_INPUT_START_CORKED); block_by_mute = !corked; @@ -186,7 +185,12 @@ static void sink_input_block(struct userdata *u, } } else { +#if 0 + /* this should be taken back if the block by mute goes away */ if ((corked && !block) || (!corked && block)) { +#else + if (corked && !block) { +#endif pa_sink_input_cork_internal(sinp, block); if (sinp->send_event) { diff --git a/murphy/userdata.h b/murphy/userdata.h index dc38aa3..263edf9 100644 --- a/murphy/userdata.h +++ b/murphy/userdata.h @@ -57,7 +57,7 @@ #define MIR_VOLUME_MAX_ATTENUATION -120 /* dB */ -typedef enum pa_value_type pa_value_type; +//typedef enum pa_value_type pa_value_type; typedef struct pa_value pa_value; typedef struct pa_null_sink pa_null_sink; typedef struct pa_tracker pa_tracker; @@ -84,11 +84,11 @@ typedef struct pa_source_output_hooks pa_source_output_hooks; typedef struct pa_extapi pa_extapi; typedef struct pa_murphyif pa_murphyif; -typedef enum mir_direction mir_direction; -typedef enum mir_implement mir_implement; -typedef enum mir_location mir_location; -typedef enum mir_node_type mir_node_type; -typedef enum mir_privacy mir_privacy; +//typedef enum mir_direction mir_direction; +//typedef enum mir_implement mir_implement; +//typedef enum mir_location mir_location; +//typedef enum mir_node_type mir_node_type; +//typedef enum mir_privacy mir_privacy; typedef struct mir_node mir_node; typedef struct mir_zone mir_zone; typedef struct mir_rtgroup mir_rtgroup; @@ -107,7 +107,7 @@ typedef struct scripting_rtgroup scripting_rtgroup; typedef struct scripting_apclass scripting_apclass; typedef struct scripting_vollim scripting_vollim; -typedef enum am_method am_method; +//typedef enum am_method am_method; typedef struct am_domainreg_data am_domainreg_data; typedef struct am_nodereg_data am_nodereg_data; typedef struct am_nodeunreg_data am_nodeunreg_data; @@ -132,21 +132,90 @@ enum pa_value_type { pa_value_floating, }; +typedef union val_t { + const char *string; + int32_t integer; + uint32_t unsignd; + double floating; + pa_value **array; +} val_t; + struct pa_value { /* positive values are enumerations of pa_value_type * negative values represent array dimensions, * eg. -2 menas an array with two element */ - int type; - union { - const char *string; - int32_t integer; - uint32_t unsignd; - double floating; - pa_value **array; - }; + int type; + val_t value; }; +typedef enum mir_direction { + mir_direction_unknown, + mir_input, + mir_output +} mir_direction; + +typedef enum mir_implement { + mir_implementation_unknown = 0, + mir_device, + mir_stream +} mir_implement; + +typedef enum mir_location { + mir_location_unknown = 0, + mir_internal, + mir_external +} mir_location; + +typedef enum mir_node_type { + mir_node_type_unknown = 0, + + /* application classes */ + mir_application_class_begin, + mir_radio = mir_application_class_begin, + mir_player, + mir_navigator, + mir_game, + mir_browser, + mir_camera, + mir_phone, /**< telephony voice */ + mir_alert, /**< ringtone, alarm */ + mir_event, /**< notifications */ + mir_system, /**< always audible system notifications, events */ + mir_application_class_end, + + /* device types */ + mir_device_class_begin = 128, + mir_null = mir_device_class_begin, + mir_speakers, + mir_front_speakers, + mir_rear_speakers, + mir_microphone, + mir_jack, + mir_hdmi, + mir_spdif, + mir_wired_headset, + mir_wired_headphone, + mir_usb_headset, + mir_usb_headphone, + mir_bluetooth_sco, + mir_bluetooth_a2dp, + mir_bluetooth_carkit, + mir_bluetooth_source, + mir_bluetooth_sink, + mir_gateway_sink, + mir_gateway_source, + mir_device_class_end, + + /* extensions */ + mir_user_defined_start = 256 +} mir_node_type; + +typedef enum mir_privacy { + mir_privacy_unknown = 0, + mir_public, + mir_private +} mir_privacy; struct userdata { pa_core *core; diff --git a/murphy/utils.c b/murphy/utils.c index 09cc11b..905e028 100644 --- a/murphy/utils.c +++ b/murphy/utils.c @@ -139,15 +139,15 @@ pa_source *pa_utils_get_null_source(struct userdata *u) -char *pa_utils_get_card_name(pa_card *card) +const char *pa_utils_get_card_name(pa_card *card) { return (card && card->name) ? card->name : ""; } -char *pa_utils_get_card_bus(pa_card *card) +const char *pa_utils_get_card_bus(pa_card *card) { const char *bus = NULL; - char *name; + const char *name; if (card && !(bus = pa_proplist_gets(card->proplist,PA_PROP_DEVICE_BUS))) { name = pa_utils_get_card_name(card); @@ -164,17 +164,17 @@ char *pa_utils_get_card_bus(pa_card *card) return (char *)bus; } -char *pa_utils_get_sink_name(pa_sink *sink) +const char *pa_utils_get_sink_name(pa_sink *sink) { return (sink && sink->name) ? sink->name : ""; } -char *pa_utils_get_source_name(pa_source *source) +const char *pa_utils_get_source_name(pa_source *source) { return (source && source->name) ? source->name : ""; } -char *pa_utils_get_sink_input_name(pa_sink_input *sinp) +const char *pa_utils_get_sink_input_name(pa_sink_input *sinp) { char *name; @@ -184,7 +184,7 @@ char *pa_utils_get_sink_input_name(pa_sink_input *sinp) return ""; } -char *pa_utils_get_sink_input_name_from_data(pa_sink_input_new_data *data) +const char *pa_utils_get_sink_input_name_from_data(pa_sink_input_new_data *data) { char *name; @@ -195,7 +195,7 @@ char *pa_utils_get_sink_input_name_from_data(pa_sink_input_new_data *data) } -char *pa_utils_get_source_output_name(pa_source_output *sout) +const char *pa_utils_get_source_output_name(pa_source_output *sout) { char *name; @@ -205,7 +205,7 @@ char *pa_utils_get_source_output_name(pa_source_output *sout) return ""; } -char *pa_utils_get_source_output_name_from_data(pa_source_output_new_data*data) +const char *pa_utils_get_source_output_name_from_data(pa_source_output_new_data*data) { char *name; @@ -328,12 +328,12 @@ char *pa_utils_get_rsetid(pa_proplist *pl, char *buf, int length) if (buf && length >= 2) { if ((prop = pa_proplist_gets(pl, PA_PROP_RESOURCE_SET_NAME))) { - snprintf(buf, length, "#%s", prop); + snprintf(buf, (size_t)length, "#%s", prop); return buf; } if ((prop = pa_proplist_gets(pl, PA_PROP_RESOURCE_SET_ID))) { - strncpy(buf, prop, length); + strncpy(buf, prop, (size_t)length); buf[length-1] = '\0'; return buf; } @@ -387,11 +387,11 @@ bool pa_utils_unset_resource_properties(pa_proplist *pl) pa_nodeset_resdef *pa_utils_get_resource_properties(pa_proplist *pl, pa_nodeset_resdef *rd) { + int success; + pa_assert(pl); pa_assert(rd); - int success; - memset(rd, 0, sizeof(pa_nodeset_resdef)); success = get_unsigned_property(pl, PA_PROP_RESOURCE_PRIORITY, diff --git a/murphy/utils.h b/murphy/utils.h index 26ff93c..07dbb93 100644 --- a/murphy/utils.h +++ b/murphy/utils.h @@ -30,14 +30,14 @@ void pa_utils_destroy_null_sink(struct userdata *); pa_sink *pa_utils_get_null_sink(struct userdata *); pa_source *pa_utils_get_null_source(struct userdata *); -char *pa_utils_get_card_name(pa_card *); -char *pa_utils_get_card_bus(pa_card *); -char *pa_utils_get_sink_name(pa_sink *); -char *pa_utils_get_source_name(pa_source *); -char *pa_utils_get_sink_input_name(pa_sink_input *); -char *pa_utils_get_sink_input_name_from_data(pa_sink_input_new_data *); -char *pa_utils_get_source_output_name(pa_source_output *); -char *pa_utils_get_source_output_name_from_data(pa_source_output_new_data *); +const char *pa_utils_get_card_name(pa_card *); +const char *pa_utils_get_card_bus(pa_card *); +const char *pa_utils_get_sink_name(pa_sink *); +const char *pa_utils_get_source_name(pa_source *); +const char *pa_utils_get_sink_input_name(pa_sink_input *); +const char *pa_utils_get_sink_input_name_from_data(pa_sink_input_new_data *); +const char *pa_utils_get_source_output_name(pa_source_output *); +const char *pa_utils_get_source_output_name_from_data(pa_source_output_new_data *); char *pa_utils_get_zone(pa_proplist *); const char *pa_utils_get_appid(pa_proplist *); diff --git a/murphy/volume.c b/murphy/volume.c index c5cc080..c0ca9ee 100644 --- a/murphy/volume.c +++ b/murphy/volume.c @@ -126,15 +126,15 @@ void mir_volume_add_class_limit(struct userdata *u, if (class < volume->classlen) table = volume->classlim + class; else { - newlen = class + 1; + newlen = (size_t)(class + 1); size = sizeof(vlim_table) * newlen; - diff = sizeof(vlim_table) * (newlen - volume->classlen); + diff = sizeof(vlim_table) * (newlen - (size_t)volume->classlen); pa_assert_se((classlim = realloc(volume->classlim, size))); memset(classlim + volume->classlen, 0, diff); - volume->classlen = newlen; + volume->classlen = (int)newlen; volume->classlim = classlim; table = classlim + class; @@ -215,7 +215,6 @@ double mir_volume_apply_limits(struct userdata *u, double attenuation = 0.0; double devlim, classlim; vlim_table *tbl; - uint32_t clmask; double maxlim; pa_assert(u); @@ -238,7 +237,6 @@ double mir_volume_apply_limits(struct userdata *u, pa_assert(class < mir_application_class_end); maxlim = volume->maxlim[class]; - clmask = (uint32_t)1 << (class - mir_application_class_begin); if (class < volume->classlen && (tbl = volume->classlim + class)) classlim = apply_table(classlim, tbl, u, class, node, "class"); diff --git a/murphy/zone.c b/murphy/zone.c index 1a4d1fe..147c667 100644 --- a/murphy/zone.c +++ b/murphy/zone.c @@ -30,7 +30,6 @@ #include "zone.h" - struct pa_zoneset { struct { pa_hashmap *hash; @@ -38,10 +37,6 @@ struct pa_zoneset { } zones; }; - -static void free_zone_cb(void *); - - pa_zoneset *pa_zoneset_init(struct userdata *u) { pa_zoneset *zs; @@ -148,25 +143,12 @@ void pa_zoneset_update_module_property(struct userdata *u) PA_HASHMAP_FOREACH(zone, zs->zones.hash, state) { if (p >= e) break; - p += snprintf(p, e-p, " '%s'", zone->name); + p += snprintf(p, (size_t)(e-p), " '%s'", zone->name); } pa_proplist_sets(module->proplist, PA_PROP_ZONES, buf+1); } -static void free_zone_cb(void *void_zone) -{ - mir_zone *zone = (mir_zone *)void_zone; - - pa_xfree((void *)zone->name); - - pa_xfree(zone); -} - - - - - /* * Local Variables: -- 2.7.4