diff options
| author | Byron Rakitzis <byron@archone.tamu.edu> | 1994-03-07 00:00:01 +0000 |
|---|---|---|
| committer | Toby Goodwin <toby@paccrat.org> | 2015-05-16 21:22:09 +0100 |
| commit | a076248389c82276e079756bee26c011b03f70f2 (patch) | |
| tree | 9d22c48c75bcd778f30cbb2e37b6dff6abb4f1d2 /fn.c | |
| parent | 6bb38f6a01dbf4bbd584e038ceace0a00faa27bb (diff) | |
beta: rc-1.5betadev1
Diffstat (limited to 'fn.c')
| -rw-r--r-- | fn.c | 33 |
1 files changed, 12 insertions, 21 deletions
@@ -12,9 +12,9 @@ static void fn_handler(int), dud_handler(int); static bool runexit = FALSE; static Node *handlers[NUMOFSIGNALS], null; -static void (*def_sigint)(int) = SIG_DFL, - (*def_sigquit)(int) = SIG_DFL, - (*def_sigterm)(int) = SIG_DFL; +static void (*def_sigint)(int) = SIG_DFL; +static void (*def_sigquit)(int) = SIG_DFL; +static void (*def_sigterm)(int) = SIG_DFL; /* Set signals to default values for rc. This means that interactive @@ -106,13 +106,12 @@ extern void setsigdefaults(bool sysvbackground) { /* rc's exit. if runexit is set, run the sigexit function. */ extern void rc_exit(int stat) { - static char *sigexit[2] = { - "sigexit", - NULL - }; if (runexit) { + char *sig[2]; + sig[0] = "sigexit"; + sig[1] = NULL; runexit = FALSE; - funcall(sigexit); + funcall(sig); stat = getstatus(); } exit(stat); @@ -121,22 +120,14 @@ extern void rc_exit(int stat) { /* The signal handler for all functions. calls walk() */ static void fn_handler(int s) { - List *dollarzero; - Estack e; - Edata star; + char *sig[2]; int olderrno; if (s < 1 || s >= NUMOFSIGNALS) panic("unknown signal"); olderrno = errno; - dollarzero = nnew(List); - dollarzero->w = signals[s].name; - dollarzero->n = NULL; - varassign("*", dollarzero, TRUE); - star.name = "*"; - except(eVarstack, star, &e); - walk(handlers[s], TRUE); - varrm("*", TRUE); - unexcept(); /* eVarstack */ + sig[0] = signals[s].name; + sig[1] = NULL; + funcall(sig); errno = olderrno; } @@ -217,7 +208,7 @@ extern char *fnlookup_string(char *name) { return NULL; if (look->extdef != NULL) return look->extdef; - return look->extdef = fun2str(name, look->def); + return look->extdef = mprint("fn_%F={%T}", name, look->def); } /* |