fix high risk coverity warnings 46/31946/2
authorJaska Uimonen <jaska.uimonen@helsinki.fi>
Wed, 26 Nov 2014 08:43:10 +0000 (10:43 +0200)
committerJaska Uimonen <jaska.uimonen@helsinki.fi>
Sun, 14 Dec 2014 21:47:01 +0000 (23:47 +0200)
Change-Id: I47d29c937029e13c4b2b02dbd6a98325550bac90

25 files changed:
murphy/audiomgr.c
murphy/classify.c
murphy/constrain.c
murphy/dbusif.c
murphy/discover.c
murphy/extapi.c
murphy/fader.c
murphy/list.h
murphy/loopback.c
murphy/module-murphy-ivi.c
murphy/multiplex.c
murphy/murphy-config.c
murphy/murphyif.c
murphy/node.c
murphy/node.h
murphy/router.c
murphy/router.h
murphy/routerif.h
murphy/scripting.c
murphy/stream-state.c
murphy/userdata.h
murphy/utils.c
murphy/utils.h
murphy/volume.c
murphy/zone.c

index 023da30..a6b4b08 100644 (file)
@@ -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;
 }
 
 
index d46e2b7..2ac8c4b 100644 (file)
@@ -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;
index 4d61263..ea0beea 100644 (file)
@@ -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);
index f3df76d..7b7c78b 100644 (file)
@@ -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);
index 86860c8..fd779a9 100644 (file)
@@ -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 = "<unknown>";
 
-
     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:
index d704ac4..4dd2d5d 100644 (file)
@@ -29,7 +29,7 @@
 #include <pulsecore/tagstruct.h>
 #include <pulsecore/pstream-util.h>
 
-#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;
 }
 
 /*
index 5c5aea7..aff0c3d 100644 (file)
@@ -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;
index c1cf329..fb3bbd6 100644 (file)
 #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) }
index b6803bd..72bf135 100644 (file)
@@ -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, "<not set>");
+        p += snprintf(p, (size_t)(e-p), "<not set>");
     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);
     }
     
index 895451e..b0be782 100644 (file)
@@ -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
index be0a5ae..55e7e46 100644 (file)
@@ -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, "<not set>");
+        p += snprintf(p, (size_t)(e-p), "<not set>");
     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);
     }
     
index ed7614f..5b1bebf 100644 (file)
@@ -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);
index 2f4596a..95c4030 100644 (file)
@@ -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<invalid column 0x%x>",
+                l  = snprintf(p, (size_t)n, "%s<invalid column 0x%x>",
                               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);
index 4fe715b..27b4819 100644 (file)
@@ -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;
index 37271d0..a42b0e3 100644 (file)
 
 #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 */
index ace8695..c2ef3ef 100644 (file)
@@ -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, "   <empty>\n");
+                p += snprintf(p, (size_t)(e-p), "   <empty>\n");
         }
     }
 
index dc7f568..74fe009 100644 (file)
@@ -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
index 514e6c1..171f85a 100644 (file)
@@ -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
index 6cdedeb..a686346 100644 (file)
@@ -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;
 }
index f75d647..5191b92 100644 (file)
@@ -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) {
index dc38aa3..263edf9 100644 (file)
@@ -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;
index 09cc11b..905e028 100644 (file)
@@ -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 : "<unknown>";
 }
 
-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 : "<unknown>";
 }
 
-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 : "<unknown>";
 }
 
-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 "<unknown>";
 }
 
-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 "<unknown>";
 }
 
-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,
index 26ff93c..07dbb93 100644 (file)
@@ -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 *);
index c5cc080..c0ca9ee 100644 (file)
@@ -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");
index 1a4d1fe..147c667 100644 (file)
@@ -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: