SHA256
1
0
forked from pool/tcsh

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:
Dr. Werner Fink 2019-05-09 08:55:54 +00:00 committed by Git OBS Bridge
parent 8eef889f4f
commit 7225664b5a
20 changed files with 363 additions and 650 deletions

View File

@ -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;

View File

@ -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++;

View File

@ -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' };

View File

@ -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;

View File

@ -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) {

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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);
}

View File

@ -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

View File

@ -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();

View File

@ -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
}

View File

@ -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, &paraml, 0);
+ p = paraml.next;
+ t = syntax(p, &paraml, 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);

View File

@ -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

View File

@ -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
View 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
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c438325448371f59b12a4c93bfd3f6982e6f79f8c5aef4bc83aac8f62766e972
size 1001909

View File

@ -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);

View File

@ -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>

View File

@ -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
@ -77,12 +67,7 @@ correction, a history mechanism, job control, and a C-like syntax.
%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
%patch12 -p0 -b .nodtlck
%patch0 -b .0
%build