Change the type of the argv argument of all commands.
authorAndre Noll <maan@systemlinux.org>
Sun, 9 Sep 2007 17:29:26 +0000 (19:29 +0200)
committerAndre Noll <maan@systemlinux.org>
Sun, 9 Sep 2007 17:29:26 +0000 (19:29 +0200)
The new type,

char * const * const argv

is what the exec functions also take. This avoids some
warnings.

14 files changed:
afs.c
afs.cmd
afs.h
aft.c
attribute.c
blob.c
command.c
exec.c
mysql_selector.c
playlist_selector.c
random_selector.c
server.h
string.c
string.h

diff --git a/afs.c b/afs.c
index 3fc5df4..806d0fb 100644 (file)
--- a/afs.c
+++ b/afs.c
@@ -235,7 +235,7 @@ out:
  * \sa send_standard_callback_request(), send_callback_request().
  */
 int send_option_arg_callback_request(struct osl_object *options,
  * \sa send_standard_callback_request(), send_callback_request().
  */
 int send_option_arg_callback_request(struct osl_object *options,
-               int argc, const char **argv, callback_function *f,
+               int argc,  char * const * const argv, callback_function *f,
                struct osl_object *result)
 {
        char *p;
                struct osl_object *result)
 {
        char *p;
@@ -273,7 +273,7 @@ int send_option_arg_callback_request(struct osl_object *options,
  * \return The return value of the underlying call to
  * send_option_arg_callback_request().
  */
  * \return The return value of the underlying call to
  * send_option_arg_callback_request().
  */
-int send_standard_callback_request(int argc, const char **argv,
+int send_standard_callback_request(int argc,  char * const * const argv,
                callback_function *f, struct osl_object *result)
 {
        return send_option_arg_callback_request(NULL, argc, argv, f, result);
                callback_function *f, struct osl_object *result)
 {
        return send_option_arg_callback_request(NULL, argc, argv, f, result);
@@ -794,7 +794,7 @@ static int create_all_tables(void)
 }
 
 /* TODO load tables after init */
 }
 
 /* TODO load tables after init */
-int com_init(__a_unused int fd, int argc, const char **argv)
+int com_init(__a_unused int fd, int argc, char * const * const argv)
 {
        int i, j, ret;
        if (argc == 1)
 {
        int i, j, ret;
        if (argc == 1)
diff --git a/afs.cmd b/afs.cmd
index 187e2af..f8454d6 100644 (file)
--- a/afs.cmd
+++ b/afs.cmd
@@ -70,7 +70,7 @@ H: FIXME
 ---
 T: cat
 N: cat@member@
 ---
 T: cat
 N: cat@member@
-O: int com_cat@member@(int fd, int argc, char **argv);
+O: int com_cat@member@(int fd, int argc, char * const * const argv);
 P: AFS_READ
 D: FIXME
 U: cat@member@ @member@_name
 P: AFS_READ
 D: FIXME
 U: cat@member@ @member@_name
@@ -78,7 +78,7 @@ H: FIXME
 ---
 T: ls
 N: ls@member@
 ---
 T: ls
 N: ls@member@
-O: int com_ls@member@(int fd, int argc, char **argv);
+O: int com_ls@member@(int fd, int argc, char * const * const argv);
 P: AFS_READ
 D: FIXME
 U: cat@member@ <pattern>
 P: AFS_READ
 D: FIXME
 U: cat@member@ <pattern>
@@ -86,7 +86,7 @@ H: FIXME
 ---
 T: rm
 N: rm@member@
 ---
 T: rm
 N: rm@member@
-O: int com_rm@member@(int fd, int argc, char **argv);
+O: int com_rm@member@(int fd, int argc, char * const * const argv);
 P: AFS_READ | AFS_WRITE
 D: FIXME
 U: rm@member@ @member@_name
 P: AFS_READ | AFS_WRITE
 D: FIXME
 U: rm@member@ @member@_name
@@ -94,7 +94,7 @@ H: FIXME
 ---
 T: mv
 N: mv@member@
 ---
 T: mv
 N: mv@member@
-O: int com_mv@member@(int fd, int argc, char **argv);
+O: int com_mv@member@(int fd, int argc, char * const * const argv);
 P: AFS_READ | AFS_WRITE
 D: FIXME
 U: mv@member@ old_@member@_name new_@member@_name
 P: AFS_READ | AFS_WRITE
 D: FIXME
 U: mv@member@ old_@member@_name new_@member@_name
diff --git a/afs.h b/afs.h
index aa94ac7..22d70ad 100644 (file)
--- a/afs.h
+++ b/afs.h
@@ -96,10 +96,10 @@ typedef int callback_function(const struct osl_object *, struct osl_object *);
 __noreturn int afs_init(uint32_t cookie, int socket_fd);
 int send_callback_request(callback_function *f, struct osl_object *query,
        struct osl_object *result);
 __noreturn int afs_init(uint32_t cookie, int socket_fd);
 int send_callback_request(callback_function *f, struct osl_object *query,
        struct osl_object *result);
-int send_standard_callback_request(int argc, const char **argv,
+int send_standard_callback_request(int argc, char * const * const argv,
                callback_function *f, struct osl_object *result);
 int send_option_arg_callback_request(struct osl_object *options,
                callback_function *f, struct osl_object *result);
 int send_option_arg_callback_request(struct osl_object *options,
-       int argc, const char **argv, callback_function *f,
+       int argc, char * const * const argv, callback_function *f,
        struct osl_object *result);
 int stdin_command(struct osl_object *arg_obj, callback_function *f,
                unsigned max_len, struct osl_object *result);
        struct osl_object *result);
 int stdin_command(struct osl_object *arg_obj, callback_function *f,
                unsigned max_len, struct osl_object *result);
diff --git a/aft.c b/aft.c
index 866f269..f1616ad 100644 (file)
--- a/aft.c
+++ b/aft.c
@@ -1030,7 +1030,7 @@ out:
  * full list: list everything, including afsi, afhi, atts as clear text
  *
  * */
  * full list: list everything, including afsi, afhi, atts as clear text
  *
  * */
-int com_afs_ls(int fd, int argc, const char **argv)
+int com_afs_ls(int fd, int argc, char * const * const argv)
 {
        int i, ret;
        unsigned flags = 0;
 {
        int i, ret;
        unsigned flags = 0;
@@ -1437,7 +1437,7 @@ out_free:
        return ret;
 }
 
        return ret;
 }
 
-int com_add(int fd, int argc, char **argv)
+int com_add(int fd, int argc, char * const * const argv)
 {
        int i, ret;
        struct private_add_data pad = {.fd = fd, .flags = 0};
 {
        int i, ret;
        struct private_add_data pad = {.fd = fd, .flags = 0};
@@ -1540,7 +1540,7 @@ static int com_touch_callback(const struct osl_object *query,
        return 1;
 }
 
        return 1;
 }
 
-int com_touch(__a_unused int fd, int argc, const char **argv)
+int com_touch(__a_unused int fd, int argc, char * const * const argv)
 {
        struct com_touch_options cto = {
                .num_played = -1,
 {
        struct com_touch_options cto = {
                .num_played = -1,
@@ -1629,7 +1629,7 @@ static int com_rm_callback(const struct osl_object *query,
  *
  * */
 
  *
  * */
 
-int com_afs_rm(__a_unused int fd, int argc, const char **argv)
+int com_afs_rm(__a_unused int fd, int argc,  char * const * const argv)
 {
        struct com_rm_options cro = {.flags = 0};
        struct osl_object options = {.data = &cro, .size = sizeof(cro)};
 {
        struct com_rm_options cro = {.flags = 0};
        struct osl_object options = {.data = &cro, .size = sizeof(cro)};
index cecd1aa..925795b 100644 (file)
@@ -107,7 +107,7 @@ static int log_attribute(struct osl_row *row, void *private_data)
 }
 
 /* FIXME: Need callback */
 }
 
 /* FIXME: Need callback */
-int com_lsatt(int fd, int argc, const char **argv)
+int com_lsatt(int fd, int argc, char * const * const argv)
 {
        struct private_laa_data pld = {.fd = fd, .flags = 0};
        int i;
 {
        struct private_laa_data pld = {.fd = fd, .flags = 0};
        int i;
@@ -201,7 +201,7 @@ static int com_setatt_callback(const struct osl_object *query,
        return 1;
 }
 
        return 1;
 }
 
-int com_setatt(__a_unused int fd, int argc, const char **argv)
+int com_setatt(__a_unused int fd, int argc, char * const * const argv)
 {
        if (argc < 2)
                return -E_ATTR_SYNTAX;
 {
        if (argc < 2)
                return -E_ATTR_SYNTAX;
@@ -277,7 +277,7 @@ static int com_addatt_callback(const struct osl_object *query,
        return mood_reload();
 }
 
        return mood_reload();
 }
 
-int com_addatt(__a_unused int fd, int argc, const char **argv)
+int com_addatt(__a_unused int fd, int argc, char * const * const argv)
 {
        if (argc < 2)
                return -E_ATTR_SYNTAX;
 {
        if (argc < 2)
                return -E_ATTR_SYNTAX;
@@ -312,7 +312,7 @@ static int com_rmatt_callback(const struct osl_object *query,
        return mood_reload();
 }
 
        return mood_reload();
 }
 
-int com_rmatt(__a_unused int fd, int argc, const char **argv)
+int com_rmatt(__a_unused int fd, int argc, char * const * const argv)
 {
        if (argc < 2)
                return -E_ATTR_SYNTAX;
 {
        if (argc < 2)
                return -E_ATTR_SYNTAX;
diff --git a/blob.c b/blob.c
index eca3c56..fa5134d 100644 (file)
--- a/blob.c
+++ b/blob.c
@@ -106,7 +106,7 @@ int com_lsblob_callback(struct osl_table *table,
        return ret;
 }
 
        return ret;
 }
 
-static int com_lsblob(callback_function *f, int fd, int argc, const char **argv)
+static int com_lsblob(callback_function *f, int fd, int argc, char * const * const argv)
 {
        struct com_lsblob_options clbo = {.flags = 0};
        struct osl_object query = {.data = &clbo, .size = sizeof(clbo)},
 {
        struct com_lsblob_options clbo = {.flags = 0};
        struct osl_object query = {.data = &clbo, .size = sizeof(clbo)},
@@ -163,7 +163,7 @@ static int com_catblob_callback(struct osl_table *table,
        return osl_close_disk_object(&obj);
 }
 static int com_catblob(callback_function *f, int fd, int argc,
        return osl_close_disk_object(&obj);
 }
 static int com_catblob(callback_function *f, int fd, int argc,
-               const char **argv)
+               char * const * const argv)
 {
        struct osl_object cat_output = {.data = NULL};
        int ret;
 {
        struct osl_object cat_output = {.data = NULL};
        int ret;
@@ -232,7 +232,7 @@ static int com_addblob_callback(struct osl_table *table,
 }
 
 static int com_addblob(callback_function *f, __a_unused int fd, int argc,
 }
 
 static int com_addblob(callback_function *f, __a_unused int fd, int argc,
-               const char **argv)
+               char * const * const argv)
 {
        struct osl_object arg_obj;
 
 {
        struct osl_object arg_obj;
 
@@ -272,7 +272,7 @@ static int com_rmblob_callback(struct osl_table *table,
 }
 
 static int com_rmblob(callback_function *f, __a_unused int fd, int argc,
 }
 
 static int com_rmblob(callback_function *f, __a_unused int fd, int argc,
-               const char **argv)
+               char * const * const argv)
 {
        if (argc < 2)
                return -E_MOOD_SYNTAX;
 {
        if (argc < 2)
                return -E_MOOD_SYNTAX;
@@ -298,7 +298,7 @@ static int com_mvblob_callback(struct osl_table *table,
 }
 
 static int com_mvblob(callback_function *f,  __a_unused int fd,
 }
 
 static int com_mvblob(callback_function *f,  __a_unused int fd,
-               int argc, const char **argv)
+               int argc, char * const * const argv)
 {
        if (argc != 3)
                return -E_MOOD_SYNTAX;
 {
        if (argc != 3)
                return -E_MOOD_SYNTAX;
@@ -312,7 +312,7 @@ static int com_mvblob(callback_function *f,  __a_unused int fd,
        { \
                return com_ ## cmd_name ## blob_callback(table_name ## _table, query, output); \
        } \
        { \
                return com_ ## cmd_name ## blob_callback(table_name ## _table, query, output); \
        } \
-       int com_ ## cmd_name ## cmd_prefix(__a_unused int fd, int argc, const char **argv) \
+       int com_ ## cmd_name ## cmd_prefix(int fd, int argc, char * const * const argv) \
        { \
                return com_ ## cmd_name ## blob(com_ ## cmd_name ## cmd_prefix ## _callback, fd, argc, argv); \
        }
        { \
                return com_ ## cmd_name ## blob(com_ ## cmd_name ## cmd_prefix ## _callback, fd, argc, argv); \
        }
index 0434a80..1c1b300 100644 (file)
--- a/command.c
+++ b/command.c
@@ -179,7 +179,7 @@ static char *get_status(struct misc_meta_data *nmmd)
        return ret;
 }
 
        return ret;
 }
 
-static int check_sender_args(int argc, char **argv, struct sender_command_data *scd)
+static int check_sender_args(int argc, char * const * argv, struct sender_command_data *scd)
 {
        int i;
        /* this has to match sender.h */
 {
        int i;
        /* this has to match sender.h */
@@ -245,7 +245,7 @@ static int check_sender_args(int argc, char **argv, struct sender_command_data *
        return 1;
 }
 
        return 1;
 }
 
-int com_sender(int fd, int argc, char **argv)
+int com_sender(int fd, int argc, char * const * argv)
 {
        int i, ret;
        struct sender_command_data scd;
 {
        int i, ret;
        struct sender_command_data scd;
@@ -287,7 +287,7 @@ int com_sender(int fd, int argc, char **argv)
 }
 
 /* server info */
 }
 
 /* server info */
-int com_si(int fd, int argc, __a_unused char **argv)
+int com_si(int fd, int argc, __a_unused char * const * argv)
 {
        int i, ret;
        char *ut;
 {
        int i, ret;
        char *ut;
@@ -336,7 +336,7 @@ int com_si(int fd, int argc, __a_unused char **argv)
 }
 
 /* version */
 }
 
 /* version */
-int com_version(int fd, int argc, __a_unused char **argv)
+int com_version(int fd, int argc, __a_unused char * const * argv)
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
@@ -347,7 +347,7 @@ int com_version(int fd, int argc, __a_unused char **argv)
 }
 
 /* sc */
 }
 
 /* sc */
-int com_sc(int fd, int argc, char **argv)
+int com_sc(int fd, int argc, char * const * argv)
 {
        char *name = NULL;
        int ret, old = 0, count = -1; /* print af change forever */
 {
        char *name = NULL;
        int ret, old = 0, count = -1; /* print af change forever */
@@ -375,7 +375,7 @@ repeat:
 }
 
 /* sb */
 }
 
 /* sb */
-int com_sb(int fd, int argc, char **argv)
+int com_sb(int fd, int argc, char * const * argv)
 {
        char *sb;
        int ret, nr = -1;       /* status bar will be printed that many
 {
        char *sb;
        int ret, nr = -1;       /* status bar will be printed that many
@@ -402,7 +402,7 @@ int com_sb(int fd, int argc, char **argv)
 }
 
 /* stat */
 }
 
 /* stat */
-int com_stat(int fd, int argc, char **argv)
+int com_stat(int fd, int argc, char * const * argv)
 {
        int ret, num = 0;/* status will be printed that many
                          * times. num <= 0 means: print forever
 {
        int ret, num = 0;/* status will be printed that many
                          * times. num <= 0 means: print forever
@@ -452,7 +452,7 @@ static int send_list_of_commands(int fd, struct server_command *cmd,
 }
 
 /* always returns string that must be freed by the caller in handler */
 }
 
 /* always returns string that must be freed by the caller in handler */
-static struct server_command *get_cmd_ptr(char *name, char **handler)
+static struct server_command *get_cmd_ptr(const char *name, char **handler)
 {
        struct server_command *cmd;
 
 {
        struct server_command *cmd;
 
@@ -480,7 +480,7 @@ static struct server_command *get_cmd_ptr(char *name, char **handler)
 }
 
 /* help */
 }
 
 /* help */
-int com_help(int fd, int argc, char **argv)
+int com_help(int fd, int argc, char * const * argv)
 {
        struct server_command *cmd;
        char *perms, *handler;
 {
        struct server_command *cmd;
        char *perms, *handler;
@@ -527,7 +527,7 @@ int com_help(int fd, int argc, char **argv)
 }
 
 /* hup */
 }
 
 /* hup */
-int com_hup(__a_unused int fd, int argc, __a_unused char **argv)
+int com_hup(__a_unused int fd, int argc, __a_unused char * const * argv)
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
@@ -536,7 +536,7 @@ int com_hup(__a_unused int fd, int argc, __a_unused char **argv)
 }
 
 /* term */
 }
 
 /* term */
-int com_term(__a_unused int fd, int argc, __a_unused char **argv)
+int com_term(__a_unused int fd, int argc, __a_unused char * const * argv)
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
@@ -544,7 +544,7 @@ int com_term(__a_unused int fd, int argc, __a_unused char **argv)
        return 1;
 }
 
        return 1;
 }
 
-int com_play(__a_unused int fd, int argc, __a_unused char **argv)
+int com_play(__a_unused int fd, int argc, __a_unused char * const * argv)
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
@@ -557,7 +557,7 @@ int com_play(__a_unused int fd, int argc, __a_unused char **argv)
 }
 
 /* stop */
 }
 
 /* stop */
-int com_stop(__a_unused int fd, int argc, __a_unused char **argv)
+int com_stop(__a_unused int fd, int argc, __a_unused char * const * argv)
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
@@ -570,7 +570,7 @@ int com_stop(__a_unused int fd, int argc, __a_unused char **argv)
 }
 
 /* pause */
 }
 
 /* pause */
-int com_pause(__a_unused int fd, int argc, __a_unused char **argv)
+int com_pause(__a_unused int fd, int argc, __a_unused char * const * argv)
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
@@ -583,7 +583,7 @@ int com_pause(__a_unused int fd, int argc, __a_unused char **argv)
        return 1;
 }
 
        return 1;
 }
 
-int com_chs(int fd, int argc, char **argv)
+int com_chs(int fd, int argc, char * const * argv)
 {
        int i, ret;
 
 {
        int i, ret;
 
@@ -609,7 +609,7 @@ int com_chs(int fd, int argc, char **argv)
 }
 
 /* next */
 }
 
 /* next */
-int com_next(__a_unused int fd, int argc, __a_unused char **argv)
+int com_next(__a_unused int fd, int argc, __a_unused char * const * argv)
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
@@ -621,7 +621,7 @@ int com_next(__a_unused int fd, int argc, __a_unused char **argv)
 }
 
 /* nomore */
 }
 
 /* nomore */
-int com_nomore(__a_unused int fd, int argc, __a_unused char **argv)
+int com_nomore(__a_unused int fd, int argc, __a_unused char * const * argv)
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
 {
        if (argc != 1)
                return -E_COMMAND_SYNTAX;
@@ -633,7 +633,7 @@ int com_nomore(__a_unused int fd, int argc, __a_unused char **argv)
 }
 
 /* ff */
 }
 
 /* ff */
-int com_ff(__a_unused int fd, int argc, char **argv)
+int com_ff(__a_unused int fd, int argc, char * const * argv)
 {
        long promille;
        int ret, backwards = 0;
 {
        long promille;
        int ret, backwards = 0;
@@ -672,7 +672,7 @@ out:
 }
 
 /* jmp */
 }
 
 /* jmp */
-int com_jmp(__a_unused int fd, int argc, char **argv)
+int com_jmp(__a_unused int fd, int argc, char * const * argv)
 {
        long unsigned int i;
        int ret;
 {
        long unsigned int i;
        int ret;
diff --git a/exec.c b/exec.c
index 42a183a..0886a0b 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -22,7 +22,7 @@
  *
  * \sa null(4), pipe(2), dup2(2), fork(2), exec(3)
  */
  *
  * \sa null(4), pipe(2), dup2(2), fork(2), exec(3)
  */
-static int para_exec(pid_t *pid, const char *file, char *const args[], int *fds)
+static int para_exec(pid_t *pid, const char *file, char *const *const args, int *fds)
 {
        int ret, in[2] = {-1, -1}, out[2] = {-1, -1}, err[2] = {-1, -1},
                null = -1; /* ;) */
 {
        int ret, in[2] = {-1, -1}, out[2] = {-1, -1}, err[2] = {-1, -1},
                null = -1; /* ;) */
@@ -131,7 +131,8 @@ err_out:
 int para_exec_cmdline_pid(pid_t *pid, const char *cmdline, int *fds)
 {
        int argc, ret;
 int para_exec_cmdline_pid(pid_t *pid, const char *cmdline, int *fds)
 {
        int argc, ret;
-       char **argv, *tmp = para_strdup(cmdline);
+       char **argv;
+       char *tmp = para_strdup(cmdline);
 
        if (!tmp)
                exit(EXIT_FAILURE);
 
        if (!tmp)
                exit(EXIT_FAILURE);
index 0635f85..eaee16a 100644 (file)
@@ -266,7 +266,7 @@ static char *escaped_basename(const char *name)
 /*
  * new attribute
  */
 /*
  * new attribute
  */
-int com_na(__a_unused int fd, int argc, char *argv[])
+int com_na(__a_unused int fd, int argc, char * const * argv)
 {
        char *q, *tmp;
        int ret;
 {
        char *q, *tmp;
        int ret;
@@ -287,7 +287,7 @@ int com_na(__a_unused int fd, int argc, char *argv[])
 /*
  * delete attribute
  */
 /*
  * delete attribute
  */
-int com_da(__a_unused int fd, int argc, char *argv[])
+int com_da(__a_unused int fd, int argc, char * const * argv)
 {
        char *q, *tmp;
        int ret;
 {
        char *q, *tmp;
        int ret;
@@ -305,7 +305,7 @@ int com_da(__a_unused int fd, int argc, char *argv[])
 }
 
 /* stradd/pic_add */
 }
 
 /* stradd/pic_add */
-static int com_stradd_picadd(int fd, int argc, char *argv[])
+static int com_stradd_picadd(int fd, int argc, char * const * argv)
 {
        char *blob = NULL, *esc_blob = NULL, *q = NULL, *tmp = NULL;
        const char *fmt, *del_fmt;
 {
        char *blob = NULL, *esc_blob = NULL, *q = NULL, *tmp = NULL;
        const char *fmt, *del_fmt;
@@ -361,13 +361,13 @@ out:
 }
 
 /* stradd */
 }
 
 /* stradd */
-int com_stradd(int fd, int argc, char *argv[])
+int com_stradd(int fd, int argc, char * const * argv)
 {
        return com_stradd_picadd(fd, argc, argv);
 }
 
 /* pic_add */
 {
        return com_stradd_picadd(fd, argc, argv);
 }
 
 /* pic_add */
-int com_picadd(int fd, int argc, char *argv[])
+int com_picadd(int fd, int argc, char * const * argv)
 {
        return com_stradd_picadd(fd, argc, argv);
 }
 {
        return com_stradd_picadd(fd, argc, argv);
 }
@@ -403,7 +403,7 @@ static int print_results(int fd, void *result,
 /*
  * verbatim
  */
 /*
  * verbatim
  */
-int com_verb(int fd, int argc, char *argv[])
+int com_verb(int fd, int argc, char * const * argv)
 {
        void *result = NULL;
        int ret;
 {
        void *result = NULL;
        int ret;
@@ -450,7 +450,7 @@ static void *get_all_attributes(void)
 /*
  * list all attributes
  */
 /*
  * list all attributes
  */
-int com_laa(int fd, int argc, __a_unused char *argv[])
+int com_laa(int fd, int argc, __a_unused char * const * argv)
 {
        void *result;
        int ret;
 {
        void *result;
        int ret;
@@ -473,7 +473,7 @@ int com_laa(int fd, int argc, __a_unused char *argv[])
 /*
  * history
  */
 /*
  * history
  */
-int com_hist(int fd, int argc, char *argv[])
+int com_hist(int fd, int argc, char * const * argv)
 {
        int ret;
        void *result = NULL;
 {
        int ret;
        void *result = NULL;
@@ -509,7 +509,7 @@ int com_hist(int fd, int argc, char *argv[])
 /*
  * get last num audio files
  */
 /*
  * get last num audio files
  */
-int com_last(int fd, int argc, char *argv[])
+int com_last(int fd, int argc, char * const * argv)
 {
        void *result = NULL;
        char *q;
 {
        void *result = NULL;
        char *q;
@@ -534,7 +534,7 @@ int com_last(int fd, int argc, char *argv[])
        return ret;
 }
 
        return ret;
 }
 
-int com_mbox(int fd, int argc, char *argv[])
+int com_mbox(int fd, int argc, char * const * argv)
 {
        void *result;
        MYSQL_ROW row;
 {
        void *result;
        MYSQL_ROW row;
@@ -740,7 +740,7 @@ err_out:
  * If filename is NULL, query will list everything, otherwise only
  * the score of given file.
  */
  * If filename is NULL, query will list everything, otherwise only
  * the score of given file.
  */
-static char *get_query(char *streamname, char *filename, int with_path)
+static char *get_query(const char *streamname, char *filename, int with_path)
 {
        char *accept_opts = NULL, *deny_opts = NULL, *score = NULL;
        char *where_clause, *order, *query;
 {
        char *accept_opts = NULL, *deny_opts = NULL, *score = NULL;
        char *where_clause, *order, *query;
@@ -951,7 +951,7 @@ static void refresh_selector_info(void)
 }
 
 /* list attributes / print database info */
 }
 
 /* list attributes / print database info */
-static int com_la_info(int fd, int argc, char *argv[])
+static int com_la_info(int fd, int argc, char * const * argv)
 {
        char *name = NULL, *meta = NULL, *atts = NULL, *dir = NULL;
        int ret, la = strcmp(argv[0], "info");
 {
        char *name = NULL, *meta = NULL, *atts = NULL, *dir = NULL;
        int ret, la = strcmp(argv[0], "info");
@@ -985,13 +985,13 @@ out:
 }
 
 /* list attributes */
 }
 
 /* list attributes */
-int com_la(int fd, int argc, char *argv[])
+int com_la(int fd, int argc, char * const * argv)
 {
        return com_la_info(fd, argc, argv);
 }
 
 /* print database info */
 {
        return com_la_info(fd, argc, argv);
 }
 
 /* print database info */
-int com_info(int fd, int argc, char *argv[])
+int com_info(int fd, int argc, char * const * argv)
 {
        return com_la_info(fd, argc, argv);
 }
 {
        return com_la_info(fd, argc, argv);
 }
@@ -1091,7 +1091,7 @@ out:
 /*
  * remove/add entries
  */
 /*
  * remove/add entries
  */
-static int com_rm_ne(__a_unused int fd, int argc, char *argv[])
+static int com_rm_ne(__a_unused int fd, int argc, char * const * argv)
 {
        int ne = !strcmp(argv[0], "ne");
        int i, ret;
 {
        int ne = !strcmp(argv[0], "ne");
        int i, ret;
@@ -1113,7 +1113,7 @@ static int com_rm_ne(__a_unused int fd, int argc, char *argv[])
 /*
  * rm
  */
 /*
  * rm
  */
-int com_rm(int fd, int argc, char *argv[])
+int com_rm(int fd, int argc, char * const * argv)
 {
        return com_rm_ne(fd, argc, argv);
 }
 {
        return com_rm_ne(fd, argc, argv);
 }
@@ -1121,7 +1121,7 @@ int com_rm(int fd, int argc, char *argv[])
 /*
  * ne
  */
 /*
  * ne
  */
-int com_ne(int fd, int argc, char *argv[])
+int com_ne(int fd, int argc, char * const * argv)
 {
        return com_ne(fd, argc, argv);
 }
 {
        return com_ne(fd, argc, argv);
 }
@@ -1129,7 +1129,7 @@ int com_ne(int fd, int argc, char *argv[])
 /*
  * mv: rename entry
  */
 /*
  * mv: rename entry
  */
-int com_mv(__a_unused int fd, int argc, char *argv[])
+int com_mv(__a_unused int fd, int argc, char * const * argv)
 {
        char *q, *dn, *ebn1 = NULL, *ebn2 = NULL, *edn = NULL;
        int ret;
 {
        char *q, *dn, *ebn1 = NULL, *ebn2 = NULL, *edn = NULL;
        int ret;
@@ -1187,7 +1187,7 @@ out:
 /*
  * set field
  */
 /*
  * set field
  */
-static int com_set(__a_unused int fd, int argc, char *argv[])
+static int com_set(__a_unused int fd, int argc, char * const * argv)
 {
        char *q, *ebn;
        long unsigned id;
 {
        char *q, *ebn;
        long unsigned id;
@@ -1215,7 +1215,7 @@ static int com_set(__a_unused int fd, int argc, char *argv[])
 /*
  * snp: set numplayed
  */
 /*
  * snp: set numplayed
  */
-int com_picass(int fd, int argc, char *argv[])
+int com_picass(int fd, int argc, char * const * argv)
 {
        return com_set(fd, argc, argv);
 }
 {
        return com_set(fd, argc, argv);
 }
@@ -1223,7 +1223,7 @@ int com_picass(int fd, int argc, char *argv[])
 /*
  * snp: set numplayed
  */
 /*
  * snp: set numplayed
  */
-int com_snp(int fd, int argc, char *argv[])
+int com_snp(int fd, int argc, char * const * argv)
 {
        int ret = com_set(fd, argc, argv);
        if (ret >= 0)
 {
        int ret = com_set(fd, argc, argv);
        if (ret >= 0)
@@ -1234,7 +1234,7 @@ int com_snp(int fd, int argc, char *argv[])
 /*
  * picch: change entry's name in pics table
  */
 /*
  * picch: change entry's name in pics table
  */
-int com_picch(__a_unused int fd, int argc, char *argv[])
+int com_picch(__a_unused int fd, int argc, char * const * argv)
 {
        int ret;
        long unsigned id;
 {
        int ret;
        long unsigned id;
@@ -1257,7 +1257,7 @@ int com_picch(__a_unused int fd, int argc, char *argv[])
 /*
  * piclist: print list of pics in db
  */
 /*
  * piclist: print list of pics in db
  */
-int com_piclist(__a_unused int fd, int argc, __a_unused char *argv[])
+int com_piclist(__a_unused int fd, int argc, __a_unused char * const * argv)
 {
        void *result = NULL;
        MYSQL_ROW row;
 {
        void *result = NULL;
        MYSQL_ROW row;
@@ -1286,7 +1286,7 @@ out:
 /*
  * picdel: delete picture from database
  */
 /*
  * picdel: delete picture from database
  */
-int com_picdel(int fd, int argc, char *argv[])
+int com_picdel(int fd, int argc, char * const * argv)
 {
        char *q;
        long unsigned id;
 {
        char *q;
        long unsigned id;
@@ -1318,7 +1318,7 @@ int com_picdel(int fd, int argc, char *argv[])
 /*
  * pic: get picture by name or by number
  */
 /*
  * pic: get picture by name or by number
  */
-int com_pic(int fd, int argc, char *argv[])
+int com_pic(int fd, int argc, char * const * argv)
 {
        void *result = NULL;
        MYSQL_ROW row;
 {
        void *result = NULL;
        MYSQL_ROW row;
@@ -1359,7 +1359,7 @@ out:
 }
 
 /* strdel */
 }
 
 /* strdel */
-int com_strdel(__a_unused int fd, int argc, char *argv[])
+int com_strdel(__a_unused int fd, int argc, char * const * argv)
 {
        char *q, *tmp;
        int ret;
 {
        char *q, *tmp;
        int ret;
@@ -1379,7 +1379,7 @@ int com_strdel(__a_unused int fd, int argc, char *argv[])
 /*
  * ls
  */
 /*
  * ls
  */
-int com_ls(int fd, int argc, char *argv[])
+int com_ls(int fd, int argc, char * const * argv)
 {
        char *q;
        void *result;
 {
        char *q;
        void *result;
@@ -1412,7 +1412,7 @@ int com_ls(int fd, int argc, char *argv[])
 /*
  * summary
  */
 /*
  * summary
  */
-int com_summary(__a_unused int fd, int argc, __a_unused char *argv[])
+int com_summary(__a_unused int fd, int argc, __a_unused char * const * argv)
 {
        MYSQL_ROW row;
        MYSQL_ROW row2;
 {
        MYSQL_ROW row;
        MYSQL_ROW row2;
@@ -1478,7 +1478,7 @@ out:
        return ret;
 }
 
        return ret;
 }
 
-static int update_audio_file(char *name)
+static int update_audio_file(const char *name)
 {
        int ret;
        const char *fmt1 = "update data set lastplayed = now() where name = '%s'";
 {
        int ret;
        const char *fmt1 = "update data set lastplayed = now() where name = '%s'";
@@ -1514,7 +1514,7 @@ static void update_audio_file_server_handler(char *name)
        update_audio_file(name);
 }
 
        update_audio_file(name);
 }
 
-int com_us(__a_unused int fd, int argc, char *argv[])
+int com_us(__a_unused int fd, int argc, char * const * argv)
 {
        char *tmp;
        int ret;
 {
        char *tmp;
        int ret;
@@ -1532,7 +1532,7 @@ int com_us(__a_unused int fd, int argc, char *argv[])
 }
 
 /* select previous / next stream */
 }
 
 /* select previous / next stream */
-static int com_ps_ns(__a_unused int fd, int argc, char *argv[])
+static int com_ps_ns(__a_unused int fd, int argc, char * const * argv)
 {
        char *query, *stream = get_current_stream();
        void *result = get_result("select name from streams");
 {
        char *query, *stream = get_current_stream();
        void *result = get_result("select name from streams");
@@ -1598,19 +1598,19 @@ out:
 }
 
 /* select previous stream */
 }
 
 /* select previous stream */
-int com_ps(int fd, int argc, char *argv[])
+int com_ps(int fd, int argc, char * const * argv)
 {
        return com_ps_ns(fd, argc, argv);
 }
 
 /* select next stream */
 {
        return com_ps_ns(fd, argc, argv);
 }
 
 /* select next stream */
-int com_ns(int fd, int argc, char *argv[])
+int com_ns(int fd, int argc, char * const * argv)
 {
        return com_ps_ns(fd, argc, argv);
 }
 
 /* streams */
 {
        return com_ps_ns(fd, argc, argv);
 }
 
 /* streams */
-int com_streams(int fd, int argc, __a_unused char *argv[])
+int com_streams(int fd, int argc, __a_unused char * const * argv)
 {
        unsigned int num_rows;
        int i, ret = -E_NORESULT;
 {
        unsigned int num_rows;
        int i, ret = -E_NORESULT;
@@ -1648,7 +1648,7 @@ out:
 }
 
 /* query stream definition */
 }
 
 /* query stream definition */
-int com_strq(int fd, int argc, char *argv[])
+int com_strq(int fd, int argc, char * const * argv)
 {
        MYSQL_ROW row;
        char *query, *name;
 {
        MYSQL_ROW row;
        char *query, *name;
@@ -1684,7 +1684,7 @@ out:
 }
 
 /* change stream / change stream and play */
 }
 
 /* change stream / change stream and play */
-static int com_cs_csp(int fd, int argc, char *argv[])
+static int com_cs_csp(int fd, int argc, char * const * argv)
 {
        int ret, stream_change;
        char *query, *stream = NULL;
 {
        int ret, stream_change;
        char *query, *stream = NULL;
@@ -1732,19 +1732,19 @@ out:
 }
 
 /* change stream */
 }
 
 /* change stream */
-int com_cs(int fd, int argc, char *argv[])
+int com_cs(int fd, int argc, char * const * argv)
 {
        return com_cs_csp(fd, argc, argv);
 }
 
 /* change stream and play */
 {
        return com_cs_csp(fd, argc, argv);
 }
 
 /* change stream and play */
-int com_csp(int fd, int argc, char *argv[])
+int com_csp(int fd, int argc, char * const * argv)
 {
        return com_cs_csp(fd, argc, argv);
 }
 
 /* score list / skip */
 {
        return com_cs_csp(fd, argc, argv);
 }
 
 /* score list / skip */
-static int com_sl_skip(int fd, int argc, char *argv[])
+static int com_sl_skip(int fd, int argc, char * const * argv)
 {
        void *result = NULL;
        MYSQL_ROW row;
 {
        void *result = NULL;
        MYSQL_ROW row;
@@ -1797,13 +1797,13 @@ out:
 }
 
 /* score list */
 }
 
 /* score list */
-int com_sl(int fd, int argc, char *argv[])
+int com_sl(int fd, int argc, char * const * argv)
 {
        return com_sl_skip(fd, argc, argv);
 }
 
 /* skip */
 {
        return com_sl_skip(fd, argc, argv);
 }
 
 /* skip */
-int com_skip(int fd, int argc, char *argv[])
+int com_skip(int fd, int argc, char * const * argv)
 {
        return com_sl_skip(fd, argc, argv);
 }
 {
        return com_sl_skip(fd, argc, argv);
 }
@@ -1811,7 +1811,7 @@ int com_skip(int fd, int argc, char *argv[])
 /*
  * update attributes of name
  */
 /*
  * update attributes of name
  */
-static int update_atts(int fd, char *name, char *atts)
+static int update_atts(int fd, const char *name, char *atts)
 {
        int ret;
        char *ebn, *q, *old, *new = NULL;
 {
        int ret;
        char *ebn, *q, *old, *new = NULL;
@@ -1840,7 +1840,7 @@ out:
 /*
  * set attributes
  */
 /*
  * set attributes
  */
-int com_sa(int fd, int argc, char *argv[])
+int com_sa(int fd, int argc, char * const * argv)
 {
        int i, ret;
        char *atts = NULL, *name;
 {
        int i, ret;
        char *atts = NULL, *name;
@@ -1849,12 +1849,12 @@ int com_sa(int fd, int argc, char *argv[])
                return -E_MYSQL_SYNTAX;
        for (i = 1; i < argc; i++) {
                int unset = 0;
                return -E_MYSQL_SYNTAX;
        for (i = 1; i < argc; i++) {
                int unset = 0;
-               char *esc, *tmp, *p =argv[i];
-               int len = strlen(p);
+               char *esc, *tmp, *p;
+               int len = strlen(argv[i]);
 
                if (!len)
                        continue;
 
                if (!len)
                        continue;
-               switch (p[len - 1]) {
+               switch (argv[i][len - 1]) {
                        case '+':
                                unset = 0;
                                break;
                        case '+':
                                unset = 0;
                                break;
@@ -1864,8 +1864,10 @@ int com_sa(int fd, int argc, char *argv[])
                        default:
                                goto no_more_atts;
                }
                        default:
                                goto no_more_atts;
                }
+               p = para_strdup(argv[i]);
                p[len - 1] = '\0';
                esc = escape_str(p);
                p[len - 1] = '\0';
                esc = escape_str(p);
+               free(p);
                if (!esc)
                        return -E_ESCAPE;
                tmp = make_message("%s%s='%s'", atts? "," : "", esc,
                if (!esc)
                        return -E_ESCAPE;
                tmp = make_message("%s%s='%s'", atts? "," : "", esc,
@@ -1897,7 +1899,7 @@ out:
 /*
  * copy attributes
  */
 /*
  * copy attributes
  */
-int com_cam(int fd, int argc, char *argv[])
+int com_cam(int fd, int argc, char * const * argv)
 {
        char *name = NULL, *meta = NULL, *atts = NULL;
        int i, ret;
 {
        char *name = NULL, *meta = NULL, *atts = NULL;
        int i, ret;
@@ -1945,7 +1947,7 @@ out:
 /*
  * verify / clean
  */
 /*
  * verify / clean
  */
-static int com_vrfy_clean(int fd, int argc, __a_unused char *argv[])
+static int com_vrfy_clean(int fd, int argc, __a_unused char * const * argv)
 {
        char *query;
        int ret, vrfy_mode = strcmp(argv[0], "clean");
 {
        char *query;
        int ret, vrfy_mode = strcmp(argv[0], "clean");
@@ -1998,7 +2000,7 @@ out:
 /*
  * verify
  */
 /*
  * verify
  */
-int com_vrfy(int fd, int argc, char **argv)
+int com_vrfy(int fd, int argc, char * const * argv)
 {
        return com_vrfy_clean(fd, argc, argv);
 }
 {
        return com_vrfy_clean(fd, argc, argv);
 }
@@ -2006,7 +2008,7 @@ int com_vrfy(int fd, int argc, char **argv)
 /*
  * clean
  */
 /*
  * clean
  */
-int com_clean(int fd, int argc, char **argv)
+int com_clean(int fd, int argc, char * const * argv)
 {
        return com_vrfy_clean(fd, argc, argv);
 }
 {
        return com_vrfy_clean(fd, argc, argv);
 }
@@ -2026,7 +2028,7 @@ static int mysql_write_tmp_file(const char *dir, const char *name)
 /*
  * update database
  */
 /*
  * update database
  */
-int com_upd(int fd, int argc, __a_unused char *argv[])
+int com_upd(int fd, int argc, __a_unused char * const * argv)
 {
        char *tempname = NULL, *query = NULL;
        int ret, out_fd = -1, num = 0;
 {
        char *tempname = NULL, *query = NULL;
        int ret, out_fd = -1, num = 0;
@@ -2197,7 +2199,7 @@ static void write_msg2mmd(int success)
 }
 
 /* create database */
 }
 
 /* create database */
-int com_cdb(int fd, int argc, char *argv[])
+int com_cdb(int fd, int argc, char * const * argv)
 {
        char *query;
        int ret;
 {
        char *query;
        int ret;
index 0da63ad..6866daf 100644 (file)
@@ -110,7 +110,7 @@ out:
        return ret;
 }
 
        return ret;
 }
 
-int com_lpl(int fd, __a_unused int argc, __a_unused char *argv[])
+int com_lpl(int fd, __a_unused int argc, __a_unused char * const * const argv)
 {
        unsigned loaded = 0;
        size_t bufsize = 4096; /* guess that's enough */
 {
        unsigned loaded = 0;
        size_t bufsize = 4096; /* guess that's enough */
@@ -141,7 +141,7 @@ out:
        return ret;
 }
 
        return ret;
 }
 
-int com_ppl(int fd, __a_unused int argc, __a_unused char *argv[])
+int com_ppl(int fd, __a_unused int argc, __a_unused char * const * const argv)
 {
        unsigned i;
 
 {
        unsigned i;
 
index 36d4d58..bcbdae6 100644 (file)
@@ -38,7 +38,7 @@ static int remember_file(const char *dir, const char *name)
        return 1;
 }
 
        return 1;
 }
 
-int com_random_info(int fd, __a_unused int argc, __a_unused char *argv[])
+int com_random_info(int fd, __a_unused int argc, __a_unused char * const * const argv)
 {
        return send_buffer(fd, "Don't use for huge directories as it is "
                "very inefficient in this case.\n");
 {
        return send_buffer(fd, "Don't use for huge directories as it is "
                "very inefficient in this case.\n");
index 0cdd0e6..9c98cf6 100644 (file)
--- a/server.h
+++ b/server.h
@@ -17,7 +17,7 @@ struct server_command {
 /** the name of the command */
        const char *name;
 /** pointer to the function that handles the command */
 /** the name of the command */
        const char *name;
 /** pointer to the function that handles the command */
-       int (*handler)(int, int, char **);
+       int (*handler)(int, int, char * const * const);
 /** the privileges a user must have to execute this command */
        unsigned int perms;
 /** one-line description of the command */
 /** the privileges a user must have to execute this command */
        unsigned int perms;
 /** one-line description of the command */
index 510592a..60050ad 100644 (file)
--- a/string.c
+++ b/string.c
@@ -319,7 +319,7 @@ __must_check __malloc char *para_homedir(void)
  *
  * \return The number of substrings found in \a args.
  */
  *
  * \return The number of substrings found in \a args.
  */
-__must_check unsigned split_args(char *args, char ***argv_ptr, const char *delim)
+__must_check unsigned split_args(char *args, char *** const argv_ptr, const char *delim)
 {
        char *p = args;
        char **argv;
 {
        char *p = args;
        char **argv;
index 0c2090b..a2dfa42 100644 (file)
--- a/string.h
+++ b/string.h
@@ -25,7 +25,7 @@ __must_check __malloc char *para_tmpname(void);
 __must_check int para_mkstemp(char *template, mode_t mode);
 __must_check __malloc char *para_logname(void);
 __must_check __malloc char *para_homedir(void);
 __must_check int para_mkstemp(char *template, mode_t mode);
 __must_check __malloc char *para_logname(void);
 __must_check __malloc char *para_homedir(void);
-__must_check unsigned split_args(char *args, char ***argv_ptr, const char *delim);
+__must_check unsigned split_args(char *args, char *** const argv_ptr, const char *delim);
 __malloc char *para_hostname(void);
 void valid_fd_012(void);
 __printf_2_3 int para_printf(struct para_buffer *b, const char *fmt, ...);
 __malloc char *para_hostname(void);
 void valid_fd_012(void);
 __printf_2_3 int para_printf(struct para_buffer *b, const char *fmt, ...);