Module Name:    src
Committed By:   dsl
Date:           Mon Dec 31 14:10:15 UTC 2012

Modified Files:
        src/bin/sh: builtins.def exec.c jobs.c

Log Message:
Add support for '%n' being a shorthand for 'fg %n'.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/bin/sh/builtins.def
cvs rdiff -u -r1.43 -r1.44 src/bin/sh/exec.c
cvs rdiff -u -r1.70 -r1.71 src/bin/sh/jobs.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/bin/sh/builtins.def
diff -u src/bin/sh/builtins.def:1.21 src/bin/sh/builtins.def:1.22
--- src/bin/sh/builtins.def:1.21	Tue Jul 13 15:05:59 2004
+++ src/bin/sh/builtins.def	Mon Dec 31 14:10:15 2012
@@ -1,5 +1,5 @@
 #!/bin/sh -
-#	$NetBSD: builtins.def,v 1.21 2004/07/13 15:05:59 seb Exp $
+#	$NetBSD: builtins.def,v 1.22 2012/12/31 14:10:15 dsl Exp $
 #
 # Copyright (c) 1991, 1993
 #	The Regents of the University of California.  All rights reserved.
@@ -60,6 +60,7 @@ falsecmd	-u false
 histcmd -h	-u fc
 inputrc		inputrc
 fgcmd -j	-u fg
+fgcmd_percent -j	-u %
 getoptscmd	-u getopts
 hashcmd		hash
 jobidcmd	jobid

Index: src/bin/sh/exec.c
diff -u src/bin/sh/exec.c:1.43 src/bin/sh/exec.c:1.44
--- src/bin/sh/exec.c:1.43	Tue Mar 20 18:42:29 2012
+++ src/bin/sh/exec.c	Mon Dec 31 14:10:15 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: exec.c,v 1.43 2012/03/20 18:42:29 matt Exp $	*/
+/*	$NetBSD: exec.c,v 1.44 2012/12/31 14:10:15 dsl Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)exec.c	8.4 (Berkeley) 6/8/95";
 #else
-__RCSID("$NetBSD: exec.c,v 1.43 2012/03/20 18:42:29 matt Exp $");
+__RCSID("$NetBSD: exec.c,v 1.44 2012/12/31 14:10:15 dsl Exp $");
 #endif
 #endif /* not lint */
 
@@ -629,7 +629,8 @@ int
 	const struct builtincmd *bp;
 
 	for (bp = builtincmd ; bp->name ; bp++) {
-		if (*bp->name == *name && equal(bp->name, name))
+		if (*bp->name == *name
+		    && (*name == '%' || equal(bp->name, name)))
 			return bp->builtin;
 	}
 	return 0;

Index: src/bin/sh/jobs.c
diff -u src/bin/sh/jobs.c:1.70 src/bin/sh/jobs.c:1.71
--- src/bin/sh/jobs.c:1.70	Thu Feb 23 18:23:33 2012
+++ src/bin/sh/jobs.c	Mon Dec 31 14:10:15 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: jobs.c,v 1.70 2012/02/23 18:23:33 joerg Exp $	*/
+/*	$NetBSD: jobs.c,v 1.71 2012/12/31 14:10:15 dsl Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)jobs.c	8.5 (Berkeley) 5/4/95";
 #else
-__RCSID("$NetBSD: jobs.c,v 1.70 2012/02/23 18:23:33 joerg Exp $");
+__RCSID("$NetBSD: jobs.c,v 1.71 2012/12/31 14:10:15 dsl Exp $");
 #endif
 #endif /* not lint */
 
@@ -249,15 +249,14 @@ SHELLPROC {
 
 
 #if JOBS
-int
-fgcmd(int argc, char **argv)
+static int
+do_fgcmd(const char *arg_ptr)
 {
 	struct job *jp;
 	int i;
 	int status;
 
-	nextopt("");
-	jp = getjob(*argptr, 0);
+	jp = getjob(arg_ptr, 0);
 	if (jp->jobctl == 0)
 		error("job not created under job control");
 	out1fmt("%s", jp->ps[0].cmd);
@@ -281,6 +280,20 @@ fgcmd(int argc, char **argv)
 	return status;
 }
 
+int
+fgcmd(int argc, char **argv)
+{
+	nextopt("");
+	return do_fgcmd(*argptr);
+}
+
+int
+fgcmd_percent(int argc, char **argv)
+{
+	nextopt("");
+	return do_fgcmd(*argv);
+}
+
 static void
 set_curjob(struct job *jp, int mode)
 {

Reply via email to