Update to tcsh 6.21.00
OBS-URL: https://build.opensuse.org/package/show/shells/tcsh?expand=0&rev=78
This commit is contained in:
parent
8eef889f4f
commit
7225664b5a
@ -4,7 +4,7 @@
|
||||
|
||||
--- sh.dol.c
|
||||
+++ sh.dol.c 2016-11-25 08:00:30.455106978 +0000
|
||||
@@ -429,6 +429,8 @@ Dgetdol(void)
|
||||
@@ -426,6 +426,8 @@ Dgetdol(void)
|
||||
size_t cbp = 0;
|
||||
int old_pintr_disabled;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- ed.defns.c
|
||||
+++ ed.defns.c 2007-08-28 10:02:42.862588122 +0000
|
||||
@@ -1412,16 +1412,6 @@ editinit(void)
|
||||
@@ -1404,16 +1404,6 @@ editinit(void)
|
||||
f->desc = CSAVS(3, 52, "Execute command");
|
||||
|
||||
f++;
|
||||
@ -17,7 +17,7 @@
|
||||
f->name = "normalize-path";
|
||||
f->func = F_PATH_NORM;
|
||||
f->desc = CSAVS(3, 53,
|
||||
@@ -1788,6 +1778,16 @@ editinit(void)
|
||||
@@ -1768,6 +1758,16 @@ editinit(void)
|
||||
f->desc = CSAVS(3, 121, "(WIN32 only) Page visible console window down");
|
||||
|
||||
f++;
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
--- sh.c
|
||||
+++ sh.c 2016-11-25 08:02:39.616478025 +0000
|
||||
@@ -864,9 +864,9 @@ main(int argc, char **argv)
|
||||
@@ -862,9 +862,9 @@ main(int argc, char **argv)
|
||||
/* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
|
||||
#if defined(DSPMBYTE)
|
||||
#if defined(NLS) && defined(LC_CTYPE)
|
||||
@ -21,7 +21,7 @@
|
||||
autoset_dspmbyte(str2short(tcp));
|
||||
--- sh.func.c
|
||||
+++ sh.func.c 2016-11-25 08:02:39.616478025 +0000
|
||||
@@ -1424,14 +1424,6 @@ dosetenv(Char **v, struct command *c)
|
||||
@@ -1420,14 +1420,6 @@ dosetenv(Char **v, struct command *c)
|
||||
}
|
||||
#endif /* apollo */
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
if (islocale_var(vp)) {
|
||||
#ifdef NLS
|
||||
int k;
|
||||
@@ -1456,6 +1448,13 @@ dosetenv(Char **v, struct command *c)
|
||||
@@ -1452,6 +1444,13 @@ dosetenv(Char **v, struct command *c)
|
||||
nlsclose();
|
||||
nlsinit();
|
||||
# endif /* NLS_CATALOGS */
|
||||
@ -52,7 +52,7 @@
|
||||
# endif /* SETLOCALEBUG */
|
||||
--- sh.set.c
|
||||
+++ sh.set.c 2016-11-25 08:02:39.616478025 +0000
|
||||
@@ -1168,11 +1168,11 @@ update_dspmbyte_vars(void)
|
||||
@@ -1164,11 +1164,11 @@ update_dspmbyte_vars(void)
|
||||
dstr1 = vp->vec[0];
|
||||
if(eq (dstr1, STRsjis))
|
||||
iskcode = 1;
|
||||
@ -66,7 +66,7 @@
|
||||
iskcode = 4;
|
||||
else if ((dstr1[0] - '0') >= 0 && (dstr1[0] - '0') <= 3) {
|
||||
iskcode = 0;
|
||||
@@ -1256,7 +1256,7 @@ update_dspmbyte_vars(void)
|
||||
@@ -1252,7 +1252,7 @@ update_dspmbyte_vars(void)
|
||||
_enable_mbdisp = 0;
|
||||
dspmbyte_ls = 0;
|
||||
}
|
||||
@ -75,7 +75,7 @@
|
||||
{
|
||||
Char mbmapstr[300];
|
||||
for (lp = 0; lp < 256; lp++)
|
||||
@@ -1264,7 +1264,7 @@ update_dspmbyte_vars(void)
|
||||
@@ -1260,7 +1260,7 @@ update_dspmbyte_vars(void)
|
||||
mbmapstr[lp] = 0;
|
||||
setcopy(STRmbytemap, mbmapstr, VAR_READWRITE);
|
||||
}
|
||||
@ -84,7 +84,7 @@
|
||||
}
|
||||
|
||||
/* dspkanji/dspmbyte autosetting */
|
||||
@@ -1273,6 +1273,7 @@ void
|
||||
@@ -1269,6 +1269,7 @@ void
|
||||
autoset_dspmbyte(const Char *pcp)
|
||||
{
|
||||
int i;
|
||||
@ -92,7 +92,7 @@
|
||||
static const struct dspm_autoset_Table {
|
||||
Char *n;
|
||||
Char *v;
|
||||
@@ -1295,13 +1296,18 @@ autoset_dspmbyte(const Char *pcp)
|
||||
@@ -1291,13 +1292,18 @@ autoset_dspmbyte(const Char *pcp)
|
||||
#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
|
||||
static const struct dspm_autoset_Table dspmc[] = {
|
||||
{ STRstarutfstar8, STRutf8 },
|
||||
@ -113,7 +113,7 @@
|
||||
for (i = 0; dspmc[i].n; i++) {
|
||||
--- tc.const.c
|
||||
+++ tc.const.c 2016-11-25 08:02:39.616478025 +0000
|
||||
@@ -133,10 +133,12 @@ Char STRmmliteral[] = { '-', 'G', '\0' }
|
||||
@@ -130,10 +130,12 @@ Char STRmmliteral[] = { '-', 'G', '\0' }
|
||||
Char STRmmliteral[] = { '-', '-', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\0' };
|
||||
# endif
|
||||
Char STReuc[] = { 'e', 'u', 'c', '\0' };
|
||||
@ -126,7 +126,7 @@
|
||||
Char STRGB2312[] = { 'g', 'b', '2', '3', '1', '2', '\0' };
|
||||
# ifdef MBYTEDEBUG /* Sorry, use for beta testing */
|
||||
Char STRmbytemap[] = { 'm', 'b', 'y', 't', 'e', 'm', 'a', 'p', '\0' };
|
||||
@@ -443,7 +445,7 @@ Char STRkilldup[] = { 'k', 'i', 'l', 'l
|
||||
@@ -440,7 +442,7 @@ Char STRkilldup[] = { 'k', 'i', 'l', 'l
|
||||
Char STRshlvl[] = { 's', 'h', 'l', 'v', 'l', '\0' };
|
||||
Char STRKSHLVL[] = { 'S', 'H', 'L', 'V', 'L', '\0' };
|
||||
Char STRLANG[] = { 'L', 'A', 'N', 'G', '\0' };
|
||||
|
@ -128,7 +128,7 @@
|
||||
|
||||
--- sh.c
|
||||
+++ sh.c 2011-11-17 08:28:47.000000000 +0000
|
||||
@@ -169,8 +169,8 @@ static void st_restore (void *);
|
||||
@@ -166,8 +166,8 @@ static void st_restore (void *);
|
||||
static void
|
||||
add_localedir_to_nlspath(const char *path)
|
||||
{
|
||||
@ -139,7 +139,7 @@
|
||||
char *old;
|
||||
char *new, *new_p;
|
||||
size_t len;
|
||||
@@ -182,7 +182,7 @@ add_localedir_to_nlspath(const char *pat
|
||||
@@ -179,7 +179,7 @@ add_localedir_to_nlspath(const char *pat
|
||||
if (path == NULL)
|
||||
return;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
--- tw.color.c
|
||||
+++ tw.color.c 2016-11-25 08:02:01.645250915 +0000
|
||||
@@ -89,6 +89,7 @@ static Variable variables[] = {
|
||||
@@ -85,6 +85,7 @@ static Variable variables[] = {
|
||||
VAR(NOS, "hl", "44;37"), /* Reg file extra hard links, obsolete? */
|
||||
VAR(NOS, "mh", "44;37"), /* Reg file extra hard links */
|
||||
VAR(NOS, "ca", "30;41"), /* File with capability */
|
||||
@ -12,7 +12,7 @@
|
||||
};
|
||||
|
||||
#define nvariables (sizeof(variables)/sizeof(variables[0]))
|
||||
@@ -325,7 +326,7 @@ parseLS_COLORS(const Char *value)
|
||||
@@ -321,7 +322,7 @@ parseLS_COLORS(const Char *value)
|
||||
size_t i, len;
|
||||
const Char *v; /* pointer in value */
|
||||
char *c; /* pointer in colors */
|
||||
@ -21,7 +21,7 @@
|
||||
jmp_buf_t osetexit;
|
||||
size_t omark;
|
||||
|
||||
@@ -382,13 +383,10 @@ parseLS_COLORS(const Char *value)
|
||||
@@ -378,13 +379,10 @@ parseLS_COLORS(const Char *value)
|
||||
if ((Char)variables[i].variable[0] == (v[0] & CHAR) &&
|
||||
(Char)variables[i].variable[1] == (v[1] & CHAR))
|
||||
break;
|
||||
@ -38,7 +38,7 @@
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -447,12 +445,13 @@ print_color(const Char *fname, size_t le
|
||||
@@ -443,12 +441,13 @@ print_color(const Char *fname, size_t le
|
||||
break;
|
||||
}
|
||||
if (i == nvariables) {
|
||||
|
@ -14,19 +14,19 @@ https://bugzilla.redhat.com/show_bug.cgi?id=879371
|
||||
Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
|
||||
---
|
||||
sh.c | 102 +++++++++++++++++++++++++++++++++++++--------------
|
||||
sh.decls.h | 4 +-
|
||||
sh.dol.c | 2 -
|
||||
sh.err.c | 16 ++++++++
|
||||
sh.h | 18 +++++++++
|
||||
sh.hist.c | 122 ++++++++++++++++++++++++++++++-------------------------------
|
||||
sh.lex.c | 8 ++--
|
||||
sh.sem.c | 2 -
|
||||
8 files changed, 178 insertions(+), 96 deletions(-)
|
||||
sh.c | 102 ++++++++++++++++++++++++++++++++++++-------------
|
||||
sh.decls.h | 4 +
|
||||
sh.dol.c | 2
|
||||
sh.err.c | 16 +++++++
|
||||
sh.h | 18 ++++++++
|
||||
sh.hist.c | 126 +++++++++++++++++++++++++++++--------------------------------
|
||||
sh.lex.c | 8 +--
|
||||
sh.sem.c | 2
|
||||
8 files changed, 178 insertions(+), 100 deletions(-)
|
||||
|
||||
--- sh.c
|
||||
+++ sh.c 2016-11-25 08:03:43.567176291 +0000
|
||||
@@ -141,6 +141,7 @@ struct saved_state {
|
||||
+++ sh.c 2019-05-09 08:16:41.673852638 +0000
|
||||
@@ -138,6 +138,7 @@ struct saved_state {
|
||||
int cantell;
|
||||
struct Bin B;
|
||||
int justpr;
|
||||
@ -34,7 +34,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
};
|
||||
|
||||
static int srccat (Char *, Char *);
|
||||
@@ -1384,7 +1385,7 @@ main(int argc, char **argv)
|
||||
@@ -1359,7 +1360,7 @@ main(int argc, char **argv)
|
||||
/*
|
||||
* Source history before .login so that it is available in .login
|
||||
*/
|
||||
@ -43,7 +43,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
#ifndef LOGINFIRST
|
||||
if (loginsh)
|
||||
(void) srccat(varval(STRhome), STRsldotlogin);
|
||||
@@ -1507,7 +1508,7 @@ static int
|
||||
@@ -1508,7 +1509,7 @@ static int
|
||||
srccat(Char *cp, Char *dp)
|
||||
{
|
||||
if (cp[0] == '/' && cp[1] == '\0')
|
||||
@ -52,7 +52,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
else {
|
||||
Char *ep;
|
||||
char *ptr;
|
||||
@@ -1523,7 +1524,7 @@ srccat(Char *cp, Char *dp)
|
||||
@@ -1524,7 +1525,7 @@ srccat(Char *cp, Char *dp)
|
||||
cleanup_push(ep, xfree);
|
||||
ptr = short2str(ep);
|
||||
|
||||
@ -61,7 +61,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
cleanup_until(ep);
|
||||
return rv;
|
||||
}
|
||||
@@ -1537,20 +1538,49 @@ static int
|
||||
@@ -1538,20 +1539,49 @@ static int
|
||||
#else
|
||||
int
|
||||
#endif /*WINNT_NATIVE*/
|
||||
@ -123,7 +123,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
}
|
||||
|
||||
|
||||
@@ -1559,7 +1589,7 @@ srcfile(const char *f, int onlyown, int
|
||||
@@ -1560,7 +1590,7 @@ srcfile(const char *f, int onlyown, int
|
||||
* fd.
|
||||
*/
|
||||
static void
|
||||
@ -132,7 +132,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
{
|
||||
st->insource = insource;
|
||||
st->SHIN = SHIN;
|
||||
@@ -1608,10 +1638,14 @@ st_save(struct saved_state *st, int unit
|
||||
@@ -1609,10 +1639,14 @@ st_save(struct saved_state *st, int unit
|
||||
st->onelflg = onelflg;
|
||||
st->enterhist = enterhist;
|
||||
st->justpr = justpr;
|
||||
@ -148,7 +148,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
st->cantell = cantell;
|
||||
cpybin(st->B, B);
|
||||
|
||||
@@ -1650,7 +1684,7 @@ st_save(struct saved_state *st, int unit
|
||||
@@ -1651,7 +1685,7 @@ st_save(struct saved_state *st, int unit
|
||||
evalp = 0;
|
||||
alvec = al;
|
||||
alvecp = 0;
|
||||
@ -157,7 +157,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
if (enterhist)
|
||||
HIST = '\0';
|
||||
insource = 1;
|
||||
@@ -1683,7 +1717,8 @@ st_restore(void *xst)
|
||||
@@ -1684,7 +1718,8 @@ st_restore(void *xst)
|
||||
}
|
||||
cpybin(B, st->B);
|
||||
|
||||
@ -167,7 +167,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
|
||||
insource = st->insource;
|
||||
SHIN = st->SHIN;
|
||||
@@ -1719,7 +1754,7 @@ st_restore(void *xst)
|
||||
@@ -1720,7 +1755,7 @@ st_restore(void *xst)
|
||||
* we don't chance it. This occurs on ".cshrc"s and the like.
|
||||
*/
|
||||
static void
|
||||
@ -176,7 +176,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
{
|
||||
struct saved_state st;
|
||||
|
||||
@@ -1745,7 +1780,7 @@ srcunit(int unit, int onlyown, int hflg,
|
||||
@@ -1746,7 +1781,7 @@ srcunit(int unit, int onlyown, int hflg,
|
||||
}
|
||||
|
||||
/* Save the current state and move us to a new state */
|
||||
@ -185,7 +185,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
|
||||
/*
|
||||
* Now if we are allowing commands to be interrupted, we let ourselves be
|
||||
@@ -2087,7 +2122,7 @@ process(int catch)
|
||||
@@ -2088,7 +2123,7 @@ process(int catch)
|
||||
* elsewhere...
|
||||
*/
|
||||
if (enterhist || (catch && intty && !whyles && !tellwhat && !arun))
|
||||
@ -194,7 +194,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
|
||||
if (Expand && seterr)
|
||||
Expand = 0;
|
||||
@@ -2174,21 +2209,28 @@ process(int catch)
|
||||
@@ -2175,21 +2210,28 @@ process(int catch)
|
||||
void
|
||||
dosource(Char **t, struct command *c)
|
||||
{
|
||||
@ -226,7 +226,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
}
|
||||
|
||||
f = globone(*t++, G_ERROR);
|
||||
@@ -2197,9 +2239,15 @@ dosource(Char **t, struct command *c)
|
||||
@@ -2198,9 +2240,15 @@ dosource(Char **t, struct command *c)
|
||||
xfree(f);
|
||||
t = glob_all_or_error(t);
|
||||
cleanup_push(t, blk_cleanup);
|
||||
@ -245,8 +245,8 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
|
||||
/*
|
||||
--- sh.decls.h
|
||||
+++ sh.decls.h 2016-11-25 08:03:43.567176291 +0000
|
||||
@@ -38,6 +38,7 @@
|
||||
+++ sh.decls.h 2019-05-09 08:16:41.673852638 +0000
|
||||
@@ -37,6 +37,7 @@
|
||||
*/
|
||||
extern Char *gethdir (const Char *);
|
||||
extern void dosource (Char **, struct command *);
|
||||
@ -254,7 +254,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
extern void exitstat (void);
|
||||
extern void goodbye (Char **, struct command *);
|
||||
extern void importpath (Char *);
|
||||
@@ -99,6 +100,7 @@ extern void cleanup_until_mark(void);
|
||||
@@ -98,6 +99,7 @@ extern void cleanup_until_mark(void);
|
||||
extern size_t cleanup_push_mark(void);
|
||||
extern void cleanup_pop_mark(size_t);
|
||||
extern void open_cleanup(void *);
|
||||
@ -262,7 +262,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
extern void opendir_cleanup(void *);
|
||||
extern void sigint_cleanup(void *);
|
||||
extern void sigprocmask_cleanup(void *);
|
||||
@@ -221,7 +223,7 @@ extern struct Hist *enthist (int, str
|
||||
@@ -220,7 +222,7 @@ extern struct Hist *enthist (int, str
|
||||
extern void savehist (struct wordent *, int);
|
||||
extern char *fmthist (int, ptr_t);
|
||||
extern void rechist (Char *, int);
|
||||
@ -272,8 +272,8 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
extern void sethistory (int);
|
||||
|
||||
--- sh.dol.c
|
||||
+++ sh.dol.c 2016-11-25 08:03:43.571176209 +0000
|
||||
@@ -1120,6 +1120,6 @@ again:
|
||||
+++ sh.dol.c 2019-05-09 08:16:41.673852638 +0000
|
||||
@@ -1117,6 +1117,6 @@ again:
|
||||
*obp = 0;
|
||||
tmp = short2str(obuf);
|
||||
(void) xwrite(0, tmp, strlen (tmp));
|
||||
@ -282,8 +282,8 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
cleanup_until(&inheredoc);
|
||||
}
|
||||
--- sh.err.c
|
||||
+++ sh.err.c 2016-11-25 08:03:43.571176209 +0000
|
||||
@@ -514,6 +514,22 @@ open_cleanup(void *xptr)
|
||||
+++ sh.err.c 2019-05-09 08:16:41.677852563 +0000
|
||||
@@ -511,6 +511,22 @@ open_cleanup(void *xptr)
|
||||
}
|
||||
|
||||
void
|
||||
@ -307,8 +307,8 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
{
|
||||
DIR *dir;
|
||||
--- sh.h
|
||||
+++ sh.h 2016-11-25 08:03:43.571176209 +0000
|
||||
@@ -50,6 +50,24 @@
|
||||
+++ sh.h 2019-05-09 08:16:41.677852563 +0000
|
||||
@@ -49,6 +49,24 @@
|
||||
# include <inttypes.h>
|
||||
#endif
|
||||
|
||||
@ -334,9 +334,9 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
typedef unsigned long intptr_t;
|
||||
#endif
|
||||
--- sh.hist.c
|
||||
+++ sh.hist.c 2016-11-25 08:03:43.571176209 +0000
|
||||
@@ -36,6 +36,8 @@ RCSID("$tcsh: sh.hist.c,v 3.61 2015/06/0
|
||||
|
||||
+++ sh.hist.c 2019-05-09 08:36:00.679789483 +0000
|
||||
@@ -32,6 +32,8 @@
|
||||
#include "sh.h"
|
||||
#include <stdio.h> /* for rename(2), grr. */
|
||||
#include <assert.h>
|
||||
+#include <unistd.h>
|
||||
@ -344,7 +344,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
#include "tc.h"
|
||||
#include "dotlock.h"
|
||||
|
||||
@@ -46,14 +48,6 @@ Char HistLit = 0;
|
||||
@@ -42,14 +44,6 @@ Char HistLit = 0;
|
||||
static int heq (const struct wordent *, const struct wordent *);
|
||||
static void hfree (struct Hist *);
|
||||
|
||||
@ -359,7 +359,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
/*
|
||||
* C shell
|
||||
*/
|
||||
@@ -145,13 +139,13 @@ discardExcess(int hlen)
|
||||
@@ -141,13 +135,13 @@ discardExcess(int hlen)
|
||||
void
|
||||
savehist(
|
||||
struct wordent *sp,
|
||||
@ -375,7 +375,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
discardExcess(histlen);
|
||||
}
|
||||
|
||||
@@ -923,7 +917,7 @@ enthist(
|
||||
@@ -919,7 +913,7 @@ enthist(
|
||||
int event, /* newly incremented global eventno */
|
||||
struct wordent *lp,
|
||||
int docopy,
|
||||
@ -384,7 +384,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
int hlen) /* -1 if unknown */
|
||||
{
|
||||
struct Hist *p = NULL, *pp = &Histlist, *pTime = NULL;
|
||||
@@ -943,7 +937,7 @@ enthist(
|
||||
@@ -939,7 +933,7 @@ enthist(
|
||||
Htime = p->Htime;
|
||||
/* If we are merging, and the old entry is at the place we want
|
||||
* to insert the new entry, then remember the place. */
|
||||
@ -393,7 +393,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
pTime = p->Hprev;
|
||||
if (!fastMergeErase)
|
||||
renumberHist(p); /* Reset Href of subsequent entries */
|
||||
@@ -1002,7 +996,7 @@ enthist(
|
||||
@@ -998,7 +992,7 @@ enthist(
|
||||
/* The head of history list is the default insertion point.
|
||||
If merging, advance insertion point, in pp, according to Htime. */
|
||||
/* XXX -- In histdup=all, Htime values can be non-monotonic. */
|
||||
@ -402,7 +402,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
pp = mergeInsertionPoint(np, pTime);
|
||||
for (p = pp->Hnext; p && p->Htime == np->Htime; pp = p, p = p->Hnext) {
|
||||
if (heq(&p->Hlex, &np->Hlex)) {
|
||||
@@ -1041,11 +1035,11 @@ hfree(struct Hist *hp)
|
||||
@@ -1037,11 +1031,11 @@ hfree(struct Hist *hp)
|
||||
}
|
||||
|
||||
PG_STATIC void
|
||||
@ -416,7 +416,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
int old_output_raw;
|
||||
|
||||
/*
|
||||
@@ -1057,7 +1051,7 @@ phist(struct Hist *hp, int hflg)
|
||||
@@ -1053,7 +1047,7 @@ phist(struct Hist *hp, int hflg)
|
||||
old_output_raw = output_raw;
|
||||
output_raw = 1;
|
||||
cleanup_push(&old_output_raw, output_raw_restore);
|
||||
@ -425,7 +425,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
/*
|
||||
* Make file entry with history time in format:
|
||||
* "+NNNNNNNNNN" (10 digits, left padded with ascii '0')
|
||||
@@ -1088,7 +1082,7 @@ phist(struct Hist *hp, int hflg)
|
||||
@@ -1084,7 +1078,7 @@ phist(struct Hist *hp, int hflg)
|
||||
}
|
||||
|
||||
PG_STATIC void
|
||||
@ -434,7 +434,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
{
|
||||
struct Hist *hp;
|
||||
if (setintr) {
|
||||
@@ -1097,7 +1091,7 @@ dophist(int n, int hflg)
|
||||
@@ -1093,7 +1087,7 @@ dophist(int n, int hflg)
|
||||
pintr_push_enable(&old_pintr_disabled);
|
||||
cleanup_until(&old_pintr_disabled);
|
||||
}
|
||||
@ -443,7 +443,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
/* Since the history list is stored most recent first, non-reversing
|
||||
* print needs to print (backwards) up the list. */
|
||||
if ((unsigned)n >= histCount)
|
||||
@@ -1111,10 +1105,10 @@ dophist(int n, int hflg)
|
||||
@@ -1107,10 +1101,10 @@ dophist(int n, int hflg)
|
||||
if (hp == NULL)
|
||||
return; /* nothing to print */
|
||||
for (; hp != &Histlist; hp = hp->Hprev)
|
||||
@ -456,7 +456,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1122,7 +1116,7 @@ dophist(int n, int hflg)
|
||||
@@ -1118,7 +1112,7 @@ dophist(int n, int hflg)
|
||||
void
|
||||
dohist(Char **vp, struct command *c)
|
||||
{
|
||||
@ -465,7 +465,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
|
||||
USE(c);
|
||||
if (getn(varval(STRhistory)) == 0)
|
||||
@@ -1133,40 +1127,40 @@ dohist(Char **vp, struct command *c)
|
||||
@@ -1129,40 +1123,40 @@ dohist(Char **vp, struct command *c)
|
||||
while (*++vp2)
|
||||
switch (*vp2) {
|
||||
case 'c':
|
||||
@ -517,7 +517,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
rechist(*vp, 1);
|
||||
else {
|
||||
if (*vp)
|
||||
@@ -1174,7 +1168,7 @@ dohist(Char **vp, struct command *c)
|
||||
@@ -1170,7 +1164,7 @@ dohist(Char **vp, struct command *c)
|
||||
else {
|
||||
n = getn(varval(STRhistory));
|
||||
}
|
||||
@ -526,7 +526,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1222,10 +1216,9 @@ dotlock_cleanup(void* lockpath)
|
||||
@@ -1218,10 +1212,9 @@ dotlock_cleanup(void* lockpath)
|
||||
void
|
||||
rechist(Char *fname, int ref)
|
||||
{
|
||||
@ -539,7 +539,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
struct stat st;
|
||||
static Char *dumphist[] = {STRhistory, STRmhT, 0, 0};
|
||||
|
||||
@@ -1294,46 +1287,49 @@ rechist(Char *fname, int ref)
|
||||
@@ -1290,50 +1283,49 @@ rechist(Char *fname, int ref)
|
||||
cleanup_push(lockpath, dotlock_cleanup);
|
||||
#endif
|
||||
}
|
||||
@ -593,7 +593,11 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
+ SHOUT = ftmp;
|
||||
+ }
|
||||
didfds = oldidfds;
|
||||
-#ifndef WINNT_NATIVE
|
||||
- (void)rename(path, short2str(fname));
|
||||
-#else
|
||||
- (void)ReplaceFile( short2str(fname),path,NULL,0,NULL,NULL);
|
||||
-#endif
|
||||
cleanup_until(fname);
|
||||
}
|
||||
|
||||
@ -611,7 +615,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
|
||||
if (fname != NULL)
|
||||
loadhist_cmd[2] = fname;
|
||||
@@ -1342,17 +1338,19 @@ loadhist(Char *fname, int mflg)
|
||||
@@ -1342,17 +1334,19 @@ loadhist(Char *fname, int mflg)
|
||||
else
|
||||
loadhist_cmd[2] = STRtildothist;
|
||||
|
||||
@ -636,8 +640,8 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
|
||||
void
|
||||
--- sh.lex.c
|
||||
+++ sh.lex.c 2016-11-25 08:03:43.571176209 +0000
|
||||
@@ -1602,7 +1602,7 @@ wide_read(int fildes, Char *buf, size_t
|
||||
+++ sh.lex.c 2019-05-09 08:16:41.677852563 +0000
|
||||
@@ -1608,7 +1608,7 @@ wide_read(int fildes, Char *buf, size_t
|
||||
/* Throwing away possible partial multibyte characters on error if the
|
||||
stream is not seekable */
|
||||
err = errno;
|
||||
@ -646,7 +650,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
errno = err;
|
||||
return res != 0 ? res : r;
|
||||
}
|
||||
@@ -1617,7 +1617,7 @@ bgetc(void)
|
||||
@@ -1623,7 +1623,7 @@ bgetc(void)
|
||||
if (cantell) {
|
||||
if (fseekp < fbobp || fseekp > feobp) {
|
||||
fbobp = feobp = fseekp;
|
||||
@ -655,7 +659,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
}
|
||||
if (fseekp == feobp) {
|
||||
#ifdef WIDE_STRINGS
|
||||
@@ -1821,7 +1821,7 @@ btell(struct Ain *l)
|
||||
@@ -1827,7 +1827,7 @@ btell(struct Ain *l)
|
||||
void
|
||||
btoeof(void)
|
||||
{
|
||||
@ -664,7 +668,7 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
aret = TCSH_F_SEEK;
|
||||
fseekp = feobp;
|
||||
alvec = NULL;
|
||||
@@ -1839,7 +1839,7 @@ settell(void)
|
||||
@@ -1845,7 +1845,7 @@ settell(void)
|
||||
cantell = 0;
|
||||
if (arginp || onelflg || intty)
|
||||
return;
|
||||
@ -674,8 +678,8 @@ Changes by Fridolin Pokorny <fpokorny@redhat.com>
|
||||
fbuf = xcalloc(2, sizeof(Char **));
|
||||
fblocks = 1;
|
||||
--- sh.sem.c
|
||||
+++ sh.sem.c 2016-11-25 08:03:43.571176209 +0000
|
||||
@@ -909,7 +909,7 @@ doio(struct command *t, int *pipein, int
|
||||
+++ sh.sem.c 2019-05-09 08:16:41.677852563 +0000
|
||||
@@ -905,7 +905,7 @@ doio(struct command *t, int *pipein, int
|
||||
fd = xopen(tmp, O_WRONLY|O_APPEND|O_LARGEFILE);
|
||||
#else /* !O_APPEND */
|
||||
fd = xopen(tmp, O_WRONLY|O_LARGEFILE);
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
--- sh.hist.c
|
||||
+++ sh.hist.c 2015-05-05 07:16:26.382084939 +0000
|
||||
@@ -103,7 +103,7 @@ hremove(struct Hist *hp)
|
||||
@@ -99,7 +99,7 @@ hremove(struct Hist *hp)
|
||||
|
||||
/* Prune length of history list to specified size by history variable. */
|
||||
PG_STATIC void
|
||||
@ -13,7 +13,7 @@
|
||||
{
|
||||
struct Hist *hp, *np;
|
||||
if (histTail == NULL) {
|
||||
@@ -114,7 +114,7 @@ discardExcess(int hlen)
|
||||
@@ -110,7 +110,7 @@ discardExcess(int hlen)
|
||||
* the list is still too long scan the whole list as before. But only do a
|
||||
* full scan if the list is more than 6% (1/16th) too long. */
|
||||
while (histCount > (unsigned)hlen && (np = Histlist.Hnext)) {
|
||||
@ -22,7 +22,7 @@
|
||||
hremove(np), hfree(np);
|
||||
else
|
||||
break;
|
||||
@@ -129,7 +129,7 @@ discardExcess(int hlen)
|
||||
@@ -125,7 +125,7 @@ discardExcess(int hlen)
|
||||
return; /* don't bother doing the full scan */
|
||||
for (hp = &Histlist; histCount > (unsigned)hlen &&
|
||||
(np = hp->Hnext) != NULL;)
|
||||
@ -31,7 +31,7 @@
|
||||
hremove(np), hfree(np);
|
||||
else
|
||||
hp = np;
|
||||
@@ -146,7 +146,7 @@ savehist(
|
||||
@@ -142,7 +142,7 @@ savehist(
|
||||
return;
|
||||
if (sp)
|
||||
(void) enthist(++eventno, sp, 1, flg, histlen);
|
||||
@ -40,7 +40,7 @@
|
||||
}
|
||||
|
||||
#define USE_JENKINS_HASH 1
|
||||
@@ -1357,5 +1357,16 @@ void
|
||||
@@ -1353,5 +1353,16 @@ void
|
||||
sethistory(int n)
|
||||
{
|
||||
histlen = n;
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
--- sh.c
|
||||
+++ sh.c 2016-11-25 08:05:00.501610199 +0000
|
||||
@@ -1540,18 +1540,18 @@ int
|
||||
@@ -1541,18 +1541,18 @@ int
|
||||
#endif /*WINNT_NATIVE*/
|
||||
srcfile(const char *f, int onlyown, int flg, Char **av)
|
||||
{
|
||||
@ -31,7 +31,7 @@
|
||||
|
||||
if (flg & (HIST_FILE_WRLCK | HIST_FILE_RDLCK)) {
|
||||
struct flock fl;
|
||||
@@ -1561,26 +1561,35 @@ srcfile(const char *f, int onlyown, int
|
||||
@@ -1562,26 +1562,35 @@ srcfile(const char *f, int onlyown, int
|
||||
fl.l_start = 0;
|
||||
fl.l_len = 0;
|
||||
|
||||
|
@ -1,42 +0,0 @@
|
||||
The code in tw_str_add() attempts to be efficient by sliding the
|
||||
pointers to reallocated elements within the string list to the new
|
||||
virtual address using a computed offset between buffers.
|
||||
|
||||
For bounds checked pointers, this produces out of bounds pointers.
|
||||
Additionally, the subtraction of pointers to different objects is
|
||||
undefined in C so a sufficently "smart" compiler could chose to do
|
||||
anything here since in knows the objects are different.
|
||||
|
||||
We need this change on our research platform to avoid crashes in tab
|
||||
completion.
|
||||
|
||||
-- Brooks
|
||||
|
||||
commit 85489fafb8fd908ba307df0c774e1706c19cd4b8
|
||||
Author: Brooks Davis <brooks@one-eyed-alien.net>
|
||||
Date: Wed Dec 7 01:04:14 2016 +0000
|
||||
|
||||
Fix a pointer provenance error in list extension.
|
||||
|
||||
When updating pointers to a buffer of linked list elements, derive
|
||||
the new pointers from the new buffer rather than updating the old pointers
|
||||
to the new virtual memory address of the buffer (resulting in out of bounds
|
||||
values).
|
||||
|
||||
---
|
||||
tw.init.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
--- tw.init.c
|
||||
+++ tw.init.c 2016-12-07 15:27:20.024397004 +0000
|
||||
@@ -125,9 +125,8 @@ tw_str_add(stringlist_t *sl, size_t len)
|
||||
sl->buff = xrealloc(sl->buff, sl->tbuff * sizeof(Char));
|
||||
/* Re-thread the new pointer list, if changed */
|
||||
if (ptr != NULL && ptr != sl->buff) {
|
||||
- intptr_t offs = sl->buff - ptr;
|
||||
for (i = 0; i < sl->nlist; i++)
|
||||
- sl->list[i] += offs;
|
||||
+ sl->list[i] = sl->buff + (sl->list[i] - ptr);
|
||||
}
|
||||
disabled_cleanup(&pintr_disabled);
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
From 766c095e4c8c57aea196a1325e395f5d6162cdce Mon Sep 17 00:00:00 2001
|
||||
From: "David Kaspar [Dee'Kej]" <dkaspar@redhat.com>
|
||||
Date: Mon, 28 Nov 2016 17:48:29 +0100
|
||||
Subject: [PATCH] Regression of 'rm *' when 'rmstar' is set fixed
|
||||
|
||||
This regression was introduced by commit: 858a705a79a5389
|
||||
|
||||
Signed-off-by: David Kaspar [Dee'Kej] <dkaspar@redhat.com>
|
||||
---
|
||||
sh.func.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/sh.func.c b/sh.func.c
|
||||
index a866076..b0dfbc9 100644
|
||||
--- a/sh.func.c
|
||||
+++ b/sh.func.c
|
||||
@@ -2734,16 +2734,17 @@ nlsclose(void)
|
||||
int
|
||||
getYN(const char *prompt)
|
||||
{
|
||||
- int doit, c;
|
||||
+ int doit;
|
||||
+ char c;
|
||||
xprintf("%s", prompt);
|
||||
flush();
|
||||
- (void) force_read(SHIN, &c, 1);
|
||||
+ (void) force_read(SHIN, &c, sizeof(c));
|
||||
/*
|
||||
* Perhaps we should use the yesexpr from the
|
||||
* actual locale
|
||||
*/
|
||||
doit = (strchr(CGETS(22, 14, "Yy"), c) != NULL);
|
||||
- while (c != '\n' && force_read(SHIN, &c, 1) == 1)
|
||||
+ while (c != '\n' && force_read(SHIN, &c, sizeof(c)) == 1)
|
||||
continue;
|
||||
return doit;
|
||||
}
|
||||
--
|
||||
2.7.4
|
@ -1,32 +0,0 @@
|
||||
From dd0f2cbde7ed7ccbcc420613992d6876302b8b0b Mon Sep 17 00:00:00 2001
|
||||
From: Werner Fink <werner@suse.de>
|
||||
Date: Fri, 28 Apr 2017 09:21:18 +0200
|
||||
Subject: [PATCH] Do not convert current used control bytes into wide characters
|
||||
|
||||
Signed-off-by: Werner Fink <werner@suse.de>
|
||||
---
|
||||
ed.inputl.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
--- ed.inputl.c
|
||||
+++ ed.inputl.c 2017-04-28 07:12:15.777368417 +0000
|
||||
@@ -699,7 +699,7 @@ GetNextCommand(KEYCMD *cmdnum, Char *ch)
|
||||
/* XXX: This needs to be fixed so that we don't just truncate
|
||||
* the character, we unquote it.
|
||||
*/
|
||||
- if (*ch < NT_NUM_KEYS)
|
||||
+ if (*ch > 0 && *ch < NT_NUM_KEYS)
|
||||
cmd = CurrentKeyMap[*ch];
|
||||
else
|
||||
#ifdef WINNT_NATIVE
|
||||
@@ -800,6 +800,10 @@ GetNextChar(Char *cp)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
+ if (cbp == 0 && *cbuf < NT_NUM_KEYS && CurrentKeyMap[(unsigned char)*cbuf] == F_XKEY) {
|
||||
+ *cp = (unsigned char)*cbuf;
|
||||
+ break;
|
||||
+ }
|
||||
cbp++;
|
||||
if (normal_mbtowc(cp, cbuf, cbp) == -1) {
|
||||
reset_mbtowc();
|
@ -4,7 +4,7 @@
|
||||
|
||||
--- sh.hist.c
|
||||
+++ sh.hist.c 2017-07-19 10:01:20.795354927 +0000
|
||||
@@ -1278,6 +1278,11 @@ rechist(Char *fname, int ref)
|
||||
@@ -1274,6 +1274,11 @@ rechist(Char *fname, int ref)
|
||||
}
|
||||
|
||||
if (merge) {
|
||||
@ -16,7 +16,7 @@
|
||||
if (lock) {
|
||||
#ifndef WINNT_NATIVE
|
||||
char *lockpath = strsave(short2str(fname));
|
||||
@@ -1287,6 +1292,7 @@ rechist(Char *fname, int ref)
|
||||
@@ -1283,6 +1288,7 @@ rechist(Char *fname, int ref)
|
||||
cleanup_push(lockpath, dotlock_cleanup);
|
||||
#endif
|
||||
}
|
||||
|
@ -1,54 +0,0 @@
|
||||
https://bugs.astron.com/view.php?id=74#c3238
|
||||
|
||||
Avoid trouble with e.g.
|
||||
|
||||
alias postcmd false
|
||||
set counter=1
|
||||
while ($counter > )
|
||||
@ counter--
|
||||
echo $counter
|
||||
end
|
||||
|
||||
and similar scriptlets, maybe there is a better solution to
|
||||
protect dowhile(), nevertheless this works.
|
||||
|
||||
---
|
||||
tcsh-6.20.00/sh.c | 13 +++++++++++--
|
||||
1 file changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
--- tcsh-6.20.00/sh.c 2017-07-19 12:29:15.512471750 +0200
|
||||
+++ tcsh-6.20.00/sh.c 2019-04-08 13:35:32.462771640 +0200
|
||||
@@ -2028,6 +2028,7 @@ process(int catch)
|
||||
getexit(osetexit);
|
||||
omark = cleanup_push_mark();
|
||||
for (;;) {
|
||||
+ const struct wordent *p;
|
||||
struct command *t;
|
||||
int hadhist, old_pintr_disabled;
|
||||
|
||||
@@ -2178,7 +2179,9 @@ process(int catch)
|
||||
/*
|
||||
* Parse the words of the input into a parse tree.
|
||||
*/
|
||||
- t = syntax(paraml.next, ¶ml, 0);
|
||||
+ p = paraml.next;
|
||||
+ t = syntax(p, ¶ml, 0);
|
||||
+
|
||||
/*
|
||||
* We cannot cleanup push here, because cd /blah; echo foo
|
||||
* would rewind t on the chdir error, and free the rest of the command
|
||||
@@ -2188,7 +2191,13 @@ process(int catch)
|
||||
stderror(ERR_OLD);
|
||||
}
|
||||
|
||||
- postcmd();
|
||||
+ /*
|
||||
+ * The potential aliasrun() might destroy the parse tree,
|
||||
+ * that is that the dowhile() would be never reached again.
|
||||
+ */
|
||||
+ if (srchx(p->word) != TC_WHILE)
|
||||
+ postcmd();
|
||||
+
|
||||
/*
|
||||
* Execute the parse tree From: Michael Schroeder
|
||||
* <mlschroe@immd4.informatik.uni-erlangen.de> was execute(t, tpgrp);
|
277
tcsh-6.20.00.dif
277
tcsh-6.20.00.dif
@ -1,277 +0,0 @@
|
||||
---
|
||||
config/linux | 10 ++++++++++
|
||||
config_f.h | 11 ++++++++---
|
||||
configure | 2 +-
|
||||
configure.ac | 2 +-
|
||||
glob.h | 3 ++-
|
||||
pathnames.h | 2 +-
|
||||
sh.c | 3 +++
|
||||
tc.alloc.c | 10 ++++++----
|
||||
tc.func.c | 8 ++++++--
|
||||
tc.str.c | 2 +-
|
||||
tc.who.c | 3 +++
|
||||
tcsh.man | 2 +-
|
||||
tests/lexical.at | 6 +++---
|
||||
tw.h | 4 ++++
|
||||
14 files changed, 50 insertions(+), 18 deletions(-)
|
||||
|
||||
--- config/linux
|
||||
+++ config/linux 2016-11-25 09:07:12.893851835 +0000
|
||||
@@ -92,6 +92,9 @@
|
||||
#ifndef _SVID_SOURCE
|
||||
# define _SVID_SOURCE
|
||||
#endif
|
||||
+#ifndef _DEFAULT_SOURCE
|
||||
+# define _DEFAULT_SOURCE
|
||||
+#endif
|
||||
#ifndef _POSIX_SOURCE
|
||||
# define _POSIX_SOURCE
|
||||
#endif
|
||||
@@ -132,4 +135,11 @@
|
||||
# define POSIX
|
||||
#endif
|
||||
|
||||
+#if !defined(PW_SHADOW)
|
||||
+# define PW_SHADOW
|
||||
+#endif
|
||||
+#if !defined(SuSE)
|
||||
+# define SuSE
|
||||
+#endif
|
||||
+
|
||||
#endif /* _h_config */
|
||||
--- config_f.h
|
||||
+++ config_f.h 2016-11-25 08:18:00.925719793 +0000
|
||||
@@ -64,7 +64,12 @@
|
||||
/*
|
||||
* LOGINFIRST Source ~/.login before ~/.cshrc
|
||||
*/
|
||||
-#undef LOGINFIRST
|
||||
+#define LOGINFIRST
|
||||
+
|
||||
+/*
|
||||
+ * USERLOGINFIRST Source ~/.login before ~/.cshrc
|
||||
+ */
|
||||
+#undef USERLOGINFIRST
|
||||
|
||||
/*
|
||||
* VIDEFAULT Make the VI mode editor the default
|
||||
@@ -158,7 +163,7 @@
|
||||
* successful, set $REMOTEHOST to the name or address of the
|
||||
* host
|
||||
*/
|
||||
-#define REMOTEHOST
|
||||
+#undef REMOTEHOST
|
||||
|
||||
/*
|
||||
* COLOR_LS_F Do you want to use builtin color ls-F ?
|
||||
@@ -181,7 +186,7 @@
|
||||
* RCSID This defines if we want rcs strings in the binary or not
|
||||
*
|
||||
*/
|
||||
-#if !defined(lint) && !defined(SABER) && !defined(__CLCC__)
|
||||
+#if !defined(lint) && !defined(SABER) && !defined(__CLCC__) && !defined(__linux__)
|
||||
# ifndef __GNUC__
|
||||
# define RCSID(id) static char *rcsid = (id);
|
||||
# else
|
||||
--- configure
|
||||
+++ configure 2016-11-25 08:18:00.925719793 +0000
|
||||
@@ -4284,7 +4284,7 @@ return tgetent ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' termlib termcap curses ncurses; do
|
||||
+for ac_lib in '' termlib termcap tinfo curses ncurses; do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
else
|
||||
--- configure.ac
|
||||
+++ configure.ac 2016-11-25 08:20:19.034907025 +0000
|
||||
@@ -317,7 +317,7 @@ esac
|
||||
dnl Checks for libraries
|
||||
AC_SEARCH_LIBS(crypt, crypt)
|
||||
AC_SEARCH_LIBS(getspnam, sec)
|
||||
-AC_SEARCH_LIBS([tgetent], [termlib termcap curses ncurses], [], [
|
||||
+AC_SEARCH_LIBS([tgetent], [termlib termcap tinfo curses ncurses], [], [
|
||||
AC_MSG_ERROR([unable to find the tgetent() function])
|
||||
])
|
||||
AC_SEARCH_LIBS(gethostbyname, nsl)
|
||||
--- glob.h
|
||||
+++ glob.h 2016-11-25 08:18:00.925719793 +0000
|
||||
@@ -72,6 +72,7 @@ typedef struct {
|
||||
#define GLOB_NOSYS (-4) /* Implementation does not support function. */
|
||||
|
||||
/* #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) */
|
||||
+#if (!defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _BSD_SOURCE || defined _GNU_SOURCE)
|
||||
#define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */
|
||||
#define GLOB_BRACE 0x0080 /* Expand braces ala csh. */
|
||||
#define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */
|
||||
@@ -84,7 +85,7 @@ typedef struct {
|
||||
#define GLOB_DOT 0x8000 /* don't skip dotfiles (except . and ..) */
|
||||
|
||||
#define GLOB_ABEND GLOB_ABORTED /* source compatibility */
|
||||
-/* #endif */
|
||||
+#endif
|
||||
|
||||
int glob (const char *, int, int (*)(const char *, int), glob_t *);
|
||||
void globfree (glob_t *);
|
||||
--- pathnames.h
|
||||
+++ pathnames.h 2016-11-25 08:18:00.925719793 +0000
|
||||
@@ -84,7 +84,7 @@
|
||||
# endif /* !_PATH_DOTLOGIN */
|
||||
#endif /* sgi || OREO || cray || AMIX || CDC */
|
||||
|
||||
-#if (defined(_CRAYCOM) || defined(Lynx)) && !defined(_PATH_TCSHELL)
|
||||
+#if (defined(_CRAYCOM) || defined(Lynx) || defined(linux)) && !defined(_PATH_TCSHELL)
|
||||
# define _PATH_TCSHELL "/bin/tcsh" /* 1st class shell */
|
||||
#endif /* _CRAYCOM && !_PATH_TCSHELL */
|
||||
|
||||
--- sh.c
|
||||
+++ sh.c 2016-11-25 08:18:00.925719793 +0000
|
||||
@@ -1371,6 +1371,9 @@ main(int argc, char **argv)
|
||||
setintr = osetintr;
|
||||
parintr = oparintr;
|
||||
}
|
||||
+#ifndef USERLOGINFIRST
|
||||
+# undef LOGINFIRST
|
||||
+#endif
|
||||
#ifdef LOGINFIRST
|
||||
if (loginsh)
|
||||
(void) srccat(varval(STRhome), STRsldotlogin);
|
||||
--- tc.alloc.c
|
||||
+++ tc.alloc.c 2016-11-25 08:18:00.929719710 +0000
|
||||
@@ -521,7 +521,7 @@ smalloc(size_t n)
|
||||
{
|
||||
ptr_t ptr;
|
||||
|
||||
- n = n ? n : 1;
|
||||
+ n = n ? n+1 : 1;
|
||||
|
||||
#ifdef USE_SBRK
|
||||
if (membot == NULL)
|
||||
@@ -544,7 +544,7 @@ srealloc(ptr_t p, size_t n)
|
||||
{
|
||||
ptr_t ptr;
|
||||
|
||||
- n = n ? n : 1;
|
||||
+ n = n ? n+1 : 1;
|
||||
|
||||
#ifdef USE_SBRK
|
||||
if (membot == NULL)
|
||||
@@ -568,7 +568,7 @@ scalloc(size_t s, size_t n)
|
||||
ptr_t ptr;
|
||||
|
||||
n *= s;
|
||||
- n = n ? n : 1;
|
||||
+ n = n ? n+1 : 1;
|
||||
|
||||
#ifdef USE_SBRK
|
||||
if (membot == NULL)
|
||||
@@ -593,8 +593,10 @@ scalloc(size_t s, size_t n)
|
||||
void
|
||||
sfree(ptr_t p)
|
||||
{
|
||||
- if (p && !dont_free)
|
||||
+ if (p && !dont_free) {
|
||||
free(p);
|
||||
+ p = (ptr_t)NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
#endif /* SYSMALLOC */
|
||||
--- tc.func.c
|
||||
+++ tc.func.c 2016-11-25 08:18:00.929719710 +0000
|
||||
@@ -725,9 +725,13 @@ auto_lock(void)
|
||||
handle_pending_signals();
|
||||
errno = 0;
|
||||
}
|
||||
- if (spw != NULL) /* shadowed passwd */
|
||||
+ if (spw != NULL) /* shadowed passwd */
|
||||
srpp = spw->sp_pwdp;
|
||||
+ else
|
||||
+ srpp = pw->pw_passwd; /* nis extended passwd? */
|
||||
}
|
||||
+ endspent();
|
||||
+ endpwent();
|
||||
|
||||
#else
|
||||
|
||||
@@ -1934,7 +1938,7 @@ getremotehost(int dest_fd)
|
||||
* have not caught up yet.
|
||||
*/
|
||||
addr.s_addr = inet_addr(name);
|
||||
- if (addr.s_addr != (unsigned int)~0)
|
||||
+ if (addr.s_addr != ~0U)
|
||||
host = name;
|
||||
else {
|
||||
if (sptr != name) {
|
||||
--- tc.str.c
|
||||
+++ tc.str.c 2016-11-25 08:18:00.929719710 +0000
|
||||
@@ -350,7 +350,7 @@ s_strlen(const Char *str)
|
||||
{
|
||||
size_t n;
|
||||
|
||||
- for (n = 0; *str++; n++)
|
||||
+ for (n = 0; str && *str; n++, str++)
|
||||
continue;
|
||||
return (n);
|
||||
}
|
||||
--- tc.who.c
|
||||
+++ tc.who.c 2016-11-25 08:18:00.929719710 +0000
|
||||
@@ -280,6 +280,9 @@ watch_login(int force)
|
||||
}
|
||||
stlast = sta.st_mtime;
|
||||
#if defined(HAVE_GETUTENT) || defined(HAVE_GETUTXENT)
|
||||
+# ifndef HAVE_UTMPX_H
|
||||
+ utmpname( _PATH_UTMP );
|
||||
+# endif
|
||||
setutent();
|
||||
#else
|
||||
if ((utmpfd = xopen(TCSH_PATH_UTMP, O_RDONLY|O_LARGEFILE)) < 0) {
|
||||
--- tcsh.man
|
||||
+++ tcsh.man 2016-11-25 08:21:43.605184550 +0000
|
||||
@@ -603,7 +603,7 @@ Repeating \fIdabbrev-expand\fR without a
|
||||
changes to the next previous word etc., skipping identical matches
|
||||
much like \fIhistory-search-backward\fR does.
|
||||
.TP 8
|
||||
-.B delete-char \fR(not bound)
|
||||
+.B delete-char \fR(bound to `Del' if using the standard \fI/etc/csh.cshrc\fR)
|
||||
Deletes the character under the cursor.
|
||||
See also \fIdelete-char-or-list-or-eof\fR.
|
||||
Cursor behavior modified by \fBvimode\fR.
|
||||
--- tw.h
|
||||
+++ tw.h 2016-11-25 08:18:00.929719710 +0000
|
||||
@@ -33,6 +33,10 @@
|
||||
#ifndef _h_tw
|
||||
#define _h_tw
|
||||
|
||||
+#ifndef _h_sh
|
||||
+# include "sh.h"
|
||||
+#endif
|
||||
+
|
||||
#define TW_PATH 0x1000
|
||||
#define TW_ZERO 0x0fff
|
||||
|
||||
--- tests/lexical.at
|
||||
+++ tests/lexical.at 2019-04-09 07:40:10.142511227 +0000
|
||||
@@ -567,10 +567,10 @@ run=3
|
||||
]])
|
||||
AT_DATA([uniformity_test.csh],
|
||||
[[
|
||||
-set SERVICE_NAME_LOG = `cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g'`
|
||||
+set SERVICE_NAME_LOG = `cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g'`
|
||||
echo -n "$SERVICE_NAME_LOG" > ./output1
|
||||
|
||||
-cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g' > ./output2
|
||||
+cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g' > ./output2
|
||||
|
||||
diff -uprN ./output1 ./output2 >& /dev/null
|
||||
|
||||
@@ -587,7 +587,7 @@ AT_DATA([quoting_result_test.csh],
|
||||
echo "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP\)(HOST=db\)(PORT=1521\)\)(CONNECT_DATA=(SERVER=DEDICATED\)(SERVICE_NAME=bns03\)\)\)" > ./expected_result
|
||||
|
||||
set string = "jdbc_url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=bns03)))"
|
||||
-set SERVICE_NAME_LOG = `echo "$string" | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\)/\\\)/g'`
|
||||
+set SERVICE_NAME_LOG = `echo "$string" | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\)/\\\)/g'`
|
||||
|
||||
echo "$SERVICE_NAME_LOG" > ./actual_result
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b89de7064ab54dac454a266cfe5d8bf66940cb5ed048d0c30674ea62e7ecef9d
|
||||
size 1001696
|
219
tcsh-6.21.00.dif
Normal file
219
tcsh-6.21.00.dif
Normal file
@ -0,0 +1,219 @@
|
||||
---
|
||||
config/linux | 10 ++++++++++
|
||||
config_f.h | 9 +++++++--
|
||||
glob.h | 3 ++-
|
||||
pathnames.h | 2 +-
|
||||
sh.c | 3 +++
|
||||
tc.alloc.c | 10 ++++++----
|
||||
tc.func.c | 8 ++++++--
|
||||
tc.str.c | 2 +-
|
||||
tc.who.c | 3 +++
|
||||
tcsh.man | 2 +-
|
||||
tw.h | 4 ++++
|
||||
11 files changed, 44 insertions(+), 12 deletions(-)
|
||||
|
||||
--- config/linux
|
||||
+++ config/linux 2019-05-09 08:41:54.237060106 +0000
|
||||
@@ -92,6 +92,9 @@
|
||||
#ifndef _SVID_SOURCE
|
||||
# define _SVID_SOURCE
|
||||
#endif
|
||||
+#ifndef _DEFAULT_SOURCE
|
||||
+# define _DEFAULT_SOURCE
|
||||
+#endif
|
||||
#ifndef _POSIX_SOURCE
|
||||
# define _POSIX_SOURCE
|
||||
#endif
|
||||
@@ -132,4 +135,11 @@
|
||||
# define POSIX
|
||||
#endif
|
||||
|
||||
+#if !defined(PW_SHADOW)
|
||||
+# define PW_SHADOW
|
||||
+#endif
|
||||
+#if !defined(SuSE)
|
||||
+# define SuSE
|
||||
+#endif
|
||||
+
|
||||
#endif /* _h_config */
|
||||
--- config_f.h
|
||||
+++ config_f.h 2019-05-09 08:41:54.237060106 +0000
|
||||
@@ -63,7 +63,12 @@
|
||||
/*
|
||||
* LOGINFIRST Source ~/.login before ~/.cshrc
|
||||
*/
|
||||
-#undef LOGINFIRST
|
||||
+#define LOGINFIRST
|
||||
+
|
||||
+/*
|
||||
+ * USERLOGINFIRST Source ~/.login before ~/.cshrc
|
||||
+ */
|
||||
+#undef USERLOGINFIRST
|
||||
|
||||
/*
|
||||
* VIDEFAULT Make the VI mode editor the default
|
||||
@@ -157,7 +162,7 @@
|
||||
* successful, set $REMOTEHOST to the name or address of the
|
||||
* host
|
||||
*/
|
||||
-#define REMOTEHOST
|
||||
+#undef REMOTEHOST
|
||||
|
||||
/*
|
||||
* COLOR_LS_F Do you want to use builtin color ls-F ?
|
||||
--- glob.h
|
||||
+++ glob.h 2019-05-09 08:41:54.237060106 +0000
|
||||
@@ -72,6 +72,7 @@ typedef struct {
|
||||
#define GLOB_NOSYS (-4) /* Implementation does not support function. */
|
||||
|
||||
/* #if !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) */
|
||||
+#if (!defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _BSD_SOURCE || defined _GNU_SOURCE)
|
||||
#define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */
|
||||
#define GLOB_BRACE 0x0080 /* Expand braces ala csh. */
|
||||
#define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */
|
||||
@@ -84,7 +85,7 @@ typedef struct {
|
||||
#define GLOB_DOT 0x8000 /* don't skip dotfiles (except . and ..) */
|
||||
|
||||
#define GLOB_ABEND GLOB_ABORTED /* source compatibility */
|
||||
-/* #endif */
|
||||
+#endif
|
||||
|
||||
int glob (const char *, int, int (*)(const char *, int), glob_t *);
|
||||
void globfree (glob_t *);
|
||||
--- pathnames.h
|
||||
+++ pathnames.h 2019-05-09 08:41:54.237060106 +0000
|
||||
@@ -83,7 +83,7 @@
|
||||
# endif /* !_PATH_DOTLOGIN */
|
||||
#endif /* sgi || OREO || cray || AMIX || CDC */
|
||||
|
||||
-#if (defined(_CRAYCOM) || defined(Lynx)) && !defined(_PATH_TCSHELL)
|
||||
+#if (defined(_CRAYCOM) || defined(Lynx) || defined(linux)) && !defined(_PATH_TCSHELL)
|
||||
# define _PATH_TCSHELL "/bin/tcsh" /* 1st class shell */
|
||||
#endif /* _CRAYCOM && !_PATH_TCSHELL */
|
||||
|
||||
--- sh.c
|
||||
+++ sh.c 2019-05-09 08:41:54.237060106 +0000
|
||||
@@ -1346,6 +1346,9 @@ main(int argc, char **argv)
|
||||
setintr = osetintr;
|
||||
parintr = oparintr;
|
||||
}
|
||||
+#ifndef USERLOGINFIRST
|
||||
+# undef LOGINFIRST
|
||||
+#endif
|
||||
#ifdef LOGINFIRST
|
||||
if (loginsh)
|
||||
(void) srccat(varval(STRhome), STRsldotlogin);
|
||||
--- tc.alloc.c
|
||||
+++ tc.alloc.c 2019-05-09 08:41:54.237060106 +0000
|
||||
@@ -518,7 +518,7 @@ smalloc(size_t n)
|
||||
{
|
||||
ptr_t ptr;
|
||||
|
||||
- n = n ? n : 1;
|
||||
+ n = n ? n+1 : 1;
|
||||
|
||||
#ifdef USE_SBRK
|
||||
if (membot == NULL)
|
||||
@@ -541,7 +541,7 @@ srealloc(ptr_t p, size_t n)
|
||||
{
|
||||
ptr_t ptr;
|
||||
|
||||
- n = n ? n : 1;
|
||||
+ n = n ? n+1 : 1;
|
||||
|
||||
#ifdef USE_SBRK
|
||||
if (membot == NULL)
|
||||
@@ -565,7 +565,7 @@ scalloc(size_t s, size_t n)
|
||||
ptr_t ptr;
|
||||
|
||||
n *= s;
|
||||
- n = n ? n : 1;
|
||||
+ n = n ? n+1 : 1;
|
||||
|
||||
#ifdef USE_SBRK
|
||||
if (membot == NULL)
|
||||
@@ -590,8 +590,10 @@ scalloc(size_t s, size_t n)
|
||||
void
|
||||
sfree(ptr_t p)
|
||||
{
|
||||
- if (p && !dont_free)
|
||||
+ if (p && !dont_free) {
|
||||
free(p);
|
||||
+ p = (ptr_t)NULL;
|
||||
+ }
|
||||
}
|
||||
|
||||
#endif /* SYSMALLOC */
|
||||
--- tc.func.c
|
||||
+++ tc.func.c 2019-05-09 08:41:54.237060106 +0000
|
||||
@@ -721,9 +721,13 @@ auto_lock(void)
|
||||
handle_pending_signals();
|
||||
errno = 0;
|
||||
}
|
||||
- if (spw != NULL) /* shadowed passwd */
|
||||
+ if (spw != NULL) /* shadowed passwd */
|
||||
srpp = spw->sp_pwdp;
|
||||
+ else
|
||||
+ srpp = pw->pw_passwd; /* nis extended passwd? */
|
||||
}
|
||||
+ endspent();
|
||||
+ endpwent();
|
||||
|
||||
#else
|
||||
|
||||
@@ -1937,7 +1941,7 @@ getremotehost(int dest_fd)
|
||||
* have not caught up yet.
|
||||
*/
|
||||
addr.s_addr = inet_addr(name);
|
||||
- if (addr.s_addr != (unsigned int)~0)
|
||||
+ if (addr.s_addr != ~0U)
|
||||
host = name;
|
||||
else {
|
||||
if (sptr != name) {
|
||||
--- tc.str.c
|
||||
+++ tc.str.c 2019-05-09 08:41:54.241060031 +0000
|
||||
@@ -347,7 +347,7 @@ s_strlen(const Char *str)
|
||||
{
|
||||
size_t n;
|
||||
|
||||
- for (n = 0; *str++; n++)
|
||||
+ for (n = 0; str && *str; n++, str++)
|
||||
continue;
|
||||
return (n);
|
||||
}
|
||||
--- tc.who.c
|
||||
+++ tc.who.c 2019-05-09 08:41:54.241060031 +0000
|
||||
@@ -259,6 +259,9 @@ watch_login(int force)
|
||||
}
|
||||
stlast = sta.st_mtime;
|
||||
#if defined(HAVE_GETUTENT) || defined(HAVE_GETUTXENT)
|
||||
+# ifndef HAVE_UTMPX_H
|
||||
+ utmpname( _PATH_UTMP );
|
||||
+# endif
|
||||
setutent();
|
||||
#else
|
||||
if ((utmpfd = xopen(TCSH_PATH_UTMP, O_RDONLY|O_LARGEFILE)) < 0) {
|
||||
--- tcsh.man
|
||||
+++ tcsh.man 2019-05-09 08:41:54.241060031 +0000
|
||||
@@ -602,7 +602,7 @@ Repeating \fIdabbrev-expand\fR without a
|
||||
changes to the next previous word etc., skipping identical matches
|
||||
much like \fIhistory-search-backward\fR does.
|
||||
.TP 8
|
||||
-.B delete-char \fR(not bound)
|
||||
+.B delete-char \fR(bound to `Del' if using the standard \fI/etc/csh.cshrc\fR)
|
||||
Deletes the character under the cursor.
|
||||
See also \fIdelete-char-or-list-or-eof\fR.
|
||||
Cursor behavior modified by \fBvimode\fR.
|
||||
--- tw.h
|
||||
+++ tw.h 2019-05-09 08:41:54.241060031 +0000
|
||||
@@ -32,6 +32,10 @@
|
||||
#ifndef _h_tw
|
||||
#define _h_tw
|
||||
|
||||
+#ifndef _h_sh
|
||||
+# include "sh.h"
|
||||
+#endif
|
||||
+
|
||||
#define TW_PATH 0x1000
|
||||
#define TW_ZERO 0x0fff
|
||||
|
3
tcsh-6.21.00.tar.gz
Normal file
3
tcsh-6.21.00.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c438325448371f59b12a4c93bfd3f6982e6f79f8c5aef4bc83aac8f62766e972
|
||||
size 1001909
|
@ -1,86 +0,0 @@
|
||||
[PATCH] Slightly less drastic closem()
|
||||
Miloslav Trmac mitr at volny.cz
|
||||
Thu Sep 9 19:17:10 EDT 2004
|
||||
|
||||
Previous message: [PATCH] Slightly less drastic closem()
|
||||
Next message: Newlines in command substitution
|
||||
Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
|
||||
|
||||
On Wed, Sep 08, 2004 at 08:38:03PM -0400, Christos Zoulas wrote:
|
||||
(Original mail reordered)
|
||||
> Finally, I do have an old patch that makes tcsh not use closem at all,
|
||||
> and adds sh like I/O redirection (plus other fd manipulations) to it,
|
||||
sh-like I/O redirection could actually make the problem worse if
|
||||
tcsh is using NSS after performing the redirections --- I haven't checked
|
||||
whether it does.
|
||||
|
||||
Avoiding closem () completely is of course the "correct" fix, but I'm
|
||||
afraid I won't be able to spend the time needed to do this.
|
||||
|
||||
|
||||
> The same problem has been present for years with NIS. Same as with nss_ldap,
|
||||
> NIS happily discovers that the fd it was using before is gone, and re-opens
|
||||
> it.
|
||||
Are other file types than sockets involved?
|
||||
|
||||
> I don't like the socket hack because:
|
||||
>
|
||||
> 1. It makes closem not close all the fds anymore.
|
||||
I have already argued this should not be a problem: tcsh never
|
||||
creates sockets.
|
||||
|
||||
> 3. the message that nss_ldap produces should be log_debug at best.
|
||||
I can imagine scenarios where the message is really useful, but
|
||||
I don't feel strongly about it.
|
||||
|
||||
> 2. The fact that nss_ldap uses sockets now is an artifact of the
|
||||
> implementation. What if tomorrow it changes to use doors or named pipes?
|
||||
I have never met doors in practice so I won't comment on them except by
|
||||
noting that the nss_ldap in question surely won't use them.
|
||||
|
||||
If nss_ldap used named pipes, the "it is necessary for performance"
|
||||
justification would be so weak that I would prefer patching nss_ldap
|
||||
to close the pipe after each call instead of changing tcsh.
|
||||
|
||||
nss_ldap and tcsh are fighting over a gray area in the
|
||||
system <-> application contract, so it seems reasonable to
|
||||
solve it by a "compromise", restricting the behavior of both.
|
||||
|
||||
|
||||
AFAICS, solving the general case reliably would require a lot of work
|
||||
and I have no emprical evidence suggesting that this work is necessary.
|
||||
|
||||
To make this lobbying attempt complete :-), I'm attaching a properly
|
||||
commented socket hack patch.
|
||||
Mirek
|
||||
---
|
||||
sh.misc.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
--- sh.misc.c
|
||||
+++ sh.misc.c 2017-06-16 07:51:59.732399828 +0000
|
||||
@@ -257,6 +257,7 @@ void
|
||||
closem(void)
|
||||
{
|
||||
int f, num_files;
|
||||
+ struct stat st;
|
||||
|
||||
#ifdef NLS_BUGS
|
||||
#ifdef NLS_CATALOGS
|
||||
@@ -274,6 +275,16 @@ closem(void)
|
||||
#ifdef MALLOC_TRACE
|
||||
&& f != 25
|
||||
#endif /* MALLOC_TRACE */
|
||||
+#ifdef S_ISSOCK
|
||||
+ /* NSS modules (e.g. Linux nss_ldap) might keep sockets open.
|
||||
+ * If we close such a socket, both the NSS module and tcsh think
|
||||
+ * they "own" the descriptor.
|
||||
+ *
|
||||
+ * Not closing sockets does not make the cleanup use of closem()
|
||||
+ * less reliable because tcsh never creates sockets.
|
||||
+ */
|
||||
+ && fstat(f, &st) == 0 && !S_ISSOCK(st.st_mode)
|
||||
+#endif
|
||||
)
|
||||
{
|
||||
xclose(f);
|
35
tcsh.changes
35
tcsh.changes
@ -1,3 +1,38 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu May 9 08:50:56 UTC 2019 - Dr. Werner Fink <werner@suse.de>
|
||||
|
||||
- Update to tcsh bug fix version V6.21.00 - 20190508
|
||||
*. Abort history loading on words and lines too long
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1598502
|
||||
* Introduce GetCmdChar() to avoid open coding array access.
|
||||
* make closem() not close sockets so as not to affect nss_ldap.
|
||||
tcsh never creates sockets so that's ok (Miloslav Trmac)
|
||||
* Make rmstar work with aliased rm
|
||||
* convert match() from recursive to backtracking.
|
||||
* Handle 8 bit characters in bindkey (Werner Fink)
|
||||
* Look for tgetent in libtinfo as well (Werner Fink)
|
||||
* Don't play pointer tricks that are undefined in modern c (Brooks Davis)
|
||||
* Fix out of bounds read (Brooks Davis)
|
||||
* Fix type of read in prompt confirmation (eg. rmstar) (David Kaspar)
|
||||
* Delay arginp parsing
|
||||
- Drop patches now upstream
|
||||
* tcsh-6.20-ptr-update.patch
|
||||
* tcsh-6.20-rmstar.patch
|
||||
* tcsh-6.20.00-8bit-cmdkeys.patch
|
||||
* tcsh-6.20.00-postcmd.patch
|
||||
* tcsh-closem.patch
|
||||
- Port patches
|
||||
* tcsh-6.15.00-pipe.dif
|
||||
* tcsh-6.16.00-norm-cmd.dif
|
||||
* tcsh-6.17.06-dspmbyte.dif
|
||||
* tcsh-6.18.03-catalogs.dif
|
||||
* tcsh-6.18.03-colorls.dif
|
||||
* tcsh-6.18.03-history-file-locking.patch
|
||||
* tcsh-6.18.03-history-merge.dif
|
||||
* tcsh-6.19.00-history-file-locking-order.patch
|
||||
* tcsh-6.20.00-avoid-dotlock-for-fcntl.patch
|
||||
- Rename patch tcsh-6.20.00.dif which now becomes tcsh-6.21.00.dif
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 9 07:26:37 UTC 2019 - Dr. Werner Fink <werner@suse.de>
|
||||
|
||||
|
43
tcsh.spec
43
tcsh.spec
@ -17,16 +17,16 @@
|
||||
|
||||
|
||||
Name: tcsh
|
||||
Version: 6.20.00
|
||||
Version: 6.21.00
|
||||
Release: 0
|
||||
Summary: The C SHell
|
||||
License: BSD-3-Clause
|
||||
Group: System/Shells
|
||||
Url: http://www.tcsh.org/
|
||||
Source: ftp.astron.com:/pub/tcsh/tcsh-6.20.00.tar.gz
|
||||
Source: ftp.astron.com:/pub/tcsh/tcsh-6.21.00.tar.gz
|
||||
Source2: bindkey.tcsh
|
||||
Source3: complete.tcsh
|
||||
Patch0: tcsh-6.20.00.dif
|
||||
Patch0: tcsh-6.21.00.dif
|
||||
Patch1: tcsh-6.15.00-pipe.dif
|
||||
Patch2: tcsh-6.16.00-norm-cmd.dif
|
||||
Patch4: tcsh-6.18.03-colorls.dif
|
||||
@ -37,18 +37,8 @@ Patch9: tcsh-6.18.03-history-file-locking.patch
|
||||
Patch10: tcsh-6.18.03-history-merge.dif
|
||||
# PATCH-FIX-SUSE fix history file locking: first unlock then close
|
||||
Patch11: tcsh-6.19.00-history-file-locking-order.patch
|
||||
# PATCH-FIX-COMUNITY fix handling of rmstar
|
||||
Patch12: tcsh-6.20-rmstar.patch
|
||||
# PATCH-FIX-COMUNITY fix updating pointers to a reallocated buffer of linked list elements
|
||||
Patch13: tcsh-6.20-ptr-update.patch
|
||||
# PATCH-FIX-SUSE Do not convert current used control bytes into wide characters
|
||||
Patch14: tcsh-6.20.00-8bit-cmdkeys.patch
|
||||
# PATCH-FIX-COMMUNITY Slightly less drastic closem() -- bsc#1028864
|
||||
Patch15: tcsh-closem.patch
|
||||
# PATCH-FIX-SUSE Aoid dot locking as patch 9 and 11 do the job better
|
||||
Patch16: tcsh-6.20.00-avoid-dotlock-for-fcntl.patch
|
||||
# PATCH-FIX-SUSE Do not destroy parse tree due set postcmd alias
|
||||
Patch17: tcsh-6.20.00-postcmd.patch
|
||||
Patch12: tcsh-6.20.00-avoid-dotlock-for-fcntl.patch
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: ncurses-devel
|
||||
@ -69,21 +59,16 @@ correction, a history mechanism, job control, and a C-like syntax.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch1 -b .pipe
|
||||
%patch2 -b .normcmd
|
||||
%patch4 -b .colorls
|
||||
%patch5 -b .dspmbyte
|
||||
%patch6 -b .catalogs
|
||||
%patch9 -b .histlock
|
||||
%patch10 -b .histmerg
|
||||
%patch11 -b .histlckord
|
||||
%patch12 -p1 -b .rmstar
|
||||
%patch13 -p0 -b .ptrbuf
|
||||
%patch14 -p0 -b .8bit
|
||||
%patch15 -p0 -b .nss
|
||||
%patch16 -p0 -b .nodtlck
|
||||
%patch17 -p1 -b .postcmd
|
||||
%patch0 -b .0
|
||||
%patch1 -b .pipe
|
||||
%patch2 -b .normcmd
|
||||
%patch4 -b .colorls
|
||||
%patch5 -b .dspmbyte
|
||||
%patch6 -b .catalogs
|
||||
%patch9 -b .histlock
|
||||
%patch10 -b .histmerg
|
||||
%patch11 -b .histlckord
|
||||
%patch12 -p0 -b .nodtlck
|
||||
%patch0 -b .0
|
||||
|
||||
%build
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user