This commit is contained in:
parent
f719ff0399
commit
14793aa6dc
@ -1,5 +1,5 @@
|
|||||||
--- sh.c
|
--- sh.c
|
||||||
+++ sh.c 2007-10-12 00:00:00.000000000 +0200
|
+++ sh.c 2007-10-15 12:03:11.216084278 +0200
|
||||||
@@ -1770,7 +1770,7 @@ static Char *jobargv[2] = {STRjobs, 0}
|
@@ -1770,7 +1770,7 @@ static Char *jobargv[2] = {STRjobs, 0}
|
||||||
* and finally go through the normal error mechanism, which
|
* and finally go through the normal error mechanism, which
|
||||||
* gets a chance to make the shell go away.
|
* gets a chance to make the shell go away.
|
||||||
@ -9,6 +9,44 @@
|
|||||||
|
|
||||||
void
|
void
|
||||||
pintr(void)
|
pintr(void)
|
||||||
|
--- sh.err.c
|
||||||
|
+++ sh.err.c 2007-10-15 11:53:17.760845847 +0200
|
||||||
|
@@ -51,6 +51,7 @@ char *seterr = NULL; /* Holds last err
|
||||||
|
#define ERR_NAME 0x10000000
|
||||||
|
#define ERR_SILENT 0x20000000
|
||||||
|
#define ERR_OLD 0x40000000
|
||||||
|
+#define ERR_INTERRUPT 0x80000000
|
||||||
|
|
||||||
|
#define ERR_SYNTAX 0
|
||||||
|
#define ERR_NOTALLOWED 1
|
||||||
|
@@ -600,7 +601,8 @@ stderror(unsigned int id, ...)
|
||||||
|
* else to FSHOUT/FSHDIAG. See flush in sh.print.c.
|
||||||
|
*/
|
||||||
|
flush();/*FIXRESET*/
|
||||||
|
- haderr = 1; /* Now to diagnostic output */
|
||||||
|
+ if (!(flags & ERR_INTERRUPT))
|
||||||
|
+ haderr = 1; /* Now to diagnostic output */
|
||||||
|
|
||||||
|
if (!(flags & ERR_SILENT)) {
|
||||||
|
if (flags & ERR_NAME)
|
||||||
|
@@ -643,5 +645,6 @@ stderror(unsigned int id, ...)
|
||||||
|
if (tpgrp > 0)
|
||||||
|
(void) tcsetpgrp(FSHTTY, tpgrp);
|
||||||
|
#endif
|
||||||
|
- reset(); /* Unwind */
|
||||||
|
+ if (!(flags & ERR_INTERRUPT))
|
||||||
|
+ reset(); /* Unwind */
|
||||||
|
}
|
||||||
|
--- sh.err.h
|
||||||
|
+++ sh.err.h 2007-10-15 11:21:24.718454966 +0200
|
||||||
|
@@ -5,6 +5,7 @@
|
||||||
|
#define ERR_NAME 0x10000000
|
||||||
|
#define ERR_SILENT 0x20000000
|
||||||
|
#define ERR_OLD 0x40000000
|
||||||
|
+#define ERR_INTERRUPT 0x80000000
|
||||||
|
#define ERR_SYNTAX 0
|
||||||
|
#define ERR_NOTALLOWED 1
|
||||||
|
#define ERR_WTOOLONG 2
|
||||||
--- sh.h
|
--- sh.h
|
||||||
+++ sh.h 2007-10-12 00:00:00.000000000 +0200
|
+++ sh.h 2007-10-12 00:00:00.000000000 +0200
|
||||||
@@ -548,6 +548,7 @@ EXTERN int neednote IZERO; /* Need to
|
@@ -548,6 +548,7 @@ EXTERN int neednote IZERO; /* Need to
|
||||||
@ -41,52 +79,51 @@
|
|||||||
|
|
||||||
|
|
||||||
--- sh.print.c
|
--- sh.print.c
|
||||||
+++ sh.print.c 2007-10-12 00:00:00.000000000 +0200
|
+++ sh.print.c 2007-10-15 12:09:15.994329114 +0200
|
||||||
@@ -234,7 +234,8 @@ flush(void)
|
@@ -222,7 +222,8 @@ drainoline(void)
|
||||||
|
void
|
||||||
|
flush(void)
|
||||||
|
{
|
||||||
|
- int unit;
|
||||||
|
+ int unit, oldexitset = exitset;
|
||||||
|
+ unsigned int errid = ERR_SILENT;
|
||||||
|
static int interrupted = 0;
|
||||||
|
|
||||||
|
/* int lmode; */
|
||||||
|
@@ -231,10 +232,14 @@ flush(void)
|
||||||
|
return;
|
||||||
|
if (GettingInput && !Tty_raw_mode && linp < &linbuf[sizeof linbuf - 10])
|
||||||
|
return;
|
||||||
|
+ if (handle_intr) {
|
||||||
|
+ errid |= ERR_INTERRUPT;
|
||||||
|
+ exitset = 1;
|
||||||
|
+ }
|
||||||
if (interrupted) {
|
if (interrupted) {
|
||||||
interrupted = 0;
|
interrupted = 0;
|
||||||
linp = linbuf; /* avoid recursion as stderror calls flush */
|
linp = linbuf; /* avoid recursion as stderror calls flush */
|
||||||
- stderror(ERR_SILENT);
|
- stderror(ERR_SILENT);
|
||||||
+ if (handle_intr == 0)
|
+ stderror(errid);
|
||||||
+ stderror(ERR_SILENT);
|
|
||||||
}
|
}
|
||||||
interrupted = 1;
|
interrupted = 1;
|
||||||
if (haderr)
|
if (haderr)
|
||||||
@@ -256,6 +257,8 @@ flush(void)
|
@@ -286,13 +291,14 @@ flush(void)
|
||||||
#ifdef EIO
|
|
||||||
/* We lost our tty */
|
|
||||||
case EIO:
|
|
||||||
+ if (handle_intr)
|
|
||||||
+ break;
|
|
||||||
#endif
|
|
||||||
#ifdef ENXIO
|
|
||||||
/*
|
|
||||||
@@ -263,12 +266,16 @@ flush(void)
|
|
||||||
* we lose our tty.
|
|
||||||
*/
|
|
||||||
case ENXIO:
|
|
||||||
+ if (handle_intr)
|
|
||||||
+ break;
|
|
||||||
#endif
|
|
||||||
/*
|
|
||||||
* IRIX 6.4 bogocity?
|
|
||||||
*/
|
|
||||||
#ifdef ENOTTY
|
|
||||||
case ENOTTY:
|
|
||||||
+ if (handle_intr)
|
|
||||||
+ break;
|
|
||||||
#endif
|
|
||||||
#ifdef EBADF
|
|
||||||
case EBADF:
|
|
||||||
@@ -284,6 +291,8 @@ flush(void)
|
|
||||||
*/
|
|
||||||
#ifdef EDQUOT
|
|
||||||
case EDQUOT:
|
case EDQUOT:
|
||||||
+ if (handle_intr)
|
|
||||||
+ break;
|
|
||||||
#endif
|
#endif
|
||||||
/* Nothing to do, but die */
|
/* Nothing to do, but die */
|
||||||
xexit(1);
|
- xexit(1);
|
||||||
|
- break;
|
||||||
|
+ if (handle_intr == 0)
|
||||||
|
+ xexit(1);
|
||||||
|
default:
|
||||||
|
- stderror(ERR_SILENT);
|
||||||
|
+ stderror(errid);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ exitset = oldexitset;
|
||||||
|
linp = linbuf;
|
||||||
|
interrupted = 0;
|
||||||
|
}
|
||||||
--- tc.sig.c
|
--- tc.sig.c
|
||||||
+++ tc.sig.c 2007-10-12 00:00:00.000000000 +0200
|
+++ tc.sig.c 2007-10-12 00:00:00.000000000 +0200
|
||||||
@@ -60,25 +60,34 @@ int alrmcatch_disabled; /* = 0; */
|
@@ -60,25 +60,34 @@ int alrmcatch_disabled; /* = 0; */
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Oct 15 12:11:06 CEST 2007 - werner@suse.de
|
||||||
|
|
||||||
|
- Improve bug fix (bug #331627)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Oct 12 18:18:11 CEST 2007 - werner@suse.de
|
Fri Oct 12 18:18:11 CEST 2007 - werner@suse.de
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Group: System/Shells
|
|||||||
Requires: gawk textutils
|
Requires: gawk textutils
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
Version: 6.15.00
|
Version: 6.15.00
|
||||||
Release: 22
|
Release: 25
|
||||||
Summary: The C SHell
|
Summary: The C SHell
|
||||||
Source: ftp.astron.com:/pub/tcsh/tcsh-6.15.00.tar.bz2
|
Source: ftp.astron.com:/pub/tcsh/tcsh-6.15.00.tar.bz2
|
||||||
Source1: nls-iconv
|
Source1: nls-iconv
|
||||||
@ -135,6 +135,8 @@ Authors:
|
|||||||
%doc %{_mandir}/man1/tcsh.1.gz
|
%doc %{_mandir}/man1/tcsh.1.gz
|
||||||
%{_datadir}/locale/*/LC_MESSAGES/tcsh
|
%{_datadir}/locale/*/LC_MESSAGES/tcsh
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Oct 15 2007 - werner@suse.de
|
||||||
|
- Improve bug fix (bug #331627)
|
||||||
* Fri Oct 12 2007 - werner@suse.de
|
* Fri Oct 12 2007 - werner@suse.de
|
||||||
- Fix save history bug: do not jump out from handler for pending
|
- Fix save history bug: do not jump out from handler for pending
|
||||||
signals like for SIGHUP, just run the handler up to its end and
|
signals like for SIGHUP, just run the handler up to its end and
|
||||||
|
Loading…
Reference in New Issue
Block a user