From owner-svn-src-all@FreeBSD.ORG Tue Dec 25 14:17:10 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6F0A35D6; Tue, 25 Dec 2012 14:17:10 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 397F98FC0C; Tue, 25 Dec 2012 14:17:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBPEHARP070178; Tue, 25 Dec 2012 14:17:10 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBPEHAQC070177; Tue, 25 Dec 2012 14:17:10 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201212251417.qBPEHAQC070177@svn.freebsd.org> From: Jilles Tjoelker Date: Tue, 25 Dec 2012 14:17:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r244682 - head/bin/sh X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 Dec 2012 14:17:10 -0000 Author: jilles Date: Tue Dec 25 14:17:09 2012 New Revision: 244682 URL: http://svnweb.freebsd.org/changeset/base/244682 Log: sh: Prefer strsignal() to accessing sys_siglist directly. Accessing sys_siglist directly requires rtld to copy it from libc to the sh executable's BSS. Also, strsignal() will put in the signal number for unknown signals (FreeBSD-specific) so we need not do that ourselves. Unfortunately, there is no function for sys_signame. Modified: head/bin/sh/jobs.c Modified: head/bin/sh/jobs.c ============================================================================== --- head/bin/sh/jobs.c Tue Dec 25 14:08:13 2012 (r244681) +++ head/bin/sh/jobs.c Tue Dec 25 14:17:09 2012 (r244682) @@ -298,6 +298,7 @@ showjob(struct job *jp, int mode) { char s[64]; char statestr[64]; + const char *sigstr; struct procstat *ps; struct job *j; int col, curr, i, jobno, prev, procno; @@ -324,8 +325,9 @@ showjob(struct job *jp, int mode) i = WSTOPSIG(ps->status); else i = -1; - if (i > 0 && i < sys_nsig && sys_siglist[i]) - strcpy(statestr, sys_siglist[i]); + sigstr = strsignal(i); + if (sigstr != NULL) + strcpy(statestr, sigstr); else strcpy(statestr, "Suspended"); #endif @@ -337,10 +339,11 @@ showjob(struct job *jp, int mode) WEXITSTATUS(ps->status)); } else { i = WTERMSIG(ps->status); - if (i > 0 && i < sys_nsig && sys_siglist[i]) - strcpy(statestr, sys_siglist[i]); + sigstr = strsignal(i); + if (sigstr != NULL) + strcpy(statestr, sigstr); else - fmtstr(statestr, 64, "Signal %d", i); + strcpy(statestr, "Unknown signal"); if (WCOREDUMP(ps->status)) strcat(statestr, " (core dumped)"); } @@ -1019,6 +1022,7 @@ dowait(int mode, struct job *job) struct procstat *sp; struct job *jp; struct job *thisjob; + const char *sigstr; int done; int stopped; int sig; @@ -1129,10 +1133,11 @@ dowait(int mode, struct job *job) coredump = WCOREDUMP(sp->status); } if (sig > 0 && sig != SIGINT && sig != SIGPIPE) { - if (sig < sys_nsig && sys_siglist[sig]) - out2str(sys_siglist[sig]); + sigstr = strsignal(sig); + if (sigstr != NULL) + out2str(sigstr); else - outfmt(out2, "Signal %d", sig); + out2str("Unknown signal"); if (coredump) out2str(" (core dumped)"); out2c('\n');