• Check if killpg(3) is available; if not, use kill(2) with negative
process ID and hope it works (is POSIXly killpg-endowed) • bump version • sync clog
This commit is contained in:
8
Build.sh
8
Build.sh
@@ -1,5 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.399 2009/06/07 22:26:00 tg Exp $'
|
srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.400 2009/06/08 20:34:37 tg Exp $'
|
||||||
#-
|
#-
|
||||||
# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
# Thorsten Glaser <tg@mirbsd.org>
|
# Thorsten Glaser <tg@mirbsd.org>
|
||||||
@@ -378,7 +378,6 @@ Plan9)
|
|||||||
PW32*)
|
PW32*)
|
||||||
HAVE_SIG_T=0 # incompatible
|
HAVE_SIG_T=0 # incompatible
|
||||||
warn=' and will currently not work'
|
warn=' and will currently not work'
|
||||||
# missing: killpg()
|
|
||||||
: ${HAVE_SETLOCALE_CTYPE=0}
|
: ${HAVE_SETLOCALE_CTYPE=0}
|
||||||
;;
|
;;
|
||||||
QNX)
|
QNX)
|
||||||
@@ -1127,6 +1126,11 @@ ac_test getrusage <<-'EOF'
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
ac_test killpg <<-'EOF'
|
||||||
|
#include <signal.h>
|
||||||
|
int main(int ac) { return (killpg(123, ac)); }
|
||||||
|
EOF
|
||||||
|
|
||||||
ac_test mknod '' 'if to use mknod(), makedev() and friends' <<-'EOF'
|
ac_test mknod '' 'if to use mknod(), makedev() and friends' <<-'EOF'
|
||||||
#define MKSH_INCLUDES_ONLY
|
#define MKSH_INCLUDES_ONLY
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
13
Makefile
13
Makefile
@@ -1,4 +1,4 @@
|
|||||||
# $MirOS: src/bin/mksh/Makefile,v 1.74 2009/05/16 16:59:31 tg Stab $
|
# $MirOS: src/bin/mksh/Makefile,v 1.75 2009/06/08 20:34:38 tg Stab $
|
||||||
#-
|
#-
|
||||||
# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009
|
||||||
# Thorsten Glaser <tg@mirbsd.org>
|
# Thorsten Glaser <tg@mirbsd.org>
|
||||||
@@ -36,11 +36,12 @@ CPPFLAGS+= -DMKSH_ASSUME_UTF8 \
|
|||||||
-DHAVE_STDINT_H=1 -DHAVE_RLIM_T=1 -DHAVE_SIG_T=1 \
|
-DHAVE_STDINT_H=1 -DHAVE_RLIM_T=1 -DHAVE_SIG_T=1 \
|
||||||
-DHAVE_SYS_SIGNAME=1 -DHAVE_SYS_SIGLIST=1 -DHAVE_STRSIGNAL=0 \
|
-DHAVE_SYS_SIGNAME=1 -DHAVE_SYS_SIGLIST=1 -DHAVE_STRSIGNAL=0 \
|
||||||
-DHAVE_ARC4RANDOM=1 -DHAVE_ARC4RANDOM_PUSHB=1 \
|
-DHAVE_ARC4RANDOM=1 -DHAVE_ARC4RANDOM_PUSHB=1 \
|
||||||
-DHAVE_GETRUSAGE=1 -DHAVE_MKNOD=1 -DHAVE_MKSTEMP=1 \
|
-DHAVE_GETRUSAGE=1 -DHAVE_KILLPG=1 -DHAVE_MKNOD=1 \
|
||||||
-DHAVE_NICE=1 -DHAVE_REALPATH=1 -DHAVE_REVOKE=1 \
|
-DHAVE_MKSTEMP=1 -DHAVE_NICE=1 -DHAVE_REALPATH=1 \
|
||||||
-DHAVE_SETLOCALE_CTYPE=0 -DHAVE_LANGINFO_CODESET=0 \
|
-DHAVE_REVOKE=1 -DHAVE_SETLOCALE_CTYPE=0 \
|
||||||
-DHAVE_SETMODE=1 -DHAVE_SETRESUGID=1 -DHAVE_SETGROUPS=1 \
|
-DHAVE_LANGINFO_CODESET=0 -DHAVE_SETMODE=1 \
|
||||||
-DHAVE_STRCASESTR=1 -DHAVE_STRLCPY=1 -DHAVE_ARC4RANDOM_DECL=1 \
|
-DHAVE_SETRESUGID=1 -DHAVE_SETGROUPS=1 -DHAVE_STRCASESTR=1 \
|
||||||
|
-DHAVE_STRLCPY=1 -DHAVE_ARC4RANDOM_DECL=1 \
|
||||||
-DHAVE_ARC4RANDOM_PUSHB_DECL=1 -DHAVE_FLOCK_DECL=1 \
|
-DHAVE_ARC4RANDOM_PUSHB_DECL=1 -DHAVE_FLOCK_DECL=1 \
|
||||||
-DHAVE_REVOKE_DECL=1 -DHAVE_SYS_SIGLIST_DECL=1 \
|
-DHAVE_REVOKE_DECL=1 -DHAVE_SYS_SIGLIST_DECL=1 \
|
||||||
-DHAVE_PERSISTENT_HISTORY=1
|
-DHAVE_PERSISTENT_HISTORY=1
|
||||||
|
4
check.t
4
check.t
@@ -1,4 +1,4 @@
|
|||||||
# $MirOS: src/bin/mksh/check.t,v 1.285 2009/06/07 22:43:46 tg Exp $
|
# $MirOS: src/bin/mksh/check.t,v 1.286 2009/06/08 20:34:38 tg Exp $
|
||||||
# $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $
|
# $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $
|
||||||
# $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $
|
# $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $
|
||||||
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
|
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
# http://www.research.att.com/~gsf/public/ifs.sh
|
# http://www.research.att.com/~gsf/public/ifs.sh
|
||||||
|
|
||||||
expected-stdout:
|
expected-stdout:
|
||||||
@(#)MIRBSD KSH R38 2009/06/07
|
@(#)MIRBSD KSH R38 2009/06/08
|
||||||
description:
|
description:
|
||||||
Check version of shell.
|
Check version of shell.
|
||||||
stdin:
|
stdin:
|
||||||
|
18
funcs.c
18
funcs.c
@@ -25,7 +25,18 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.110 2009/06/08 20:06:46 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.111 2009/06/08 20:34:39 tg Exp $");
|
||||||
|
|
||||||
|
#if HAVE_KILLPG
|
||||||
|
/*
|
||||||
|
* use killpg if < -1 since -1 does special things
|
||||||
|
* for some non-killpg-endowed kills
|
||||||
|
*/
|
||||||
|
#define mksh_kill(p,s) ((p) < -1 ? killpg(-(p), (s)) : kill((p), (s)))
|
||||||
|
#else
|
||||||
|
/* cross fingers and hope kill is killpg-endowed */
|
||||||
|
#define mksh_kill kill
|
||||||
|
#endif
|
||||||
|
|
||||||
/* A leading = means assignments before command are kept;
|
/* A leading = means assignments before command are kept;
|
||||||
* a leading * means a POSIX special builtin;
|
* a leading * means a POSIX special builtin;
|
||||||
@@ -1390,10 +1401,7 @@ c_kill(const char **wp)
|
|||||||
p);
|
p);
|
||||||
rv = 1;
|
rv = 1;
|
||||||
} else {
|
} else {
|
||||||
/* use killpg if < -1 since -1 does special things for
|
if (mksh_kill(n, sig) < 0) {
|
||||||
* some non-killpg-endowed kills
|
|
||||||
*/
|
|
||||||
if ((n < -1 ? killpg(-n, sig) : kill(n, sig)) < 0) {
|
|
||||||
bi_errorf("%s: %s", p, strerror(errno));
|
bi_errorf("%s: %s", p, strerror(errno));
|
||||||
rv = 1;
|
rv = 1;
|
||||||
}
|
}
|
||||||
|
19
jobs.c
19
jobs.c
@@ -22,7 +22,14 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/jobs.c,v 1.54 2009/06/08 20:06:47 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/jobs.c,v 1.55 2009/06/08 20:34:40 tg Exp $");
|
||||||
|
|
||||||
|
#if HAVE_KILLPG
|
||||||
|
#define mksh_killpg killpg
|
||||||
|
#else
|
||||||
|
/* cross fingers and hope kill is killpg-endowed */
|
||||||
|
#define mksh_killpg(p,s) kill(-(p), (s))
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Order important! */
|
/* Order important! */
|
||||||
#define PRUNNING 0
|
#define PRUNNING 0
|
||||||
@@ -213,13 +220,13 @@ j_exit(void)
|
|||||||
if (j->pgrp == 0)
|
if (j->pgrp == 0)
|
||||||
kill_job(j, SIGHUP);
|
kill_job(j, SIGHUP);
|
||||||
else
|
else
|
||||||
killpg(j->pgrp, SIGHUP);
|
mksh_killpg(j->pgrp, SIGHUP);
|
||||||
#ifndef MKSH_UNEMPLOYED
|
#ifndef MKSH_UNEMPLOYED
|
||||||
if (j->state == PSTOPPED) {
|
if (j->state == PSTOPPED) {
|
||||||
if (j->pgrp == 0)
|
if (j->pgrp == 0)
|
||||||
kill_job(j, SIGCONT);
|
kill_job(j, SIGCONT);
|
||||||
else
|
else
|
||||||
killpg(j->pgrp, SIGCONT);
|
mksh_killpg(j->pgrp, SIGCONT);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -636,9 +643,9 @@ j_kill(const char *cp, int sig)
|
|||||||
} else {
|
} else {
|
||||||
#ifndef MKSH_UNEMPLOYED
|
#ifndef MKSH_UNEMPLOYED
|
||||||
if (j->state == PSTOPPED && (sig == SIGTERM || sig == SIGHUP))
|
if (j->state == PSTOPPED && (sig == SIGTERM || sig == SIGHUP))
|
||||||
(void)killpg(j->pgrp, SIGCONT);
|
mksh_killpg(j->pgrp, SIGCONT);
|
||||||
#endif
|
#endif
|
||||||
if (killpg(j->pgrp, sig) < 0) {
|
if (mksh_killpg(j->pgrp, sig) < 0) {
|
||||||
bi_errorf("%s: %s", cp, strerror(errno));
|
bi_errorf("%s: %s", cp, strerror(errno));
|
||||||
rv = 1;
|
rv = 1;
|
||||||
}
|
}
|
||||||
@@ -725,7 +732,7 @@ j_resume(const char *cp, int bg)
|
|||||||
async_job = NULL;
|
async_job = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (j->state == PRUNNING && killpg(j->pgrp, SIGCONT) < 0) {
|
if (j->state == PRUNNING && mksh_killpg(j->pgrp, SIGCONT) < 0) {
|
||||||
int err = errno;
|
int err = errno;
|
||||||
|
|
||||||
if (!bg) {
|
if (!bg) {
|
||||||
|
4
sh.h
4
sh.h
@@ -122,9 +122,9 @@
|
|||||||
#define __SCCSID(x) __IDSTRING(sccsid,x)
|
#define __SCCSID(x) __IDSTRING(sccsid,x)
|
||||||
|
|
||||||
#ifdef EXTERN
|
#ifdef EXTERN
|
||||||
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.307 2009/06/08 20:06:48 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.308 2009/06/08 20:34:40 tg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#define MKSH_VERSION "R38 2009/06/07"
|
#define MKSH_VERSION "R38 2009/06/08"
|
||||||
|
|
||||||
#ifndef MKSH_INCLUDES_ONLY
|
#ifndef MKSH_INCLUDES_ONLY
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user