- Fix error handling in tcsh-6.14.00-wide-seeks.patch
This commit is contained in:
parent
6c0b69de07
commit
53e5ec8613
@ -1,5 +1,5 @@
|
|||||||
--- tcsh/sh.h 2005-03-25 19:46:41.000000000 +0100
|
--- tcsh-6.14.00/sh.h.wide-seeks 2005-03-25 19:46:41.000000000 +0100
|
||||||
+++ tcsh-6.14.00/sh.h 2006-07-03 03:45:30.000000000 +0200
|
+++ tcsh-6.14.00/sh.h 2006-09-26 18:26:33.000000000 +0200
|
||||||
@@ -801,6 +801,13 @@
|
@@ -801,6 +801,13 @@
|
||||||
* exactly one if the input is seekable and tell is available.
|
* exactly one if the input is seekable and tell is available.
|
||||||
* In other cases, the shell buffers enough blocks to keep all loops
|
* In other cases, the shell buffers enough blocks to keep all loops
|
||||||
@ -23,21 +23,32 @@
|
|||||||
Char* _c_seek;
|
Char* _c_seek;
|
||||||
} fc;
|
} fc;
|
||||||
#define f_seek fc._f_seek
|
#define f_seek fc._f_seek
|
||||||
diff -u tcsh-6.14.00/sh.lex.c tcsh-6.14.00/sh.lex.c
|
--- tcsh-6.14.00/sh.lex.c.wide-seeks 2006-09-26 18:26:33.000000000 +0200
|
||||||
--- tcsh-6.14.00/sh.lex.c 2006-07-03 03:46:11.000000000 +0200
|
+++ tcsh-6.14.00/sh.lex.c 2006-09-26 18:28:10.000000000 +0200
|
||||||
+++ tcsh-6.14.00/sh.lex.c 2006-07-05 16:31:51.000000000 +0200
|
@@ -1694,7 +1694,8 @@
|
||||||
@@ -1736,7 +1736,9 @@
|
char cbuf[BUFSIZE + 1];
|
||||||
|
ssize_t res, r;
|
||||||
|
size_t partial;
|
||||||
|
-
|
||||||
|
+ int err;
|
||||||
|
+
|
||||||
|
assert (nchars <= sizeof(cbuf)/sizeof(*cbuf));
|
||||||
|
USE(use_fclens);
|
||||||
|
res = 0;
|
||||||
|
@@ -1736,7 +1737,11 @@
|
||||||
memmove(cbuf, cbuf + i, partial - i);
|
memmove(cbuf, cbuf + i, partial - i);
|
||||||
partial -= i;
|
partial -= i;
|
||||||
} while (partial != 0 && nchars != 0);
|
} while (partial != 0 && nchars != 0);
|
||||||
- /* Throwing away possible partial multibyte characters on error */
|
- /* Throwing away possible partial multibyte characters on error */
|
||||||
+ /* Throwing away possible partial multibyte characters on error if the
|
+ /* Throwing away possible partial multibyte characters on error if the
|
||||||
+ stream is not seekable */
|
+ stream is not seekable */
|
||||||
|
+ err = errno;
|
||||||
+ lseek(fildes, -(off_t)partial, L_INCR);
|
+ lseek(fildes, -(off_t)partial, L_INCR);
|
||||||
|
+ errno = err;
|
||||||
return res != 0 ? res : r;
|
return res != 0 ? res : r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1753,7 +1755,13 @@
|
@@ -1753,7 +1758,13 @@
|
||||||
(void) lseek(SHIN, fseekp, L_SET);
|
(void) lseek(SHIN, fseekp, L_SET);
|
||||||
}
|
}
|
||||||
if (fseekp == feobp) {
|
if (fseekp == feobp) {
|
||||||
@ -52,7 +63,7 @@ diff -u tcsh-6.14.00/sh.lex.c tcsh-6.14.00/sh.lex.c
|
|||||||
do
|
do
|
||||||
c = wide_read(SHIN, fbuf[0], BUFSIZE, 1);
|
c = wide_read(SHIN, fbuf[0], BUFSIZE, 1);
|
||||||
while (c < 0 && errno == EINTR);
|
while (c < 0 && errno == EINTR);
|
||||||
@@ -1926,9 +1934,9 @@
|
@@ -1926,9 +1937,9 @@
|
||||||
return;
|
return;
|
||||||
case TCSH_F_SEEK:
|
case TCSH_F_SEEK:
|
||||||
#ifdef WIDE_STRINGS
|
#ifdef WIDE_STRINGS
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
Summary: An enhanced version of csh, the C shell.
|
Summary: An enhanced version of csh, the C shell.
|
||||||
Name: tcsh
|
Name: tcsh
|
||||||
Version: 6.14
|
Version: 6.14
|
||||||
Release: 11
|
Release: 12
|
||||||
License: distributable
|
License: distributable
|
||||||
Group: System Environment/Shells
|
Group: System Environment/Shells
|
||||||
Source: ftp://ftp.astron.com/pub/tcsh/tcsh-%{version}.00.tar.gz
|
Source: ftp://ftp.astron.com/pub/tcsh/tcsh-%{version}.00.tar.gz
|
||||||
@ -112,6 +112,9 @@ fi
|
|||||||
%{_mandir}/*/*
|
%{_mandir}/*/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Sep 26 2006 Miloslav Trmac <mitr@redhat.com> - 6.14-12
|
||||||
|
- Fix error handling in tcsh-6.14.00-wide-seeks.patch
|
||||||
|
|
||||||
* Sat Sep 9 2006 Miloslav Trmac <mitr@redhat.com> - 6.14-11
|
* Sat Sep 9 2006 Miloslav Trmac <mitr@redhat.com> - 6.14-11
|
||||||
- Fix an unlikely crash on startup (#188279)
|
- Fix an unlikely crash on startup (#188279)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user