Started by fixing gcc warning:
iceauth.c:47:1: warning: initialization discards ‘const’ qualifier from
 pointer target type [enabled by default]
 static char *defcmds[] = { "source", "-", NULL };  /* default command */
 ^

and chasing down the rabbit hole of the functions the command line
arguments can be passed through, until we came out the other side
const clean.

Signed-off-by: Alan Coopersmith <[email protected]>
---
 iceauth.c |    6 ++---
 iceauth.h |    2 +-
 process.c |   73 +++++++++++++++++++++++++++++++------------------------------
 3 files changed, 41 insertions(+), 40 deletions(-)

diff --git a/iceauth.c b/iceauth.c
index dfd1269..926aec6 100644
--- a/iceauth.c
+++ b/iceauth.c
@@ -44,7 +44,7 @@ Bool break_locks = False;             /* for error recovery */
  */
 
 static char *authfilename = NULL;      /* filename of cookie file */
-static char *defcmds[] = { "source", "-", NULL };  /* default command */
+static const char *defcmds[] = { "source", "-", NULL };  /* default command */
 static int ndefcmds = 2;
 static const char *defsource = "(stdin)";
 
@@ -87,7 +87,7 @@ main (int argc, char *argv[])
 {
     int i;
     const char *sourcename = defsource;
-    char **arglist = defcmds;
+    const char **arglist = defcmds;
     int nargs = ndefcmds;
     int status;
 
@@ -135,7 +135,7 @@ main (int argc, char *argv[])
        } else {
            sourcename = "(argv)";
            nargs = argc - i;
-           arglist = argv + i;
+           arglist = (const char **) argv + i;
            if (verbose == -1) verbose = 0;
            break;
        }
diff --git a/iceauth.h b/iceauth.h
index d8ea662..e4ccf48 100644
--- a/iceauth.h
+++ b/iceauth.h
@@ -47,7 +47,7 @@ extern const char *ProgramName;
 
 extern int auth_initialize ( char *authfilename );
 extern int auth_finalize ( void );
-extern int process_command ( const char *inputfilename, int lineno, int argc, 
char **argv );
+extern int process_command ( const char *inputfilename, int lineno, int argc, 
const char **argv );
 extern int print_help ( FILE *fp, const char *cmd );
 
 extern int verbose;
diff --git a/process.c b/process.c
index 6f7396d..53b4ba5 100644
--- a/process.c
+++ b/process.c
@@ -47,7 +47,7 @@ typedef struct _AuthList {            /* linked list of 
entries */
 
 #define add_to_list(h,t,e) {if (t) (t)->next = (e); else (h) = (e); (t) = (e);}
 
-typedef int (*ProcessFunc)(const char *, int, int, char **);
+typedef int (*ProcessFunc)(const char *, int, int, const char **);
 typedef int (*DoFunc)(const char *, int, IceAuthFileEntry *, void *);
 
 typedef struct _CommandTable {         /* commands that are understood */
@@ -88,7 +88,7 @@ static char **split_into_words ( char *src, int *argcp );
 static FILE *open_file ( const char **filenamep, const char *mode, Bool 
*usedstdp, const char *srcfn, int srcln, const char *cmd );
 static int read_auth_entries ( FILE *fp, AuthList **headp, AuthList **tailp );
 static int cvthexkey ( const char *hexstr, char **ptrp );
-static int dispatch_command ( const char *inputfilename, int lineno, int argc, 
char **argv, const CommandTable *tab, int *statusp );
+static int dispatch_command ( const char *inputfilename, int lineno, int argc, 
const char **argv, const CommandTable *tab, int *statusp );
 static void die ( int sig ) _X_NORETURN;
 static void catchsig ( int sig ) _X_NORETURN;
 static void register_signals ( void );
@@ -98,19 +98,19 @@ static int dump_entry ( const char *inputfilename, int 
lineno, IceAuthFileEntry
 static int extract_entry ( const char *inputfilename, int lineno, 
IceAuthFileEntry *auth, void *data );
 static int match_auth ( IceAuthFileEntry *a, IceAuthFileEntry *b, int 
*authDataSame );
 static int merge_entries ( AuthList **firstp, AuthList *second, int *nnewp, 
int *nreplp, int *ndupp );
-static int search_and_do ( const char *inputfilename, int lineno, int start, 
int argc, char *argv[], DoFunc do_func, void *data );
+static int search_and_do ( const char *inputfilename, int lineno, int start, 
int argc, const char *argv[], DoFunc do_func, void *data );
 static int remove_entry ( const char *inputfilename, int lineno, 
IceAuthFileEntry *auth, void *data );
-static int do_help ( const char *inputfilename, int lineno, int argc, char 
**argv );
-static int do_questionmark ( const char *inputfilename, int lineno, int argc, 
char **argv );
-static int do_list ( const char *inputfilename, int lineno, int argc, char 
**argv );
-static int do_merge ( const char *inputfilename, int lineno, int argc, char 
**argv );
-static int do_extract ( const char *inputfilename, int lineno, int argc, char 
**argv );
-static int do_add ( const char *inputfilename, int lineno, int argc, char 
**argv );
-static int do_remove ( const char *inputfilename, int lineno, int argc, char 
**argv );
-static int do_info ( const char *inputfilename, int lineno, int argc, char 
**argv );
-static int do_exit ( const char *inputfilename, int lineno, int argc, char 
**argv );
-static int do_quit ( const char *inputfilename, int lineno, int argc, char 
**argv );
-static int do_source ( const char *inputfilename, int lineno, int argc, char 
**argv );
+static int do_help ( const char *inputfilename, int lineno, int argc, const 
char **argv );
+static int do_questionmark ( const char *inputfilename, int lineno, int argc, 
const char **argv );
+static int do_list ( const char *inputfilename, int lineno, int argc, const 
char **argv );
+static int do_merge ( const char *inputfilename, int lineno, int argc, const 
char **argv );
+static int do_extract ( const char *inputfilename, int lineno, int argc, const 
char **argv );
+static int do_add ( const char *inputfilename, int lineno, int argc, const 
char **argv );
+static int do_remove ( const char *inputfilename, int lineno, int argc, const 
char **argv );
+static int do_info ( const char *inputfilename, int lineno, int argc, const 
char **argv );
+static int do_exit ( const char *inputfilename, int lineno, int argc, const 
char **argv );
+static int do_quit ( const char *inputfilename, int lineno, int argc, const 
char **argv );
+static int do_source ( const char *inputfilename, int lineno, int argc, const 
char **argv );
 
 static const CommandTable command_table[] = {  /* table of known commands */
 { "add", 2, 3, do_add,
@@ -443,7 +443,7 @@ static int dispatch_command (
     const char *inputfilename,
     int lineno,
     int argc,
-    char **argv,
+    const char **argv,
     const CommandTable *tab,
     int *statusp)
 {
@@ -714,7 +714,7 @@ int process_command (
     const char *inputfilename,
     int lineno,
     int argc,
-    char **argv)
+    const char **argv)
 {
     int status;
 
@@ -924,7 +924,7 @@ static int search_and_do (
     int lineno,
     int start,
     int argc,
-    char *argv[],
+    const char *argv[],
     DoFunc do_func,
     void *data)
 {
@@ -932,7 +932,7 @@ static int search_and_do (
     int status = 0;
     int errors = 0;
     AuthList *l, *next;
-    char *protoname, *protodata, *netid, *authname;
+    const char *protoname, *protodata, *netid, *authname;
 
     for (l = iceauth_head; l; l = next)
     {
@@ -1044,9 +1044,9 @@ static int do_help (
     const char *inputfilename,
     int lineno,
     int argc,
-    char **argv)
+    const char **argv)
 {
-    char *cmd = (argc > 1 ? argv[1] : NULL);
+    const char *cmd = (argc > 1 ? argv[1] : NULL);
     int n;
 
     n = print_help (stdout, cmd);
@@ -1078,7 +1078,7 @@ static int do_questionmark (
     const char *inputfilename _X_UNUSED,
     int lineno _X_UNUSED,
     int argc _X_UNUSED,
-    char **argv _X_UNUSED)
+    const char **argv _X_UNUSED)
 {
     const CommandTable *ct;
     unsigned int i;
@@ -1116,7 +1116,7 @@ static int do_list (
     const char *inputfilename,
     int lineno,
     int argc,
-    char **argv)
+    const char **argv)
 {
     struct _list_data ld;
 
@@ -1146,7 +1146,7 @@ static int do_merge (
     const char *inputfilename,
     int lineno,
     int argc,
-    char **argv)
+    const char **argv)
 {
     int i;
     int errors = 0;
@@ -1210,7 +1210,7 @@ static int do_extract (
     const char *inputfilename,
     int lineno,
     int argc,
-    char **argv)
+    const char **argv)
 {
     int errors;
     struct _extract_data ed;
@@ -1254,15 +1254,15 @@ static int do_add (
     const char *inputfilename,
     int lineno,
     int argc,
-    char **argv)
+    const char **argv)
 { 
     int n, nnew, nrepl, ndup;
-    char *protoname;
-    char *protodata_hex;
+    const char *protoname;
+    const char *protodata_hex;
     char *protodata = NULL; /* not required */
-    char *netid;
-    char *authname;
-    char *authdata_hex;
+    const char *netid;
+    const char *authname;
+    const char *authdata_hex;
     char *authdata = NULL;
     int protodata_len, authdata_len;
     IceAuthFileEntry *auth = NULL;
@@ -1436,7 +1436,7 @@ static int do_remove (
     const char *inputfilename,
     int lineno,
     int argc,
-    char **argv)
+    const char **argv)
 {
     int nremoved = 0;
     int errors;
@@ -1460,7 +1460,7 @@ static int do_info (
     const char *inputfilename,
     int lineno,
     int argc,
-    char **argv)
+    const char **argv)
 {
     int n;
     AuthList *l;
@@ -1495,7 +1495,7 @@ static int do_exit (
     const char *inputfilename _X_UNUSED,
     int lineno _X_UNUSED,
     int argc _X_UNUSED,
-    char **argv _X_UNUSED)
+    const char **argv _X_UNUSED)
 {
     /* allow bogus stuff */
     alldone = True;
@@ -1510,7 +1510,7 @@ static int do_quit (
     const char *inputfilename _X_UNUSED,
     int lineno _X_UNUSED,
     int argc _X_UNUSED,
-    char **argv _X_UNUSED)
+    const char **argv _X_UNUSED)
 {
     /* allow bogus stuff */
     die (0);
@@ -1526,7 +1526,7 @@ static int do_source (
     const char *inputfilename,
     int lineno,
     int argc,
-    char **argv)
+    const char **argv)
 {
     const char *script;
     char buf[BUFSIZ];
@@ -1573,7 +1573,8 @@ static int do_source (
        buf[--len] = '\0';              /* remove new line */
        subargv = split_into_words (buf, &subargc);
        if (subargv) {
-           status = process_command (script, sublineno, subargc, subargv);
+           status = process_command (script, sublineno, subargc,
+                                      (const char **) subargv);
            free ((char *) subargv);
            errors += status;
        } else {
-- 
1.7.9.2

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to