Author: jilles
Date: Sun Dec 21 22:18:30 2014
New Revision: 276037
URL: https://svnweb.freebsd.org/changeset/base/276037

Log:
  sh: Remove EXP_REDIR.
  
  EXP_REDIR was supposed to generate pathnames in redirection if exactly one
  file matches, as permitted but not required by POSIX in interactive mode. It
  is unlikely this will be implemented.
  
  No functional change is intended.
  
  MFC after:    1 week

Modified:
  head/bin/sh/eval.c
  head/bin/sh/expand.c
  head/bin/sh/expand.h

Modified: head/bin/sh/eval.c
==============================================================================
--- head/bin/sh/eval.c  Sun Dec 21 22:08:17 2014        (r276036)
+++ head/bin/sh/eval.c  Sun Dec 21 22:18:30 2014        (r276037)
@@ -539,13 +539,13 @@ expredir(union node *n)
                case NFROMTO:
                case NAPPEND:
                case NCLOBBER:
-                       expandarg(redir->nfile.fname, &fn, EXP_TILDE | 
EXP_REDIR);
+                       expandarg(redir->nfile.fname, &fn, EXP_TILDE);
                        redir->nfile.expfname = fn.list->text;
                        break;
                case NFROMFD:
                case NTOFD:
                        if (redir->ndup.vname) {
-                               expandarg(redir->ndup.vname, &fn, EXP_TILDE | 
EXP_REDIR);
+                               expandarg(redir->ndup.vname, &fn, EXP_TILDE);
                                fixredir(redir, fn.list->text, 1);
                        }
                        break;

Modified: head/bin/sh/expand.c
==============================================================================
--- head/bin/sh/expand.c        Sun Dec 21 22:08:17 2014        (r276036)
+++ head/bin/sh/expand.c        Sun Dec 21 22:18:30 2014        (r276037)
@@ -171,17 +171,12 @@ expandarg(union node *arg, struct arglis
        STPUTC('\0', expdest);
        p = grabstackstr(expdest);
        exparg.lastp = &exparg.list;
-       /*
-        * TODO - EXP_REDIR
-        */
        if (flag & EXP_FULL) {
                ifsbreakup(p, &exparg);
                *exparg.lastp = NULL;
                exparg.lastp = &exparg.list;
                expandmeta(exparg.list, flag);
        } else {
-               if (flag & EXP_REDIR) /*XXX - for now, just remove escapes */
-                       rmescapes(p);
                sp = (struct strlist *)stalloc(sizeof (struct strlist));
                sp->text = p;
                *exparg.lastp = sp;
@@ -209,7 +204,7 @@ expandarg(union node *arg, struct arglis
  * expansion, and tilde expansion if requested via EXP_TILDE/EXP_VARTILDE.
  * Processing ends at a CTLENDVAR or CTLENDARI character as well as '\0'.
  * This is used to expand word in ${var+word} etc.
- * If EXP_FULL, EXP_CASE or EXP_REDIR are set, keep and/or generate CTLESC
+ * If EXP_FULL or EXP_CASE are set, keep and/or generate CTLESC
  * characters to allow for further processing.
  * If EXP_FULL is set, also preserve CTLQUOTEMARK characters.
  */
@@ -217,7 +212,7 @@ static char *
 argstr(char *p, int flag)
 {
        char c;
-       int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);  /* do CTLESC */
+       int quotes = flag & (EXP_FULL | EXP_CASE);      /* do CTLESC */
        int firsteq = 1;
        int split_lit;
        int lit_quoted;
@@ -303,7 +298,7 @@ exptilde(char *p, int flag)
        char c, *startp = p;
        struct passwd *pw;
        char *home;
-       int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
+       int quotes = flag & (EXP_FULL | EXP_CASE);
 
        while ((c = *p) != '\0') {
                switch(c) {
@@ -437,7 +432,7 @@ expbackq(union node *cmd, int quoted, in
        char lastc;
        int startloc = dest - stackblock();
        char const *syntax = quoted? DQSYNTAX : BASESYNTAX;
-       int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
+       int quotes = flag & (EXP_FULL | EXP_CASE);
        size_t nnl;
 
        INTOFF;
@@ -637,7 +632,7 @@ evalvar(char *p, int flag)
        int varlen;
        int varlenb;
        int easy;
-       int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
+       int quotes = flag & (EXP_FULL | EXP_CASE);
 
        varflags = (unsigned char)*p++;
        subtype = varflags & VSTYPE;
@@ -862,7 +857,7 @@ varisset(const char *name, int nulok)
 static void
 strtodest(const char *p, int flag, int subtype, int quoted)
 {
-       if (flag & (EXP_FULL | EXP_CASE | EXP_REDIR) && subtype != VSLENGTH)
+       if (flag & (EXP_FULL | EXP_CASE) && subtype != VSLENGTH)
                STPUTS_QUOTES(p, quoted ? DQSYNTAX : BASESYNTAX, expdest);
        else
                STPUTS(p, expdest);
@@ -1104,7 +1099,6 @@ expandmeta(struct strlist *str, int flag
        struct strlist **savelastp;
        struct strlist *sp;
        char c;
-       /* TODO - EXP_REDIR */
 
        while (str) {
                savelastp = exparg.lastp;

Modified: head/bin/sh/expand.h
==============================================================================
--- head/bin/sh/expand.h        Sun Dec 21 22:08:17 2014        (r276036)
+++ head/bin/sh/expand.h        Sun Dec 21 22:18:30 2014        (r276037)
@@ -50,7 +50,6 @@ struct arglist {
 #define EXP_FULL       0x1     /* perform word splitting & file globbing */
 #define EXP_TILDE      0x2     /* do normal tilde expansion */
 #define        EXP_VARTILDE    0x4     /* expand tildes in an assignment */
-#define        EXP_REDIR       0x8     /* file glob for a redirection (1 match 
only) */
 #define EXP_CASE       0x10    /* keeps quotes around for CASE pattern */
 #define EXP_SPLIT_LIT  0x20    /* IFS split literal text ${v+-a b c} */
 #define EXP_LIT_QUOTED 0x40    /* for EXP_SPLIT_LIT, start off quoted */
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to