From 16d2c50605d309021d4549b6943f222dab82667e Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Thu, 7 Jan 2021 14:25:24 -0500 Subject: [PATCH] commit bash-20201230 snapshot --- CWRU/CWRU.chlog | 34 ++++++ command.h | 1 + execute_cmd.c | 8 +- jobs.c | 2 + nojobs.c | 2 + po/hr.gmo | Bin 177848 -> 177664 bytes po/hr.po | 306 ++++++++++++++++++++++++------------------------ sig.c | 10 +- subst.c | 2 + trap.c | 26 ++++ 10 files changed, 236 insertions(+), 155 deletions(-) diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 35fccd18..ad5d27d9 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -9260,3 +9260,37 @@ examples/loadables/stat.c examples/loadables/Makefile.in - stat: now built and installed by default + + 12/31 + ----- +command.h + - SUBSHELL_IGNTRAP: new flag value + +jobs.c + - make_child: set SUBSHELL_IGNTRAP in subshell_environment in the + child process, meaning that we should not execute trap handlers for + trapped signals + +execute_cmd.c + - execute_in_subshell, execute_simple_command, execute_disk_command: + make sure to unset SUBSHELL_IGNTRAP after a child process restores + the original signal dispositions + - execute_simple_command: make sure to set SUBSHELL_IGNTRAP after + make_child returns and we're setting subshell_environment directly + +subst.c + - command_substitute,process_substitute: unset SUBSHELL_IGNTRAP after + the child process has reset the trapped signal dispositions + +trap.c + - trap_handler: if we get a signal for which we have set a trap, but + SUBSHELL_IGNTRAP is set in subshell_environmnent, make sure we + restore the original signal disposition and resend the signal to + ourselves. Fixes issue reported by Nikolay Borisov + (or at least makes the race window much smaller) + +sig.c + - initialize_terminating_signal: set the original signal handler from + the return value from sigaction; a minor optimization that saves a + system call or two + diff --git a/command.h b/command.h index 914198f9..b8477528 100644 --- a/command.h +++ b/command.h @@ -124,6 +124,7 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select, #define SUBSHELL_PROCSUB 0x20 /* subshell caused by <(command) or >(command) */ #define SUBSHELL_COPROC 0x40 /* subshell from a coproc pipeline */ #define SUBSHELL_RESETTRAP 0x80 /* subshell needs to reset trap strings on first call to trap */ +#define SUBSHELL_IGNTRAP 0x100 /* subshell should reset trapped signals from trap_handler */ /* A structure which represents a word. */ typedef struct word_desc { diff --git a/execute_cmd.c b/execute_cmd.c index 3d132773..6d37a397 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -1547,6 +1547,9 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close) clear_pending_traps (); reset_signal_handlers (); subshell_environment |= SUBSHELL_RESETTRAP; + /* Note that signal handlers have been reset, so we should no longer + reset the handler and resend trapped signals to ourselves. */ + subshell_environment &= ~SUBSHELL_IGNTRAP; /* We are in a subshell, so forget that we are running a trap handler or that the signal handler has changed (we haven't changed it!) */ @@ -4332,7 +4335,8 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close) already_forked = 1; cmdflags |= CMD_NO_FORK; - subshell_environment = SUBSHELL_FORK; /* XXX */ + /* We redo some of what make_child() does with SUBSHELL_IGNTRAP */ + subshell_environment = SUBSHELL_FORK|SUBSHELL_IGNTRAP; /* XXX */ if (pipe_in != NO_PIPE || pipe_out != NO_PIPE) subshell_environment |= SUBSHELL_PIPE; if (async) @@ -4586,6 +4590,7 @@ run_builtin: trap strings if we run trap to change a signal disposition. */ reset_signal_handlers (); subshell_environment |= SUBSHELL_RESETTRAP; + subshell_environment &= ~SUBSHELL_IGNTRAP; if (async) { @@ -5526,6 +5531,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out, reset_terminating_signals (); /* XXX */ /* Cancel traps, in trap.c. */ restore_original_signals (); + subshell_environment &= ~SUBSHELL_IGNTRAP; #if defined (JOB_CONTROL) FREE (p); diff --git a/jobs.c b/jobs.c index 83c48a93..49a862e1 100644 --- a/jobs.c +++ b/jobs.c @@ -2220,6 +2220,8 @@ make_child (command, flags) signals to the default state for a new process. */ pid_t mypid; + subshell_environment |= SUBSHELL_IGNTRAP; + /* If this ends up being changed to modify or use `command' in the child process, go back and change callers who free `command' in the child process when this returns. */ diff --git a/nojobs.c b/nojobs.c index c5fc83d9..f2563ca0 100644 --- a/nojobs.c +++ b/nojobs.c @@ -575,6 +575,8 @@ make_child (command, flags) last_asynchronous_pid = getpid (); #endif + subshell_environment |= SUBSHELL_IGNTRAP; + default_tty_job_signals (); } else diff --git a/po/hr.gmo b/po/hr.gmo index 0f2fdb084f90f57c8ca6f757ee107216d36fb710..a7506358e5e6744cdf20bab7dcf18a78068eca9c 100644 GIT binary patch delta 7192 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 diff --git a/po/hr.po b/po/hr.po index d0cdad0c..f68280b6 100644 --- a/po/hr.po +++ b/po/hr.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the bash package. # # Tomislav Krznar , 2012, 2013. -# Božidar Putanec , 2018, 2019, 2020. +# Božidar Putanec , 2018, 2019, 2020, 2021. msgid "" msgstr "" "Project-Id-Version: bash 5.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-11-28 12:51-0500\n" -"PO-Revision-Date: 2020-12-29 11:38-0800\n" +"PO-Revision-Date: 2021-01-02 13:56-0800\n" "Last-Translator: Božidar Putanec \n" "Language-Team: Croatian \n" "Language: hr\n" @@ -774,7 +774,7 @@ msgid "" msgstr "" "Doda direktorij na vrh stȏga direktorija ili zarotira stȏg tako da\n" " učini novi vrh stȏga trenutnim radnim direktorijem. Bez argumenata\n" -" razmijeni pozicije dva direktorija na vrhu stȏga.\n" +" razmijeni pozicije dvama direktorijima na vrhu stȏga.\n" "\n" " Opcije:\n" " -n spriječi uobičajenu promjenu direktorija kad dodaje\n" @@ -810,8 +810,9 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Ukloni direktorije iz stȏga direktorija. Bez argumenata, ukloni\n" -" direktorij na vrhu stȏga i premjesti se u novi najviši direktorij.\n" +"Ukloni zapise iz stȏga direktorija. Bez argumenata, ukloni direktorij na\n" +" vrhu stȏga i učini da je trenutni radni direktorij jednak novom direktoriju\n" +" na vrhu stȏga.\n" "\n" " Opcije:\n" " -n spriječi uobičajenu promjenu direktorija kad uklanja\n" @@ -2334,7 +2335,7 @@ msgstr "" msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" msgstr "" "jobs [-lnprs] [SPECIFIKACIJA_POSLA...]\n" -" ili: jobs -x NAREDBA [ARGUMENTI]" +" ili: jobs -x NAREDBA [ARGUMENT...]" #: builtins.c:131 msgid "disown [-h] [-ar] [jobspec ... | pid ...]" @@ -2431,7 +2432,7 @@ msgstr "wait [PID...]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "for IME [in RIJEČIMA .... do NAREDBE; done" +msgstr "for IME [in RIJEČIMA...].; do NAREDBE; done" #: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" @@ -2439,7 +2440,7 @@ msgstr "for (( IZRAZ1; IZRAZ2; IZRAZ3 )); do NAREDBE; done" #: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "select IME [in RIJEČI ....; do NAREDBE; done" +msgstr "select IME [in RIJEČI... ;] do NAREDBE; done" #: builtins.c:190 msgid "time [-p] pipeline" @@ -2489,7 +2490,7 @@ msgstr "[[ IZRAZ ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "varijable — imena i značenje nekih varijabla ljuske" +msgstr "var — imena i značenje nekih varijabla ljuske" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" @@ -2532,13 +2533,13 @@ msgstr "compopt [-o|+o OPCIJA] [-DEI] [IME...]" #: builtins.c:242 msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" msgstr "" -"mapfile [-d MEĐA] [-n BROJ] [-O POČETAK] [-s BROJ] [-t] [-u FD]\n" +"mapfile [-d MEĐA] [-n KOLIČINA [-O POČETAK] [-s BROJ] [-t] [-u FD]\n" " [-C FUNKCIJA] [-c TOLIKO] [POLJE]" #: builtins.c:244 msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" msgstr "" -"readarray [-d MEĐA] [-n BROJ] [-O POČETAK] [-s BROJ] [-t] [-u FD]\n" +"readarray [-d MEĐA] [-n KOLIČINA] [-O POČETAK] [-s BROJ] [-t] [-u FD]\n" " [-C FUNKCIJA] [-c TOLIKO] [POLJE]" #: builtins.c:256 @@ -2561,11 +2562,11 @@ msgid "" msgstr "" "Definira ili prikaže aliase.\n" "\n" -" Bez argumenata, „alias“ ispiše popis aliasa na standardni izlaz u\n" -" upotrebljivom formatu: 'alias IME=ZAMJENA'. S argumentima, alias je\n" -" definiran za svako IME za koje je navedena ZAMJENA. Ako ZAMJENA završi\n" -" s razmakom (bjelinom), onda alias pri ekspanziji provjeri da li je i\n" -" sljedeća riječ alias.\n" +" Bez argumenata (ili s opcijom -p), „alias“ ispiše popis aliasa na\n" +" standardni izlaz u upotrebljivom formatu: alias IME='ZAMJENA'.\n" +" S argumentima, alias je definiran za svako IME za koje je navedena ZAMJENA.\n" +" Zaostali razmak (bjelina) u ZAMJENI čini da „alias“ prilikom ekspanzije\n" +" provjerava je li i sljedeća riječ zamjenska.\n" "\n" " Options:\n" " -p ispiše sve definirane aliase u upotrebljivom formatu\n" @@ -2632,7 +2633,7 @@ msgstr "" "\n" " Opcije:\n" " -f DATOTEKA pročita prečace (bindings, key sequences) iz DATOTEKE\n" -" -l ispiše sve poznate funkcije\n" +" -l izlista imena svih poznatih funkcija\n" " -m MAPA_TIPAKA koristi MAPU_TIPAKA (keymap) dok traje ova naredba;\n" " moguće MAPE_TIPAKA su jedna od emacs, emacs-standard,\n" " emacs-meta, emacs-ctlx, vi, vi-move, vi-command,\n" @@ -2641,13 +2642,13 @@ msgstr "" " -p ispiše imena funkcija i prečaca u obliku\n" " koji se može iskoristiti kao ulaz\n" " -r PREČAC razveže PREČAC (ukloni sekvenciju tipki za prečac)\n" -" -q FUNKCIJA ispita i ispiše tipke koje pozivaju navedenu FUNKCIJU\n" +" -q FUNKCIJA ispita i ispiše tipke koje pozivaju tu FUNKCIJU\n" " -S izlista prečace (sekvencije tipki) koje pozivaju makroe\n" " s njihovim vrijednostima\n" " -s ispiše sekvencije tipki poje pozivaju makroe s\n" " njihovim vrijednostima u obliku koji se može\n" " iskoristiti kao ulaz\n" -" -u FUNKCIJA razveže sve prečace vezane na navedenu FUNKCIJU\n" +" -u FUNKCIJA razveže sve prečace vezane na tu FUNKCIJU\n" " -V izlista imena varijabli s njihovim vrijednostima\n" " -v ispiše imena varijabli s njihovim vrijednostima\n" " u formatu koji se može iskoristiti kao ulaz\n" @@ -2705,14 +2706,14 @@ msgid "" msgstr "" "Izvrši ugrađenu funkciju ljuske (shell builtins).\n" "\n" -" Izvrši danu UGRAĐENU_SHELL_FUNKCIJU (SHELL-BUILTIN) funkciju s navedenim\n" -" ARGUMENTIMA. To je korisno ako želite redefinirati implementaciju\n" -" ugrađene shell funkcije kao vlastitu shell funkciju (skriptu s istim\n" -" imenom kao ugrađena shell funkcija), a potrebna vam je funkcionalnost\n" -" te ugrađene shell funkcije unutar vaše vlastite skripte (shell funkcije).\n" +" Izvrši danu UGRAĐENU_SHELL_FUNKCIJU s navedenim ARGUMENTIMA.\n" +" To je korisno ako želite redefinirati implementaciju ugrađene shell\n" +" funkcije kao vlastitu shell funkciju (skriptu s istim imenom kao ugrađena\n" +" shell funkcija), a potrebna vam je funkcionalnost te ugrađene shell\n" +" funkcije unutar vaše vlastite skripte.\n" "\n" " Završi s kȏdom UGRAĐENE_SHELL_FUNKCIJE ili s kȏdom 1 ako\n" -" UGRAĐENA_SHELL_FUNKCIJA nije ugrađene funkcija ljuske (shell builtin)." +" UGRAĐENA_SHELL_FUNKCIJA nije ugrađene funkcija ljuske." #: builtins.c:369 msgid "" @@ -2729,14 +2730,14 @@ msgid "" " Returns 0 unless the shell is not executing a shell function or EXPR\n" " is invalid." msgstr "" -"Pokaže kontekst trenutnog poziva funkciji.\n" +"Vrati kontekst trenutnog poziva funkciji.\n" "\n" -" Bez IZRAZA, vrati „$line $filename“. Ako je dan IZRAZ, vrati\n" -" „$line $subroutine $filename“; ova dodatna obavijest može poslužiti\n" -" za „stack trace“.\n" +" Bez IZRAZA, vrati „$line $filename“. Ako je dan IZRAZ, onda vrati\n" +" „$line $subroutine $filename“; ova dodatna informacija može poslužiti za\n" +" stvaranje „stack trace“.\n" "\n" -" Vrijednost IZRAZA pokazuje koliko se treba vratiti unatrag od\n" -" trenutne pozicije, s time da je pozicija 0 trenutna pozicija.\n" +" Vrijednost IZRAZA naznačuje koliko ciklusa se treba vratiti\n" +" unatrag od trenutne pozicije; trenutni ciklus ima vrijednost 0.\n" "\n" " Završi s uspjehom osim ako ljuska ne izvršava ljuskinu funkciju\n" " ili je IZRAZ nevaljan." @@ -2780,7 +2781,7 @@ msgstr "" "Promjeni trenutni direktorij.\n" "\n" " Promijeni trenutni direktorij u navedeni DIREKTORIJ. Ako DIREKTORIJ nije\n" -" naveden, onda se za DIREKTORIJ koristi vrijednost varijable HOME.\n" +" naveden, za DIREKTORIJ se koristi vrijednost varijable HOME.\n" "\n" " Varijabla CDPATH definira staze (direktorije) po kojima se\n" " traži DIREKTORIJ.\n" @@ -2794,12 +2795,11 @@ msgstr "" " naziv, „cd“ prijeđe u direktorij s tim nazivom.\n" "\n" " Opcije:\n" -" -L slijedi simboličke veze; simboličke veze u DIREKTORIJU\n" -" razriješi nakon procesiranja „..“ instancije DIREKTORIJA;\n" -" opcija „-L“ je aktivna u zadanom (početnom) stanju\n" -" -P rabi fizičku strukturu direktorija umjesto da slijedi\n" -" simboličke veze; simboličke veze DIREKTORIJA\n" -" razriješi prije procesiranja „..“ instancije DIREKTORIJA\n" +" -L slijedi simboličke veze; simboličke veze u DIREKTORIJU razriješi\n" +" nakon obrade zapisa „..“\n" +" -P rabi fizičku strukturu direktorija umjesto da slijedi simboličke\n" +" veze; simboličke veze u DIREKTORIJU razriješi prije obrade\n" +" zapisa „..“\n" " -e ako je dana s opcijom „-P“, i trenutni radni direktorij nije\n" " moguće uspješno odrediti nakon uspješne promjene direktorija,\n" " „cd“ završi s kȏdom različitim od 0.\n" @@ -2893,8 +2893,8 @@ msgstr "" " Opcije:\n" " -p rabi zadanu vrijednost za PATH kao garanciju\n" " pronalaženja svih standardnih programa\n" -" -v ispiše opis NAREDBE, slično kao „type“ builtin\n" -" -V ispiše opširniji opis svake navedene NAREDBE\n" +" -v pokaže ime naredbe koja bi se izvršila\n" +" -V == „-v” ali opširnije\n" "\n" " Završi s izlaznim kȏdom NAREDBE\n" " ili s 1 ako NAREDBA nije pronađena." @@ -2947,9 +2947,9 @@ msgstr "" " Opcije:\n" " -f prikaže samo definirane funkcije (ne prikaže varijable)\n" " -F prikaže samo imena funkcija bez definicija\n" -" -g kreira globalne varijable samo za upotrebu u funkciji ljuske;\n" +" -g stvori globalne varijable samo za upotrebu u funkciji ljuske;\n" " inače se ignoriraju\n" -" -I ako kreira lokalnu varijablu, neka naslijedi atribute i vrijednost\n" +" -I ako stvori lokalnu varijablu, neka naslijedi atribute i vrijednost\n" " varijable s istim imenom u prethodnom opsegu\n" " -p prikaže atribute i vrijednost za svako dano IME\n" "\n" @@ -2984,7 +2984,7 @@ msgid "" msgstr "" "Postavi vrijednosti i svojstva varijabli.\n" "\n" -" Sinonim za „declare“. Za detalje, bez navodnika, utipkajte „help declare“." +" Sinonim za „declare“. Za detalje utipkajte (bez navodnika) „help declare“." #: builtins.c:540 msgid "" @@ -3002,14 +3002,14 @@ msgid "" msgstr "" "Definira lokalne varijable.\n" "\n" -" Stvori lokalnu varijablu IME i dodijeli joj vrijednost. OPCIJA\n" -" može biti bilo koja od opcija koju prihvaća naredba „declare“.\n" +" Stvori lokalnu varijablu IME i dodijeli joj vrijednost. OPCIJA može biti\n" +" bilo koja od opcija koju prihvaća naredba „declare“.\n" "\n" -" Lokalne varijable mogu se koristiti samo unutar funkcije i\n" -" vidljive su samo toj funkciji i njezinim potomcima.\n" +" Lokalne varijable mogu se koristiti samo unutar funkcije i vidljive su\n" +" samo toj funkciji i njezinim potomcima.\n" "\n" -" Završi s uspjehom osim ako su navedene nevaljane opcije,ili\n" -" se dogodila greška pri dodijeli ili ljuska ne izvrši funkciju." +" Završi s uspjehom osim ako su navedene nevaljane opcije, ili se dogodila\n" +" greška pri dodijeli ili ljuska ne izvrši funkciju." #: builtins.c:557 msgid "" @@ -3144,7 +3144,7 @@ msgstr "" "\n" " Primjer: da koristite binarnu datoteku „test“ koja se nalazi na stazi\n" " pretraživanja PATH, umjesto ugrađene (test) naredbe, utipkajte\n" -" bez navodnika „enable -n test“.\n" +" (bez navodnika) „enable -n test“.\n" "\n" " Završi s uspjehom osim ako IME nije ugrađena naredba ili se nije\n" " dogodila greška." @@ -3210,7 +3210,7 @@ msgstr "" "\n" " „getopts” se može koristiti u skriptama za raščlanjivanje\n" " pozicijskih parametara kao opcija.\n" -" \n" +"\n" " STRING_OPCIJA sadrži slova opcije koje treba prepoznati; ako iza\n" " slova slijedi dvotočka, očekuje se da opcija ima argument koji treba\n" " biti bjelinom odvojen od opcije.\n" @@ -3223,11 +3223,11 @@ msgstr "" " ljuskinu varijablu OPTARG.\n" "\n" " getopts javlja greške na jedan od dva načina. Ako je dvotočka prvi znaku\n" -" u STRINGU_OPCIJA, getopts tiho prijavi grešku (ne ispisuje poruke o greškama).\n" -" Ako naiđe na nevaljanu opciju, getopts smjesti nađeni znak opcije u OPTARG.\n" -" Ako zahtijevani argument nije pronađen, getopts smjesti „:“ u IME i postavi\n" -" OPTARG na pronađeni znak opcije. Ako getopts ne radi tiho i naiđe na\n" -" nevaljanu opciju, getopts smjesti „?“ u IME i poništi OPTARG.\n" +" u STRINGU_OPCIJA, getopts tiho prijavi grešku, tj. ne ispisuje poruke o\n" +" greškama. Ako naiđe na nevaljanu opciju, getopts smjesti nađeni znak opcije\n" +" u OPTARG. Ako zahtijevani argument nije pronađen, getopts smjesti „:“ u IME\n" +" i postavi OPTARG na pronađeni znak opcije. Ako getopts ne radi tiho i naiđe\n" +" na nevaljanu opciju, getopts smjesti „?“ u IME i poništi OPTARG.\n" " Ako zahtijevani argument nije pronađen, getopts smjesti „?“ u IME, poništi\n" " OPTARG i ispiše poruku o greškama.\n" "\n" @@ -3262,14 +3262,14 @@ msgid "" msgstr "" "Zamjeni ljusku s danom naredbom.\n" "\n" -" Izvrši danu NAREDBU, zamijenivši ovu ljusku s ovim programom.\n" +" Izvrši danu NAREDBU, zamjenjujući ovu ljusku s ovim programom.\n" " Eventualni ARGUMENTI postanu argumenti NAREDBE. Ako NAREDBA nije\n" " specificirana, sva preusmjeravanja se dogode u trenutnoj ljusci.\n" "\n" " Opcije:\n" " -a IME dȁde IME kao nulti argument NAREDBI\n" " -c izvrši NAREDBU u praznoj okolini\n" -" -l uvrsti spojnicu („-“) na početak nultog argumenta NAREDBE\n" +" -l proslijedi crticu („-“) kao nulti argument NAREDBE\n" "\n" " Ako se naredba ne može izvršiti, ne-interaktivna ljuska završi,\n" " osim ako je aktivna opcija ljuske „execfail“.\n" @@ -3365,8 +3365,8 @@ msgstr "" " Bez navedene specifikacije posla, premjesti u prednji plan posao koji\n" " ljuska smatra trenutnim.\n" "\n" -" Završi s kȏdom trenutne naredbe u prednjem planu\n" -" ili s neuspjehom ako se dogodi greška." +" Završi s kȏdom trenutne naredbe u prednjem planu ili s neuspjehom ako se\n" +" dogodi greška." #: builtins.c:779 msgid "" @@ -3448,7 +3448,7 @@ msgid "" " Exit Status:\n" " Returns success unless PATTERN is not found or an invalid option is given." msgstr "" -"Prikaže podatke o ugrađenim (builtin) naredbama.\n" +"Prikaže podatke o ugrađenim (builtins) naredbama.\n" "\n" " Prikaže kratke sažetke o ugrađenim naredbama. Ako je specificiran\n" " UZORAK, prikaže detaljnu pomoć za sve naredbe koje podudaraju UZORAK;\n" @@ -3457,10 +3457,10 @@ msgstr "" " Opcije:\n" " -d ukratko opisano djelovanje naredbe\n" " -m prikaže uporabu u pseudo manpage formatu\n" -" -s prikaže samo sinopsis uporabe za svaku naredbu koja podudara UZORAK\n" +" -s prikaže samo sažetak uporabe za svaku naredbu koja podudara UZORAK\n" "\n" -" Završi s uspjehom osim ako UZORAK nije pronađen, ili je dana\n" -" nevaljana opcija." +" Završi s uspjehom osim ako UZORAK nije pronađen, ili je dana nevaljana\n" +" opcija." #: builtins.c:842 msgid "" @@ -3502,30 +3502,31 @@ msgstr "" " ispiše samo N posljednjih redaka povijesti.\n" "\n" " Opcije:\n" -" -c počisti povijest iz memorije; zaboravi sve izvršene naredbe\n" -" -d POZICIJA izbriše redak povijesti na POZICIJI\n" +" -c izbriše povijest iz memorije; zaboravi sve izvršene naredbe\n" +" -d POZICIJA izbriše redak povijesti na toj POZICIJI. Negativna\n" +" POZICIJA odbrojava od kraja popisa.\n" "\n" -" -a pripoji trenutnu povijest „povijesnoj“ datoteci\n" -" -n pripoji sve nepročitane retke povijesne datoteke\n" +" -a doda trenutnu povijest „povijesnoj“ datoteci\n" +" -n doda sve nepročitane retke povijesne datoteke\n" " trenutnom popisu povijesti\n" -" -r pročita i pripoji povijesnu datoteku\n" +" -r pročita i doda povijesnu datoteku\n" " trenutnom popisu povijesti\n" " -w trenutnu povijest zapiše u povijesnu datoteku\n" "\n" " -p proširi povijest na svakom ARGUMENTU i prikaže rezultat\n" " bez spremanja u povijesni popis\n" -" -s Pripoji ARGUMENTE popisu povijesti kao pojedinačne stavke \n" +" -s doda ARGUMENTE kao jednu stavku popisu povijesti\n" "\n" -" Kao povijesna datoteka koristi se DATOTEKA ako je dana; ako nije dana,\n" -" koristi se varijabla HISTFILE (ako ima vrijednost), inače se koristi\n" +" Ako je dana, DATOTEKA se koristi se kao povijesna datoteka; ako nije dana,\n" +" koristi se varijabla HISTFILE (ako ima vrijednost). Inače se koristi\n" " ~/.bash_history.\n" "\n" " Ako HISTTIMEFORMAT varijabla postoji i nije nula, njezinu vrijednost\n" " koristi strftime(3) kao format string za ispis vremenskih oznaka\n" " povijesnih stavki; inače, vremenske oznake se ne ispisuju.\n" "\n" -" Završi s uspjehom osim ako nije dana nevaljana opcija\n" -" ili se dogodila greška." +" Završi s uspjehom osim ako nije dana nevaljana opcija ili se dogodila\n" +" greška." #: builtins.c:879 msgid "" @@ -3563,8 +3564,8 @@ msgstr "" " -s ograniči izlaz samo na zaustavljene poslove\n" "\n" " Ako je navedena opcija '-x', dana NAREDBA će se izvršiti tek nakon\n" -" zatvaranja svih poslova navedenih u ARGUMENTIMA (tj. njihov ID procesa\n" -" zamijenjen je s ID-om njima nadređenog procesa).\n" +" zatvaranja svih navedenih poslova u ARGUMENTIMA (tj. njihov ID procesa je\n" +" zamijenjen s ID-om njima nadređenoga procesa).\n" "\n" " Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška.\n" " Ako je dana opcija -x, završi sa izlaznim kȏdom NAREDBE." @@ -3624,9 +3625,9 @@ msgid "" msgstr "" "Pošalje signal poslu.\n" "\n" -" Pošalje procesu, identificiranim PID-om ili SPECIFIKACIJOM_POSLA,\n" -" signal naveden brojem ili imenom. Ako nije navedeno ni ime ni broj,\n" -" „kill” pošalje SIGTERM.\n" +" Procesima označenim s PID-om ili sa SPECIFIKACIJOM_POSLA pošalje signal\n" +" naveden brojem ili imenom. Ako nije naveden ni broj ni ime, „kill” pošalje\n" +" SIGTERM.\n" "\n" " Opcije:\n" " -s IME IME je ime signala koji se šalje\n" @@ -3634,15 +3635,14 @@ msgstr "" " -l izlista imena dostupnih signala; ako su dani argumenti\n" " iza „-l“, to su brojevi signala čija odgovarajuća\n" " imena treba ispisati\n" -" -L isto kao -l\n" +" -L == -l\n" "\n" " „kill“ je ugrađena ljuskina naredba iz dva razloga: dopušta korištenje\n" " ID posla umjesto ID procesa i također dopušta ubiti procese iako\n" " ste dostigli vaše ograničenje za broj procesa koje možete stvoriti;\n" " tj. ne morate pokrenuti novi proces da ubijete prekobrojne procese.\n" "\n" -" Završi s uspjehom osim ako je dana nevaljana opcija\n" -" ili se dogodila greška." +" Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška." #: builtins.c:949 msgid "" @@ -3693,22 +3693,22 @@ msgstr "" " obavlja za cijele brojeve fiksne širine bez provjere prelijevanja.\n" " Ipak, dijeljenje s nulom se detektira i prijavi kao greška.\n" "\n" -" Popis koji slijedi opisuje operatore s jednakom prednošću u\n" -" istom retku, a redci su poredani po opadajućoj prednosti.\n" +" Popis koji slijedi opisuje operatore s jednakom prednošću u istom retku,\n" +" a redci su poredani po opadajućoj prednosti.\n" "\n" " var++, var-- post-inkrement, post-dekrement varijable\n" " ++var, --var pre-inkrement, pre-dekrement varijable\n" " -, + unarni minus, unarni plus\n" -" !, ~ logička i bitna negacija\n" +" !, ~ logička i bitwise negacija\n" " ** potenciranje\n" " *, /, % množenje, dijeljenje, ostatak dijeljenja\n" " +, - zbrajanje, oduzimanje\n" -" <<, >> pomak za bit ulijevo i udesno\n" +" <<, >> bitwise pomak ulijevo, udesno\n" " <=, >=, <, > usporedba\n" " ==, != jednako, nejednako\n" -" & vrednuje aritmetičke izraze AND\n" -" ^ bitni XOR\n" -" | bitni OR\n" +" & bitwise AND\n" +" ^ bitwise XOR\n" +" | bitwise OR\n" " && logički AND\n" " || logički OR\n" "\n" @@ -3794,7 +3794,7 @@ msgstr "" " -p PROMPT ispiše taj string kao prompt (bez LF) prije početka čitanja\n" " -r backslash je doslovno kosa crta (nema posebno značenje)\n" " -s ne odjekuje (echo) ulaz koji dolazi iz terminala\n" -" -t BROJ nakon isteka BROJ SEKUNDI prestane čekati na ulaz i završi\n" +" -t BROJ nakon isteka BROJA sekundi prestane čekati na ulaz i završi\n" " s kȏdom većim od 128; zadano, broj sekundi čekanja je\n" " vrijednost varijable TMOUT; BROJ može biti i realni broj;\n" " Ako je BROJ = 0, „read“ završi odmah bez da išta čita, a\n" @@ -3805,8 +3805,7 @@ msgstr "" "\n" " Završi s uspjehom osim ako ne naiđe na konac datoteke (EOF) ili je\n" " isteklo vrijeme čekanja ili se dogodila greška pri dodjeli ili je\n" -" naveden nevaljani deskriptor datoteke\n" -" kao argument opciji „-u“." +" naveden nevaljani deskriptor datoteke kao argument opciji „-u“." #: builtins.c:1041 msgid "" @@ -3819,7 +3818,7 @@ msgid "" " Exit Status:\n" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -"Povrat iz funkcije ljuske.\n" +"Vračanje iz funkcije ljuske.\n" "\n" " Učini da funkcija ili pokrenuta skripta završi sa izlaznom vrijednošću\n" " specificiranom s N. Ako N nije dan, završi s kȏdom zadnje naredbe\n" @@ -3930,7 +3929,7 @@ msgstr "" " (a ne samo one argumente koji prethode imenu naredbe)\n" " -m upravljanje poslovima je omogućeno (zadano)\n" " -n pročita, ali ne izvrši naredbe\n" -" -o IME_OPCIJE omogući tu opciju (v. niže dugačke nazive IMENA_OPCIJA)\n" +" -o IME_OPCIJE omogući tu opciju (v. niže dugačke nazive za IME_OPCIJE)\n" " -P ne razriješi simboličke veze pri izvršavanju naredbi poput „cd“\n" " koje promjene trenutni direktorij\n" " -p uključi privilegirani način: datoteke BASH_ENV i ENV se zanemare,\n" @@ -3954,34 +3953,34 @@ msgstr "" " pozicijski i dodijeljeni su u $1, $2, .. $N.\n" "\n" " Dugački nazivi za IME_OPCIJE koji se koriste s opcijom -o (ili +o)\n" -" allexport isto kao -a\n" -" braceexpand isto kao -B (zamjena vitičastih zagrada)\n" +" allexport == -a\n" +" braceexpand == -B (zamjena vitičastih zagrada)\n" " emacs za uređivanje redaka koristi sučelje u „emacs“ stilu\n" -" errexit isto kao -e\n" -" errtrace isto kao -E\n" -" functrace isto kao -T\n" -" hashall isto kao -h\n" -" histexpand isto kao -H\n" +" errexit == -e\n" +" errtrace == -E\n" +" functrace == -T\n" +" hashall == -h\n" +" histexpand == -H\n" " history omogući naredbu „history“\n" " ignoreeof ignorira Ctrl-D; ne završi (ne iziđe iz) ljusku na EOF\n" " interactive-comments dopusti komentiranje u interaktivnim naredbama\n" -" keyword isto kao -k\n" -" monitor isto kao -m\n" -" noclobber isto kao -C\n" -" noexec isto kao -n\n" -" noglob isto kao -f\n" -" nolog (prepoznata, ali se ignorira)\n" -" notify isto kao -b\n" -" nounset isto kao -u\n" -" onecmd isto kao -t\n" -" physical isto kao -P\n" +" keyword == -k\n" +" monitor == -m\n" +" noclobber == -C\n" +" noexec == -n\n" +" noglob == -f\n" +" nolog (prepoznata, ali je zanemarena)\n" +" notify == -b\n" +" nounset == -u\n" +" onecmd == -t\n" +" physical == -P\n" " pipefail cjevovod vrati vrijednost izlaznog koda zadnje neuspješne\n" " naredbe ili 0 ako su svi poslovi uspješno završeni\n" " posix striktno poštuje POSIX standard\n" -" privileged isto kao -p\n" -" verbose isto kao -v\n" +" privileged == -p\n" +" verbose == -v\n" " vi za uređivanje redaka koristi sučelje u „vi“ stilu\n" -" xtrace isto kao -x\n" +" xtrace == -x\n" "\n" " Završi s uspjehom osim ako je dana nevaljana opcija." @@ -4019,8 +4018,8 @@ msgstr "" " ne uspije, onda pokuša ukloniti funkciju. Neke varijable nije moguće\n" " ukloniti; pogledajte „readonly.\n" "\n" -" Završi s uspjehom osim ako je dana nevaljana opcija\n" -" ili IME je „samo-za-čitanje“." +" Završi s uspjehom osim ako je dana nevaljana opcija ili IME je\n" +" „samo-za-čitanje“. (bez navodnika)" #: builtins.c:1161 msgid "" @@ -4088,7 +4087,7 @@ msgstr "" " -p prikaže popis svih nepromjenjivih varijabli ili funkcija\n" " ovisno o opciji „-f“ (je li ili nije dana).\n" "\n" -" Argument „--“ onemogući daljnje procesiranje opcija.\n" +" Argument „--“ onemogući daljnje obrađivanje opcija.\n" "\n" " Završi s uspjehom osim ako je dana nevaljana opcija ili je IME nevaljano." @@ -4557,9 +4556,9 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -"Prikaže ili postavi masku prilikom kreiranje datoteke.\n" +"Prikaže ili postavi masku prilikom stvaranja datoteke.\n" "\n" -" Postavi masku datoteke koju kreira korisnik na MODE.\n" +" Postavi masku datoteke koju stvori korisnik na MODE.\n" " Ako MODE nije naveden, ispiše trenutnu vrijednost maske.\n" "\n" " Ako MODE počinje sa znamenkom, interpretira se kao oktalni broj;\n" @@ -4652,9 +4651,9 @@ msgstr "" "Izvrši naredbe za svakoga člana u popisu.\n" "\n" " Petlja „for“ izvrši sekvenciju naredbi za svakoga člana u popisu stavki.\n" -" Ako nema operanda „in RIJEČI ...., podrazumijeva se operand\n" +" Ako nema operanda „in RIJEČIMA...; podrazumijeva se operand\n" " „in \"$@\"“. Svakom elementu u RIJEČIMA, IME se postavi na taj element\n" -" i izvrše se NAREDBE.\n" +" i NAREDBE se izvrše.\n" "\n" " Završi s kȏdom zadnje izvršene naredbe." @@ -4712,9 +4711,9 @@ msgstr "" " Nakon izbornika prikaže se PS3 prompt i redak se čita iz standardnoga\n" " ulaza; ako se redak sastoji od broja koji odgovara jednoj od prikazanih\n" " riječi, onda varijabla IME dobije vrijednost te riječi; ako je redak\n" -" prazan, RIJEČI i prompt se ponovno prikažu; ako se pročita EOF „select“\n" -" naredba završi s poslom. Bilo koja druga vrijednost koja se pročita učini\n" -" da se IME isprazni (nulira). Pročitani redak spremi se u varijablu REPLY.\n" +" prazan, RIJEČI i prompt se ponovno prikažu; ako se pročita EOF (Ctrl-D)\n" +" „select“ naredba završi. Bilo koja druga pročitana vrijednost učini da se\n" +" IME isprazni (nulira). Pročitani redak se spremi u varijablu REPLY.\n" " NAREDBE se izvršavaju nakon svakog izbora, tako dugo dok „break“ naredba\n" " ne prekine posao.\n" "\n" @@ -4784,10 +4783,10 @@ msgstr "" " Izvrši naredbe iza „if“; ako to završi s kȏdom 0, izvrši naredbe\n" " iza prvog „then“; inače, izvrši naredbe iza sljedećeg „elif“\n" " (ako postoji) ili „else“ (ako postoji). Ako „elif“ završi s kȏdom\n" -" nula, izvrši naredbe iza odgovarajućeg „then“. Ako više nema „elif“,\n" +" nula, izvrši naredbe iza odgovarajućeg „then“. Ako nema više „elif“,\n" " ili „else“ ili nakon izvršenih naredbi iza „then“, „if“ naredba završi.\n" "\n" -" „if“ završi s kȏdom zadnjeg izvršenoga zadatka." +" „if“ završi s kȏdom zadnje izvršene naredbe." #: builtins.c:1647 msgid "" @@ -4801,8 +4800,8 @@ msgid "" msgstr "" "Izvršava naredbe tako dugo dok je test uspješan.\n" "\n" -" Izvršava sukcesivne NAREDBE tako dugo dok zadnja naredba u\n" -" „while“ NAREDBAMA završava s kȏdom 0.\n" +" Izvršava sukcesivne NAREDBE tako dugo dok zadnja naredba u „while“\n" +" NAREDBAMA završava s kȏdom 0.\n" "\n" " Završi s kȏdom zadnje izvršene naredbe." @@ -4835,7 +4834,7 @@ msgid "" " Exit Status:\n" " The coproc command returns an exit status of 0." msgstr "" -"Kreira coprocess (suproces) s imenom IME.\n" +"Stvori koproces nazvan IME.\n" "\n" " Izvrši NAREDBU asinkrono, sa standardnim izlazom i standardnim ulazom\n" " naredbe spojene preko cijevi na deskriptore datoteke dodijeljene\n" @@ -4858,7 +4857,7 @@ msgid "" msgstr "" "Definira funkciju ljuske.\n" "\n" -" Kreira funkciju ljuske nazvanu IME. Kad se pokrene kao jednostavna\n" +" Stvori funkciju ljuske nazvanu IME. Kad se pokrene kao jednostavna\n" " naredba, IME izvrši NAREDBE unutar konteksta pozivne ljuske.\n" " Kad se IME pozove, argumenti se proslijede funkciji kao $1...$N,\n" " a ime funkcije je $FUNCNAME.\n" @@ -5102,7 +5101,7 @@ msgstr "" "\n" " Doda direktorij na vrh stȏga direktorija ili zarotira stȏg tako da\n" " učini novi vrh stȏga trenutnim radnim direktorijem. Bez argumenata\n" -" razmijeni pozicije dvaju direktorija na vrhu stȏga.\n" +" razmijeni pozicije dvama direktorijima na vrhu stȏga.\n" "\n" " Opcije:\n" " -n izostavi uobičajenu promjenu direktorija kad dodaje\n" @@ -5118,8 +5117,8 @@ msgstr "" "\n" " Naredba „dirs“ prikaže trenutni sadržaj stȏga direktorija.\n" "\n" -" Završi s uspjehom osim ako je dana nevaljana opcija\n" -" ili nije uspjela promjena direktorija." +" Završi s uspjehom osim ako je dana nevaljana opcija ili promjena\n" +" direktorija nije uspjela" #: builtins.c:1855 msgid "" @@ -5149,8 +5148,9 @@ msgid "" msgstr "" "Ukloni direktorije iz stȏga.\n" "\n" -" Ukloni direktorije iz stȏga direktorija. Bez argumenata, ukloni\n" -" direktorij na vrhu stȏga i premjesti se u novi najviši direktorij.\n" +" Ukloni zapise iz stȏga direktorija. Bez argumenata, ukloni direktorij na\n" +" vrhu stȏga i učini da je trenutni radni direktorij jednak novom direktoriju\n" +" na vrhu stȏga.\n" "\n" " Opcije:\n" " -n izostavi uobičajenu promjenu direktorija kad uklanja\n" @@ -5166,8 +5166,8 @@ msgstr "" "\n" " Naredba „dirs“ prikaže trenutni sadržaj stȏga direktorija.\n" "\n" -" Završi s uspjehom osim ako je dana nevaljana opcija\n" -" ili nije uspjela promjena direktorija." +" Završi s uspjehom osim ako je dana nevaljana opcija ili promjena\n" +" direktorija nije uspjela." #: builtins.c:1885 msgid "" @@ -5299,7 +5299,7 @@ msgstr "" " koji se pretvore i kopiraju na izlaz; specifikacije formata od kojih\n" " svaka uzrokuje ispisivanje sljedećeg sukcesivnog argumenta.\n" "\n" -" Pored standardnih simbola \"diouxXfeEgGcs\"za format opisanih u printf(1),\n" +" Pored standardnih simbola „diouxXfeEgGcs” za format opisanih u printf(1),\n" " „printf” dodatno interpretira:\n" " %b proširi backslash (\\) kontrolne znakove u odgovarajuće\n" " argumente\n" @@ -5379,8 +5379,8 @@ msgstr "" "Prikaže moguća kompletiranja ovisno o opcijama.\n" "\n" " „compgen“ je namijenjen za upotrebu unutar funkcije koja generira\n" -" moguća kompletiranja. Ako je dana neobvezna opcija RIJEČ, generira\n" -" samo moguća kompletiranja podudarna s opcijom RIJEČ.\n" +" moguća kompletiranja. Ako je dana neobvezna opcija RIJEČ (word)\n" +" generira odgovarajuća kompletiranja podudarna s RIJEČI.\n" "\n" " Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška." @@ -5412,18 +5412,18 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" -"Izmjeni ili pokaže opcije za kompletiranje.\n" +"Promijeni ili pokaže opcije za kompletiranje.\n" "\n" -" Izmijeni opcije kompletiranja za svako IME u skladu s opcijama,\n" +" Promijeni opcije kompletiranja za svako IME u skladu s opcijama,\n" " ili za kompletiranje koje se trenutno vrši ako nisu navedena IMENA.\n" -" Ako nema opcija, ispišu se opcije kompletiranja za svako IME ili\n" -" za trenutno kompletiranje.\n" +" Ako nema opcija, ispiše opcije kompletiranja za svako IME ili za\n" +" trenutno kompletiranje.\n" "\n" " Opcije:\n" -" -o OPCIJA ovu OPCIJU kompletiranja postavi za svako IME\n" -" -D promijeni opcije za kompletiranje „zadanih“ naredba\n" -" -E promijeni opcije za kompletiranje „praznih“ naredba\n" -" -I promijeni opcije za kompletiranje za početnu riječ\n" +" -o OPCIJA omogući ovu OPCIJU kompletiranja za svako IME\n" +" -D promijeni opcije za „zadano” kompletiranje\n" +" -E promijeni opcije za kompletiranje „prazne“ naredbe\n" +" -I promijeni opcije za kompletiranje na početnu riječ\n" "\n" " „+“ umjesto „-“ isključi odgovarajuću opciju.\n" "\n" @@ -5433,8 +5433,8 @@ msgstr "" " pozvati „compopt“; time se onda promjene opcije za taj generator koji\n" " trenutno izvršava kompletiranja.\n" "\n" -" Završi s uspjehom osim ako nije dana nevaljana opcija\n" -" ili nije definirana specifikacija za kompletiranje IMENA." +" Završi s uspjehom osim ako nije dana nevaljana opcija ili nije definirana\n" +" specifikacija za kompletiranje IMENA." #: builtins.c:2047 msgid "" @@ -5472,13 +5472,13 @@ msgid "" msgstr "" "Pročitane retke iz standardnoga ulaza upiše u varijablu indeksirano polje.\n" "\n" -" Pročitane retke iz standardnog ulaza (ili, ako je navedena -u opcija iz\n" +" Pročitane retke iz standardnog ulaza (ili ako je navedena opcija -u, iz\n" " deskriptora datoteke FD) upiše u indeksiranu varijablu POLJE. Ako argument\n" " POLJE nije dan, za POLJE se (zadano) koristi varijabla MAPFILE\n" "\n" " Opcije:\n" " -d MEĐA prvi znak u MEĐI (umjesto LF) je znak za kraj retka\n" -" -n BROJ kopira ne više od BROJ redaka (0 znači sve retke)\n" +" -n KOLIČINA kopira ne više od KOLIČINE redaka (0 kopira sve retke)\n" " -O POČETAK upisivanje u POLJE započinje od indeksa POČETAK (zadano 0)\n" " -s BROJ preskoči (izostavi) prvih BROJ redaka\n" " -t ukloni zaostalu MEĐU (zadano LF) iz svakog učitanog retka\n" @@ -5506,7 +5506,7 @@ msgid "" " \n" " A synonym for `mapfile'." msgstr "" -"Učita retke iz datoteke u varijablu vrste indeksirano polje.\n" +"Učita retke iz datoteke u varijablu indeksirano polje.\n" "\n" " Sinonim za „mapfile“." diff --git a/sig.c b/sig.c index 6964d862..e6537d26 100644 --- a/sig.c +++ b/sig.c @@ -55,7 +55,8 @@ # include "bashhist.h" #endif -extern void initialize_siglist (); +extern void initialize_siglist PARAMS((void)); +extern void set_original_signal PARAMS((int, SigHandler *)); #if !defined (JOB_CONTROL) extern void initialize_job_signals PARAMS((void)); @@ -255,6 +256,13 @@ initialize_terminating_signals () sigaction (XSIG (i), &act, &oact); XHANDLER(i) = oact.sa_handler; XSAFLAGS(i) = oact.sa_flags; + +#if 0 + set_original_signal (XSIG(i), XHANDLER(i)); /* optimization */ +#else + set_original_signal (XSIG(i), act.sa_handler); /* optimization */ +#endif + /* Don't do anything with signals that are ignored at shell entry if the shell is not interactive. */ /* XXX - should we do this for interactive shells, too? */ diff --git a/subst.c b/subst.c index 9401161b..1b20b8c8 100644 --- a/subst.c +++ b/subst.c @@ -5951,6 +5951,7 @@ process_substitute (string, open_for_read_in_child) free_pushed_string_input (); /* Cancel traps, in trap.c. */ restore_original_signals (); /* XXX - what about special builtins? bash-4.2 */ + subshell_environment &= ~SUBSHELL_IGNTRAP; QUIT; /* catch any interrupts we got post-fork */ setup_async_signals (); #if 0 @@ -6382,6 +6383,7 @@ command_substitute (string, quoted, flags) } QUIT; /* catch any interrupts we got post-fork */ subshell_environment |= SUBSHELL_RESETTRAP; + subshell_environment &= ~SUBSHELL_IGNTRAP; } #if defined (JOB_CONTROL) diff --git a/trap.c b/trap.c index c7f8ded5..1b27fb3a 100644 --- a/trap.c +++ b/trap.c @@ -481,6 +481,32 @@ trap_handler (sig) SIGRETURN (0); } + /* This means we're in a subshell, but have not yet reset the handler for + trapped signals. We're not supposed to execute the trap in this situation; + we should restore the original signal and resend the signal to ourselves + to preserve the Posix "signal traps that are not being ignored shall be + set to the default action" semantics. */ + if ((subshell_environment & SUBSHELL_IGNTRAP) && trap_list[sig] != (char *)IGNORE_SIG) + { + sigset_t mask; + + /* Paranoia */ + if (original_signals[sig] == IMPOSSIBLE_TRAP_HANDLER) + original_signals[sig] = SIG_DFL; + + restore_signal (sig); + + /* Make sure we let the signal we just caught through */ + sigemptyset (&mask); + sigprocmask (SIG_SETMASK, (sigset_t *)NULL, &mask); + sigdelset (&mask, sig); + sigprocmask (SIG_SETMASK, &mask, (sigset_t *)NULL); + + kill (getpid (), sig); + + SIGRETURN (0); + } + if ((sig >= NSIG) || (trap_list[sig] == (char *)DEFAULT_SIG) || (trap_list[sig] == (char *)IGNORE_SIG))