Author: jilles
Date: Thu Jun 25 17:14:06 2009
New Revision: 194977
URL: http://svn.freebsd.org/changeset/base/194977

Log:
  Fix some weirdnesses in the NetBSD IFS code,
  in particular "$@"$ifschar if the final positional parameter is empty.
  With the NetBSD code, adding the $ifschar removes a parameter.
  
  PR:           standards/79067
  Approved by:  ed (mentor) (implicit)

Modified:
  head/bin/sh/expand.c

Modified: head/bin/sh/expand.c
==============================================================================
--- head/bin/sh/expand.c        Thu Jun 25 17:11:27 2009        (r194976)
+++ head/bin/sh/expand.c        Thu Jun 25 17:14:06 2009        (r194977)
@@ -994,12 +994,12 @@ ifsbreakup(char *string, struct arglist 
        for (ifsp = &ifsfirst; ifsp != NULL; ifsp = ifsp->next) {
                p = string + ifsp->begoff;
                while (p < string + ifsp->endoff) {
-                       had_param_ch = 1;
                        q = p;
                        if (*p == CTLESC)
                                p++;
                        if (ifsp->inquotes) {
                                /* Only NULs (should be from "$@") end args */
+                               had_param_ch = 1;
                                if (*p != 0) {
                                        p++;
                                        continue;
@@ -1007,10 +1007,10 @@ ifsbreakup(char *string, struct arglist 
                                ifsspc = NULL;
                        } else {
                                if (!strchr(ifs, *p)) {
+                                       had_param_ch = 1;
                                        p++;
                                        continue;
                                }
-                               had_param_ch = 0;
                                ifsspc = strchr(" \t\n", *p);
 
                                /* Ignore IFS whitespace at start */
@@ -1019,6 +1019,7 @@ ifsbreakup(char *string, struct arglist 
                                        start = p;
                                        continue;
                                }
+                               had_param_ch = 0;
                        }
 
                        /* Save this argument... */
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to