msh: cleaning up for -Wwrite-strings part #3
authorDenis Vlasenko <vda.linux@googlemail.com>
Thu, 1 Feb 2007 01:43:39 +0000 (01:43 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Thu, 1 Feb 2007 01:43:39 +0000 (01:43 -0000)
shell/msh.c

index d821dfd..754a6fc 100644 (file)
@@ -284,7 +284,6 @@ static void onintr(int s);          /* SIGINT handler */
 
 static int newenv(int f);
 static void quitenv(void);
-static void err(const char *s);
 static int anys(const char *s1, const char *s2);
 static int any(int c, const char *s);
 static void next(int f);
@@ -344,8 +343,6 @@ typedef union {
 /* flags to yylex */
 #define        CONTIN 01     /* skip new lines to complete command */
 
-#define        SYNTAXERR zzerr()
-
 static struct op *pipeline(int cf);
 static struct op *andor(void);
 static struct op *c_list(void);
@@ -369,8 +366,6 @@ static char **copyw(void);
 static void word(char *cp);
 static struct ioword **copyio(void);
 static struct ioword *io(int u, int f, char *cp);
-static void zzerr(void);
-static void yyerror(char *s);
 static int yylex(int cf);
 static int collect(int c, int c1);
 static int dual(int c);
@@ -461,17 +456,10 @@ static int herein(char *hname, int xdoll);
 static int run(struct ioarg *argp, int (*f) (struct ioarg *));
 
 
-/*
- * IO functions
- */
 static int eofc(void);
 static int readc(void);
 static void unget(int c);
 static void ioecho(char c);
-static void prs(const char *s);
-static void prn(unsigned u);
-static void closef(int i);
-static void closeall(void);
 
 
 /*
@@ -734,10 +722,40 @@ void print_tree(struct op *head)
        if (head->right)
                print_tree(head->right);
 }
-#endif                                                 /* MSHDEBUG */
+#endif /* MSHDEBUG */
+
+
+/*
+ * IO functions
+ */
+static void prs(const char *s)
+{
+       if (*s)
+               write(2, s, strlen(s));
+}
+
+static void prn(unsigned u)
+{
+       prs(itoa(u));
+}
+
+static void closef(int i)
+{
+       if (i > 2)
+               close(i);
+}
+
+static void closeall(void)
+{
+       int u;
+
+       for (u = NUFILE; u < NOFILE;)
+               close(u++);
+}
 
 
 /* fail but return to process next command */
+static void fail(void) ATTRIBUTE_NORETURN;
 static void fail(void)
 {
        longjmp(failpt, 1);
@@ -783,6 +801,7 @@ static void err(const char *s)
        e.iop = e.iobase = iostack;
 }
 
+
 /* -------- area.c -------- */
 
 /*
@@ -967,6 +986,7 @@ static char *strsave(const char *s, int a)
        return "";
 }
 
+
 /* -------- var.c -------- */
 
 static int eqname(const char *n1, const char *n2)
@@ -1487,6 +1507,24 @@ static char *cclass(char *p, int sub)
  * shell: syntax (C version)
  */
 
+static void yyerror(const char *s) ATTRIBUTE_NORETURN;
+static void yyerror(const char *s)
+{
+       yynerrs++;
+       if (interactive && e.iop <= iostack) {
+               multiline = 0;
+               while (eofc() == 0 && yylex(0) != '\n');
+       }
+       err(s);
+       fail();
+}
+
+static void zzerr(void) ATTRIBUTE_NORETURN;
+static void zzerr(void)
+{
+       yyerror("syntax error");
+}
+
 int yyparse(void)
 {
        DBGPRINTF7(("YYPARSE: enter...\n"));
@@ -1515,7 +1553,7 @@ static struct op *pipeline(int cf)
                        p = command(CONTIN);
                        if (p == NULL) {
                                DBGPRINTF8(("PIPELINE: error!\n"));
-                               SYNTAXERR;
+                               zzerr();
                        }
 
                        if (t->type != TPAREN && t->type != TCOM) {
@@ -1548,7 +1586,7 @@ static struct op *andor(void)
                        p = pipeline(CONTIN);
                        if (p == NULL) {
                                DBGPRINTF8(("ANDOR: error!\n"));
-                               SYNTAXERR;
+                               zzerr();
                        }
 
                        t = block(c == LOGAND ? TAND : TOR, t, p, NOWORDS);
@@ -1627,7 +1665,7 @@ static void musthave(int c, int cf)
        peeksym = yylex(cf);
        if (peeksym != c) {
                DBGPRINTF7(("MUSTHAVE: error!\n"));
-               SYNTAXERR;
+               zzerr();
        }
 
        peeksym = 0;
@@ -1811,7 +1849,7 @@ static struct op *dogroup(int onlydone)
        if (c == DONE && onlydone)
                return NULL;
        if (c != DO)
-               SYNTAXERR;
+               zzerr();
        mylist = c_list();
        musthave(DONE, 0);
        return mylist;
@@ -1831,7 +1869,7 @@ static struct op *thenpart(void)
        t->type = 0;
        t->left = c_list();
        if (t->left == NULL)
-               SYNTAXERR;
+               zzerr();
        t->right = elsepart();
        return t;
 }
@@ -1845,7 +1883,7 @@ static struct op *elsepart(void)
        case ELSE:
                t = c_list();
                if (t == NULL)
-                       SYNTAXERR;
+                       zzerr();
                return t;
 
        case ELIF:
@@ -2058,22 +2096,6 @@ static struct ioword *io(int u, int f, char *cp)
        return iop;
 }
 
-static void zzerr(void)
-{
-       yyerror("syntax error");
-}
-
-static void yyerror(char *s)
-{
-       yynerrs++;
-       if (interactive && e.iop <= iostack) {
-               multiline = 0;
-               while (eofc() == 0 && yylex(0) != '\n');
-       }
-       err(s);
-       fail();
-}
-
 static int yylex(int cf)
 {
        int c, c1;
@@ -4803,32 +4825,6 @@ static int linechar(struct ioarg *ap)
        return c;
 }
 
-static void prs(const char *s)
-{
-       if (*s)
-               write(2, s, strlen(s));
-}
-
-static void prn(unsigned u)
-{
-       prs(itoa(u));
-}
-
-static void closef(int i)
-{
-       if (i > 2)
-               close(i);
-}
-
-static void closeall(void)
-{
-       int u;
-
-       for (u = NUFILE; u < NOFILE;)
-               close(u++);
-}
-
-
 /*
  * remap fd into Shell's fd space
  */