Merge remote-tracking branch 'mksh/master'
Conflicts: check.t exec.c sh.h
This commit is contained in:
26
funcs.c
26
funcs.c
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: c_ksh.c,v 1.35 2015/09/01 13:12:31 tedu Exp $ */
|
||||
/* $OpenBSD: c_ksh.c,v 1.37 2015/09/10 22:48:58 nicm Exp $ */
|
||||
/* $OpenBSD: c_sh.c,v 1.46 2015/07/20 20:46:24 guenther Exp $ */
|
||||
/* $OpenBSD: c_test.c,v 1.18 2009/03/01 20:11:06 otto Exp $ */
|
||||
/* $OpenBSD: c_ulimit.c,v 1.19 2013/11/28 10:33:37 sobrado Exp $ */
|
||||
@ -6,7 +6,7 @@
|
||||
/*-
|
||||
* Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
||||
* 2010, 2011, 2012, 2013, 2014, 2015
|
||||
* mirabilos <tg@mirbsd.org>
|
||||
* mirabilos <m@mirbsd.org>
|
||||
*
|
||||
* Provided that these terms and disclaimer and all copyright notices
|
||||
* are retained or reproduced in an accompanying document, permission
|
||||
@ -38,7 +38,7 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.283 2015/09/05 19:19:04 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/funcs.c,v 1.286 2015/10/09 21:36:55 tg Exp $");
|
||||
|
||||
#if HAVE_KILLPG
|
||||
/*
|
||||
@ -127,6 +127,7 @@ const struct builtin mkshbuiltins[] = {
|
||||
{"*=return", c_exitreturn},
|
||||
{Tsgset, c_set},
|
||||
{"*=shift", c_shift},
|
||||
{"=source", c_dot},
|
||||
#if !defined(MKSH_UNEMPLOYED) && HAVE_GETSID
|
||||
{"suspend", c_suspend},
|
||||
#endif
|
||||
@ -1305,7 +1306,8 @@ c_fgbg(const char **wp)
|
||||
rv = j_resume(*wp, bg);
|
||||
else
|
||||
rv = j_resume("%%", bg);
|
||||
return (bg ? 0 : rv);
|
||||
/* fg returns $? of the job unless POSIX */
|
||||
return ((bg | Flag(FPOSIX)) ? 0 : rv);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1383,6 +1385,13 @@ c_kill(const char **wp)
|
||||
else
|
||||
shprintf("%d\n", n);
|
||||
}
|
||||
} else if (Flag(FPOSIX)) {
|
||||
n = 1;
|
||||
while (n < ksh_NSIG) {
|
||||
shf_puts(sigtraps[n].name, shl_stdout);
|
||||
shf_putc(++n == ksh_NSIG ? '\n' : ' ',
|
||||
shl_stdout);
|
||||
}
|
||||
} else {
|
||||
ssize_t w, mess_cols = 0, mess_octs = 0;
|
||||
int j = ksh_NSIG - 1;
|
||||
@ -1436,7 +1445,8 @@ void
|
||||
getopts_reset(int val)
|
||||
{
|
||||
if (val >= 1) {
|
||||
ksh_getopt_reset(&user_opt, GF_NONAME | GF_PLUSOPT);
|
||||
ksh_getopt_reset(&user_opt, GF_NONAME |
|
||||
(Flag(FPOSIX) ? 0 : GF_PLUSOPT));
|
||||
user_opt.optind = user_opt.uoptind = val;
|
||||
}
|
||||
}
|
||||
@ -1777,7 +1787,11 @@ c_dot(const char **wp)
|
||||
bi_errorf("missing argument");
|
||||
return (1);
|
||||
}
|
||||
if ((file = search_path(cp, path, R_OK, &errcode)) == NULL) {
|
||||
file = search_path(cp, path, R_OK, &errcode);
|
||||
if (!file && errcode == ENOENT && wp[0][0] == 's' &&
|
||||
search_access(cp, R_OK) == 0)
|
||||
file = cp;
|
||||
if (!file) {
|
||||
bi_errorf("%s: %s", cp, cstrerror(errcode));
|
||||
return (1);
|
||||
}
|
||||
|
Reference in New Issue
Block a user