After discussing $_ with the maintainer, revert ksh behaviour and completely
authordownsj <downsj@openbsd.org>
Thu, 2 Jan 1997 17:37:25 +0000 (17:37 +0000)
committerdownsj <downsj@openbsd.org>
Thu, 2 Jan 1997 17:37:25 +0000 (17:37 +0000)
eliminate it from sh.

bin/ksh/exec.c
bin/ksh/history.c
bin/ksh/mail.c
bin/pdksh/exec.c
bin/pdksh/history.c
bin/pdksh/mail.c

index 079ccc9..d84987c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: exec.c,v 1.6 1997/01/02 09:33:56 downsj Exp $ */
+/*     $OpenBSD: exec.c,v 1.7 1997/01/02 17:37:25 downsj Exp $ */
 
 /*
  * execute command tree
@@ -457,14 +457,13 @@ comexec(t, tp, ap, flags)
        int type_flags;
        int keepasn_ok;
        int fcflags = FC_BI|FC_FUNC|FC_PATH;
-       volatile int underscore = (!Flag(FSH) || Flag(FTALKING));
 
        /* snag the last argument for $_ XXX not the same as at&t ksh,
         * which only seems to set $_ after a newline (but not in
         * functions/dot scripts, but in interactive and scipt) -
         * perhaps save last arg here and set it in shell()?.
         */
-       if (underscore && *(lastp = ap)) {
+       if (!Flag(FSH) && *(lastp = ap)) {
                while (*++lastp)
                        ;
                setstr(typeset("_", LOCAL, 0, 0, 0), *--lastp);
@@ -699,7 +698,7 @@ comexec(t, tp, ap, flags)
                        break;
                }
 
-               if (underscore) {
+               if (!Flag(FSH)) {
                        /* set $_ to program's full path */
                        setstr(typeset("_", LOCAL|EXPORT, 0, 0, 0), tp->val.s);
                }
index f29e7e7..295f108 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: history.c,v 1.3 1997/01/02 09:34:00 downsj Exp $      */
+/*     $OpenBSD: history.c,v 1.4 1997/01/02 17:37:26 downsj Exp $      */
 
 /*
  * command history
@@ -242,7 +242,7 @@ c_fc(wp)
                return 1;
        }
 
-       if (!Flag(FSH) || Flag(FTALKING))
+       if (!Flag(FSH))
                setstr(local("_", FALSE), tf->name);
 
        /* XXX: source should not get trashed by this.. */
index a26bde8..04033a4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mail.c,v 1.2 1996/08/19 20:08:55 downsj Exp $ */
+/*     $OpenBSD: mail.c,v 1.3 1997/01/02 17:37:27 downsj Exp $ */
 
 /*
  * Mailbox checking code by Robert J. Gibson, adapted for PD ksh by
@@ -180,7 +180,8 @@ mbox_t      *mbp;
 {
        struct tbl      *vp;
 
-       setstr((vp = local("_", FALSE)), mbp->mb_path);
+       if (!Flag(FSH))
+               setstr((vp = local("_", FALSE)), mbp->mb_path);
 
        shellf("%s\n", substitute(mbp->mb_msg ? mbp->mb_msg : MBMESSAGE, 0));
 
index 079ccc9..d84987c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: exec.c,v 1.6 1997/01/02 09:33:56 downsj Exp $ */
+/*     $OpenBSD: exec.c,v 1.7 1997/01/02 17:37:25 downsj Exp $ */
 
 /*
  * execute command tree
@@ -457,14 +457,13 @@ comexec(t, tp, ap, flags)
        int type_flags;
        int keepasn_ok;
        int fcflags = FC_BI|FC_FUNC|FC_PATH;
-       volatile int underscore = (!Flag(FSH) || Flag(FTALKING));
 
        /* snag the last argument for $_ XXX not the same as at&t ksh,
         * which only seems to set $_ after a newline (but not in
         * functions/dot scripts, but in interactive and scipt) -
         * perhaps save last arg here and set it in shell()?.
         */
-       if (underscore && *(lastp = ap)) {
+       if (!Flag(FSH) && *(lastp = ap)) {
                while (*++lastp)
                        ;
                setstr(typeset("_", LOCAL, 0, 0, 0), *--lastp);
@@ -699,7 +698,7 @@ comexec(t, tp, ap, flags)
                        break;
                }
 
-               if (underscore) {
+               if (!Flag(FSH)) {
                        /* set $_ to program's full path */
                        setstr(typeset("_", LOCAL|EXPORT, 0, 0, 0), tp->val.s);
                }
index f29e7e7..295f108 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: history.c,v 1.3 1997/01/02 09:34:00 downsj Exp $      */
+/*     $OpenBSD: history.c,v 1.4 1997/01/02 17:37:26 downsj Exp $      */
 
 /*
  * command history
@@ -242,7 +242,7 @@ c_fc(wp)
                return 1;
        }
 
-       if (!Flag(FSH) || Flag(FTALKING))
+       if (!Flag(FSH))
                setstr(local("_", FALSE), tf->name);
 
        /* XXX: source should not get trashed by this.. */
index a26bde8..04033a4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mail.c,v 1.2 1996/08/19 20:08:55 downsj Exp $ */
+/*     $OpenBSD: mail.c,v 1.3 1997/01/02 17:37:27 downsj Exp $ */
 
 /*
  * Mailbox checking code by Robert J. Gibson, adapted for PD ksh by
@@ -180,7 +180,8 @@ mbox_t      *mbp;
 {
        struct tbl      *vp;
 
-       setstr((vp = local("_", FALSE)), mbp->mb_path);
+       if (!Flag(FSH))
+               setstr((vp = local("_", FALSE)), mbp->mb_path);
 
        shellf("%s\n", substitute(mbp->mb_msg ? mbp->mb_msg : MBMESSAGE, 0));