about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-02-15 16:44:54 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-02-15 16:44:54 +0000
commit90c88e53dfc419497f031903528e007a6f685661 (patch)
tree296ca7bf643626a43eaedab064567e4dcf64c5f2
parentd2cffa8c27d2c550fad268a1b0d7079957ed1251 (diff)
downloadzsh-90c88e53dfc419497f031903528e007a6f685661.tar.gz
zsh-90c88e53dfc419497f031903528e007a6f685661.tar.xz
zsh-90c88e53dfc419497f031903528e007a6f685661.zip
zsh-workers/9750
-rw-r--r--Src/Modules/parameter.c6
-rw-r--r--Src/jobs.c14
-rw-r--r--Src/signames2.awk5
3 files changed, 14 insertions, 11 deletions
diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c
index 3bd7e51b4..9bb39baf9 100644
--- a/Src/Modules/parameter.c
+++ b/Src/Modules/parameter.c
@@ -1230,12 +1230,12 @@ pmjobstate(int job)
 	    else
 		state = "done";
 	} else if (WIFSTOPPED(pn->status))
-	    state = sigmsg[WSTOPSIG(pn->status)];
+	    state = sigmsg(WSTOPSIG(pn->status));
 	else if (WCOREDUMP(pn->status))
 	    sprintf((state = buf2), "%s (core dumped)",
-		    sigmsg[WTERMSIG(pn->status)]);
+		    sigmsg(WTERMSIG(pn->status)));
 	else
-	    state = sigmsg[WTERMSIG(pn->status)];
+	    state = sigmsg(WTERMSIG(pn->status));
 
 	sprintf(buf, ":%d=%s", pn->pid, state);
 
diff --git a/Src/jobs.c b/Src/jobs.c
index d519da00c..3af0c3b54 100644
--- a/Src/jobs.c
+++ b/Src/jobs.c
@@ -615,7 +615,7 @@ printjob(Job jn, int lng, int synch)
 	if (pn->status != SP_RUNNING) {
 	    if (WIFSIGNALED(pn->status)) {
 		sig = WTERMSIG(pn->status);
-		llen = strlen(sigmsg[sig]);
+		llen = strlen(sigmsg(sig));
 		if (WCOREDUMP(pn->status))
 		    llen += 14;
 		if (llen > len)
@@ -626,8 +626,8 @@ printjob(Job jn, int lng, int synch)
 		    doputnl = 1;
 	    } else if (WIFSTOPPED(pn->status)) {
 		sig = WSTOPSIG(pn->status);
-		if ((int)strlen(sigmsg[sig]) > len)
-		    len = strlen(sigmsg[sig]);
+		if ((int)strlen(sigmsg(sig)) > len)
+		    len = strlen(sigmsg(sig));
 		if (job == thisjob && sig == SIGTSTP)
 		    doputnl = 1;
 	    } else if (isset(PRINTEXITVALUE) && isset(SHINSTDIN) &&
@@ -695,13 +695,13 @@ printjob(Job jn, int lng, int synch)
 		else
 		    fprintf(fout, "done%*s", len - 4 + 2, "");
 	    } else if (WIFSTOPPED(pn->status))
-		fprintf(fout, "%-*s", len + 2, sigmsg[WSTOPSIG(pn->status)]);
+		fprintf(fout, "%-*s", len + 2, sigmsg(WSTOPSIG(pn->status)));
 	    else if (WCOREDUMP(pn->status))
 		fprintf(fout, "%s (core dumped)%*s",
-			sigmsg[WTERMSIG(pn->status)],
-			(int)(len - 14 + 2 - strlen(sigmsg[WTERMSIG(pn->status)])), "");
+			sigmsg(WTERMSIG(pn->status)),
+			(int)(len - 14 + 2 - strlen(sigmsg(WTERMSIG(pn->status)))), "");
 	    else
-		fprintf(fout, "%-*s", len + 2, sigmsg[WTERMSIG(pn->status)]);
+		fprintf(fout, "%-*s", len + 2, sigmsg(WTERMSIG(pn->status)));
 	    for (; pn != qn; pn = pn->next)
 		fprintf(fout, (pn->next) ? "%s | " : "%s", pn->text);
 	    putc('\n', fout);
diff --git a/Src/signames2.awk b/Src/signames2.awk
index dbc7b71d0..1ad189b3f 100644
--- a/Src/signames2.awk
+++ b/Src/signames2.awk
@@ -63,7 +63,10 @@ END {
     printf "#include %czsh.mdh%c\n", 34, 34
     printf "\n"
     printf "/**/\n"
-    printf "mod_export char *sigmsg[SIGCOUNT+2] = {\n"
+    printf "#define sigmsg(sig) ((sig) <= SIGCOUNT ? sig_msg[sig] : %c%s%c)", 34, "unknown signal", 34
+    printf "\n"
+    printf "/**/\n"
+    printf "mod_export char *sig_msg[SIGCOUNT+2] = {\n"
     printf "\t%c%s%c,\n", 34, "done", 34
 
     for (i = 1; i <= 0 + max; i++)