Accepting request 92396 from shells

- Increase size of hash table for runtime linker a lot 

- Split off tcsh-lang as its own package
- Make language catalogs work that is use tcsh instead of tcsh.cat
  as this is the system default 

- Update to tcsh minor version V6.17.06
  * PR/110: Add $anyerror to select behavior. Default to the new one.
  * Don't try to spell commands that are correct (Rouben Rostamian)
    [./tcsh -f; set path=($path 2); mkdir foo2; cd foo2; touch foo;
     chmod +x foo; set correct=cmd; ./foo -> ../foo]
  * Don't push the syntax struct on the cleanup stack, because on foo;bar
    if foo fails, we will free bar prematurely (Ben Miller)
  * Avoid infinite loop while trying to print the pid of a dying process
    to a closed file (Bob Arendt)
  * Handle completion of ${ variables (Anthony Mallet)
  * Add --disable-nls-catalogs (Corinna Vinschen)
  * convert message catalogs to UTF-8 (Werner Fink)
  * check that the NLS path works before setting $NLSPATH.
  * use SYSMALLOC for GLIBC (Werner Fink)
  * use mallinfo for SYSMALLOC (Corinna Vinschen)
  * Use mkstemp() if there for here docs (Werner Fink)
  * Fix handling of errors and exit values in builtins (Werner Fink)
  * Better pty name detection (Werner Fink)
  * Enable NLS catalogs on Cygwin (Corinna Vinschen)
  * NLSPATH handling fixes (Corinna Vinschen)
  * Avoid infrequent exit when tcsh cd's into a non-existent directory
    https://bugzilla.novell.com/show_bug.cgi?id=293395 (Werner Fink)
  * Don't try to spell check full path binaries that are correct because
    they can cause hangs when other nfs partitions are hung. (Werner Fink)

OBS-URL: https://build.opensuse.org/request/show/92396
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/tcsh?expand=0&rev=41
This commit is contained in:
Stephan Kulow 2011-11-21 11:51:22 +00:00 committed by Git OBS Bridge
commit a4d7e022e1
20 changed files with 740 additions and 1418 deletions

View File

@ -1,30 +0,0 @@
#!/bin/sh
iconv_files () {
FROM=$1
shift
for i in $*
do
iconv --from $FROM --to UTF-8 < $i > $i.tmp
mv $i.tmp $i
perl -pi -e 's/codeset *= *[^[:space:]]*/codeset=UTF-8/' $i
done
}
iconv_files ISO-8859-1 nls/C/set*
iconv_files ISO-8859-1 nls/et/set*
iconv_files ISO-8859-1 nls/finnish/set*
iconv_files ISO-8859-1 nls/french/set*
iconv_files ISO-8859-1 nls/german/set*
iconv_files ISO-8859-7 nls/greek/set*
iconv_files ISO-8859-1 nls/italian/set*
iconv_files EUC-JP nls/ja/set*
iconv_files ISO-8859-2 nls/pl/set*
iconv_files KOI8-R nls/russian/set*
iconv_files ISO-8859-1 nls/spanish/set*
iconv_files KOI8-U nls/ukrainian/set*
for i in nls/*/charset ; do
perl -pi -e 's/codeset *= *[^[:space:]]*/codeset=UTF-8/' $i
perl -pi -e 's/1 *[^[:space:]]*/1 UTF-8/' $i
done

View File

@ -1,22 +0,0 @@
--- tw.parse.c
+++ tw.parse.c 2008-11-26 17:52:07.190195106 +0000
@@ -347,9 +347,19 @@ tenematch(Char *inputline, int num_read,
goto end;
}
}
+
Strbuf_append(&wordbuf, qline.s + wordp);
Strbuf_terminate(&wordbuf);
cleanup_push(&wordbuf, Strbuf_cleanup);
+
+ if ((looking == TW_COMMAND) && (*wordbuf.s == '/')) {
+ if (executable((Char*)0, wordbuf.s, 0)) {
+ cleanup_until(&wordbuf);
+ search_ret = 0;
+ goto end;
+ }
+ }
+
search_ret = spell_me(&wordbuf, looking, pat, suf);
qline.len = wordp;
Strbuf_append(&qline, wordbuf.s);

View File

@ -1,13 +0,0 @@
--- sh.func.c
+++ sh.func.c 2007-07-13 10:36:10.233075909 +0000
@@ -2416,9 +2416,7 @@ nlsinit(void)
if (catalog != default_catalog)
xfree(catalog);
#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
- /* xcatgets (), not CGETS, the charset name should be in ASCII anyway. */
- catgets_iconv = iconv_open (nl_langinfo (CODESET),
- xcatgets(catd, 255, 1, "ASCII"));
+ catgets_iconv = iconv_open (nl_langinfo (CODESET), "UTF-8");
#endif /* HAVE_ICONV && HAVE_NL_LANGINFO */
#endif /* NLS_CATALOGS */
#ifdef WINNT_NATIVE

View File

@ -1,10 +0,0 @@
--- sh.c
+++ sh.c 2009-08-14 08:27:58.129901841 +0000
@@ -2153,6 +2153,7 @@ mailchk(void)
while (readdir(mailbox))
mailcount++;
+ closedir(mailbox);
if (mailcount == 0)
continue;

View File

@ -1,77 +0,0 @@
--- sh.h
+++ sh.h 2007-07-23 10:01:10.230408643 +0000
@@ -640,7 +640,7 @@ EXTERN int SHDIAG IZERO; /* Diagnostic
EXTERN int OLDSTD IZERO; /* Old standard input (def for cmds) */
-#if SYSVREL == 4 && defined(_UTS)
+#if (SYSVREL == 4 && defined(_UTS)) || defined(__linux__)
/*
* From: fadden@uts.amdahl.com (Andy McFadden)
* we need sigsetjmp for UTS4, but not UTS2.1
@@ -658,7 +658,7 @@ EXTERN int OLDSTD IZERO; /* Old standa
#ifdef SIGSETJMP
typedef struct { sigjmp_buf j; } jmp_buf_t;
-# define setexit() sigsetjmp(reslab.j)
+# define setexit() sigsetjmp(reslab.j, 1)
# define _reset() siglongjmp(reslab.j, 1)
#else
typedef struct { jmp_buf j; } jmp_buf_t;
--- sh.c
+++ sh.c 2007-07-23 10:02:41.640206073 +0000
@@ -78,7 +78,7 @@ extern int NLSMapsAreInited;
* ported to Apple Unix (TM) (OREO) 26 -- 29 Jun 1987
*/
-jmp_buf_t reslab INIT_ZERO_STRUCT;
+jmp_buf_t reslab;
static const char tcshstr[] = "tcsh";
@@ -178,6 +178,8 @@ main(int argc, char **argv)
int osetintr;
struct sigaction oparintr;
+ memset(&reslab, 0, sizeof(reslab));
+
#ifdef WINNT_NATIVE
nt_init();
#endif /* WINNT_NATIVE */
@@ -2013,7 +2015,10 @@ process(int catch)
#endif /* SIG_WINDOW */
setcopy(STR_, InputBuf, VAR_READWRITE | VAR_NOGLOB);
cmd_done:
- cleanup_until(&paraml);
+ if (cleanup_reset())
+ cleanup_until(&paraml);
+ else
+ haderr = 1;
}
cleanup_pop_mark(omark);
resexit(osetexit);
--- sh.decls.h
+++ sh.decls.h 2007-07-23 13:37:27.493023737 +0000
@@ -90,6 +90,7 @@ extern void cleanup_push_internal(voi
#define cleanup_push(v, f) cleanup_push_internal(v, f)
#endif
);
+extern int cleanup_reset (void);
extern void cleanup_ignore(void *);
extern void cleanup_until (void *);
extern void cleanup_until_mark(void);
--- sh.err.c
+++ sh.err.c 2007-07-23 13:39:48.944172212 +0000
@@ -448,6 +448,12 @@ cleanup_until(void *last_var)
abort();
}
+int
+cleanup_reset(void)
+{
+ return (cleanup_sp > cleanup_mark);
+}
+
void
cleanup_until_mark(void)
{

View File

@ -1,27 +0,0 @@
Author: christos <christos>
Date: Thu May 13 18:39:02 2010 +0000
add a rule to make catalogs and propagate ${MAKE} instead of hard-coding make.
--- a/Makefile.in
+++ b/Makefile.in
@@ -687,7 +687,7 @@ shar:
rm -rf tcsh-${VERSION}
catalogs:
- @(cd nls; make catalogs)
+ @(cd nls; ${MAKE})
tcsh-${VERSION}.tar.Z:
rm -rf tcsh-${VERSION}
--- a/nls/Makefile.in
+++ b/nls/Makefile.in
@@ -18,7 +18,7 @@ install: $(INSTALLED)
$(INSTALL) $< $@
%.cat:
- $(GENCAT) $@ $(@:%.cat=%)/*set*
+ cat $(@:%.cat=%)/charset $(@:%.cat=%)/set* | $(GENCAT) $@
clean:
$(RM) $(CATALOGS)

View File

@ -1,27 +0,0 @@
--- tw.color.c
+++ tw.color.c 2010-12-10 16:07:59.151926218 +0000
@@ -88,6 +88,7 @@ static Variable variables[] = {
VAR(NOS, "rs", "0"), /* Reset to normal color */
VAR(NOS, "hl", "44;37"), /* Reg file extra hard links */
VAR(NOS, "ca", "30;41"), /* File with capability */
+ VAR(NOS, "cl", ""), /* CLRTOEOL */
};
enum FileType {
@@ -239,13 +240,10 @@ parseLS_COLORS(const Char *value)
if ((Char)variables[i].variable[0] == (v[0] & CHAR) &&
(Char)variables[i].variable[1] == (v[1] & CHAR))
break;
- if (i < nvariables) {
- v += 3;
+ v += 3;
+ if (i < nvariables)
getstring(&c, &v, &variables[i].color, ':');
- continue;
- }
- else
- stderror(ERR_BADCOLORVAR, v[0], v[1]);
+ continue;
}
break;
}

View File

@ -1,153 +0,0 @@
--- sh.c
+++ sh.c 2007-10-15 10:03:11.000000000 +0000
@@ -1811,7 +1811,7 @@ static Char *jobargv[2] = {STRjobs, 0}
* and finally go through the normal error mechanism, which
* gets a chance to make the shell go away.
*/
-int just_signaled; /* bugfix by Michael Bloom (mg@ttidca.TTI.COM) */
+int just_signaled = 0; /* bugfix by Michael Bloom (mg@ttidca.TTI.COM) */
void
pintr(void)
--- sh.err.c
+++ sh.err.c 2009-03-25 10:35:17.000000000 +0000
@@ -51,6 +51,7 @@ char *seterr = NULL; /* Holds last err
#define ERR_NAME 0x10000000
#define ERR_SILENT 0x20000000
#define ERR_OLD 0x40000000
+#define ERR_INTERRUPT 0x80000000
#define ERR_SYNTAX 0
#define ERR_NOTALLOWED 1
@@ -608,7 +609,8 @@ stderror(unsigned int id, ...)
* will go to 1/2 else to FSHOUT/FSHDIAG. See flush in sh.print.c.
*/
flush();/*FIXRESET*/
- haderr = 1; /* Now to diagnostic output */
+ if (!(flags & ERR_INTERRUPT))
+ haderr = 1; /* Now to diagnostic output */
if (flags & ERR_NAME)
xprintf("%s: ", bname);/*FIXRESET*/
if ((flags & ERR_OLD)) {
@@ -649,5 +651,6 @@ stderror(unsigned int id, ...)
if (tpgrp > 0)
(void) tcsetpgrp(FSHTTY, tpgrp);
#endif
- reset(); /* Unwind */
+ if (!(flags & ERR_INTERRUPT))
+ reset(); /* Unwind */
}
--- sh.h
+++ sh.h 2007-10-11 22:00:00.000000000 +0000
@@ -565,6 +565,7 @@ EXTERN int neednote IZERO; /* Need to
EXTERN int noexec IZERO; /* Don't execute, just syntax check */
EXTERN int pjobs IZERO; /* want to print jobs if interrupted */
EXTERN int setintr IZERO; /* Set interrupts on/off -> Wait intr... */
+EXTERN int handle_intr IZERO;/* Set interrupts on/off -> Wait intr... */
EXTERN int havhash IZERO; /* path hashing is available */
EXTERN int editing IZERO; /* doing filename expansion and line editing */
EXTERN int noediting IZERO; /* initial $term defaulted to noedit */
--- sh.hist.c
+++ sh.hist.c 2007-10-11 22:00:00.000000000 +0000
@@ -1279,9 +1279,9 @@ rechist(Char *fname, int ref)
setv(STRverbose, verb, VAR_READWRITE);
}
fp = xcreat(short2str(fname), 0600);
+ cleanup_until(fname);
if (fp == -1) {
didfds = oldidfds;
- cleanup_until(fname);
return;
}
ftmp = SHOUT;
@@ -1291,7 +1291,6 @@ rechist(Char *fname, int ref)
xclose(fp);
SHOUT = ftmp;
didfds = oldidfds;
- cleanup_until(fname);
}
--- sh.print.c
+++ sh.print.c 2007-10-15 10:09:16.000000000 +0000
@@ -222,7 +222,8 @@ drainoline(void)
void
flush(void)
{
- int unit;
+ int unit, oldexitset = exitset;
+ unsigned int errid = ERR_SILENT;
static int interrupted = 0;
/* int lmode; */
@@ -231,10 +232,14 @@ flush(void)
return;
if (GettingInput && !Tty_raw_mode && linp < &linbuf[sizeof linbuf - 10])
return;
+ if (handle_intr) {
+ errid |= ERR_INTERRUPT;
+ exitset = 1;
+ }
if (interrupted) {
interrupted = 0;
linp = linbuf; /* avoid recursion as stderror calls flush */
- stderror(ERR_SILENT);
+ stderror(errid);
}
interrupted = 1;
if (haderr)
@@ -286,13 +291,14 @@ flush(void)
case EDQUOT:
#endif
/* Nothing to do, but die */
- xexit(1);
- break;
+ if (handle_intr == 0)
+ xexit(1);
default:
- stderror(ERR_SILENT);
+ stderror(errid);
break;
}
+ exitset = oldexitset;
linp = linbuf;
interrupted = 0;
}
--- tc.sig.c
+++ tc.sig.c 2007-10-11 22:00:00.000000000 +0000
@@ -60,25 +60,34 @@ int alrmcatch_disabled; /* = 0; */
int phup_disabled; /* = 0; */
int pchild_disabled; /* = 0; */
int pintr_disabled; /* = 0; */
+int handle_intr = 0;
void
handle_pending_signals(void)
{
if (!phup_disabled && phup_pending) {
phup_pending = 0;
+ handle_intr++;
phup();
+ handle_intr--;
}
if (!pintr_disabled && pintr_pending) {
pintr_pending = 0;
+ handle_intr++;
pintr();
+ handle_intr--;
}
if (!pchild_disabled && pchild_pending) {
pchild_pending = 0;
+ handle_intr++;
pchild();
+ handle_intr--;
}
if (!alrmcatch_disabled && alrmcatch_pending) {
alrmcatch_pending = 0;
+ handle_intr++;
alrmcatch();
+ handle_intr--;
}
}

View File

@ -1,132 +0,0 @@
--- ed.inputl.c
+++ ed.inputl.c 2010-12-09 10:01:31.000000000 +0000
@@ -683,7 +683,7 @@ GetNextCommand(KEYCMD *cmdnum, Char *ch)
#ifdef DSPMBYTE
_enable_mbdisp &&
#else
- MB_LEN_MAX == 1 &&
+ MB_CUR_MAX == 1 &&
#endif
!adrof(STRnokanji) && (*ch & META)) {
MetaNext = 0;
--- sh.c
+++ sh.c 2010-12-10 16:10:45.000000000 +0000
@@ -804,6 +804,18 @@ main(int argc, char **argv)
nt_autoset_dspmbyte();
#endif /* WINNT_NATIVE */
#endif
+#if defined(KANJI)
+#if defined(WIDE_STRINGS) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
+#if defined(NLS) && defined(LC_CTYPE)
+ if (setlocale(LC_CTYPE, NULL) != NULL || getenv("LANG") != NULL)
+#else
+ if (getenv("LANG") != NULL)
+#endif
+ {
+ autoset_kanji();
+ }
+#endif
+#endif
fix_version(); /* publish the shell version */
--- sh.decls.h
+++ sh.decls.h 2010-12-07 10:09:50.000000000 +0000
@@ -392,6 +392,11 @@ extern Char *unparse (struct command *
extern void update_dspmbyte_vars (void);
extern void autoset_dspmbyte (const Char *);
#endif
+#if defined(KANJI)
+#if defined(WIDE_STRINGS) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
+extern void autoset_kanji (void);
+#endif
+#endif
/*
* sh.time.c
--- sh.func.c
+++ sh.func.c 2010-12-09 09:15:06.000000000 +0000
@@ -1422,6 +1422,10 @@ dosetenv(Char **v, struct command *c)
# endif
# ifdef LC_CTYPE
(void) setlocale(LC_CTYPE, ""); /* for iscntrl */
+# if defined(KANJI) && defined(WIDE_STRINGS) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
+ autoset_kanji();
+# endif
+
# endif /* LC_CTYPE */
# ifdef NLS_CATALOGS
# ifdef LC_MESSAGES
--- sh.set.c
+++ sh.set.c 2010-12-09 11:07:56.000000000 +0000
@@ -1098,7 +1098,8 @@ x:
}
}
-#if defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE)
+#if defined(KANJI)
+#if defined(SHORT_STRINGS) && defined(DSPMBYTE)
extern int dspmbyte_ls;
void
@@ -1273,4 +1274,26 @@ autoset_dspmbyte(const Char *pcp)
}
}
}
+#elif defined(WIDE_STRINGS) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
+void
+autoset_kanji(void)
+{
+ char *codeset = nl_langinfo(CODESET);
+
+ if (*codeset == '\0') {
+ if (adrof(STRnokanji) == NULL)
+ setNS(STRnokanji);
+ return;
+ }
+
+ if (strcasestr(codeset, "SHIFT_JIS") == (char*)0) {
+ if (adrof(STRnokanji) == NULL)
+ setNS(STRnokanji);
+ return;
+ }
+
+ if (adrof(STRnokanji) != NULL)
+ unsetv(STRnokanji);
+}
+#endif
#endif
--- tc.str.c
+++ tc.str.c 2010-12-14 16:47:24.383925459 +0000
@@ -94,13 +94,31 @@ one_wctomb(char *s, Char wchar)
return len;
}
+#if defined(KANJI) && defined(WIDE_STRINGS) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
+static mbstate_t mb_zero;
+#endif
+
int
rt_mbtowc(Char *pwc, const char *s, size_t n)
{
int ret;
char back[MB_LEN_MAX];
wchar_t tmp;
+#if defined(KANJI) && defined(WIDE_STRINGS) && defined(HAVE_NL_LANGINFO) && defined(CODESET)
+ static mbstate_t mb;
+
+ /*
+ * Workaround the Shift-JIS endcoding that translates unshifted 7 bit ASCII!
+ */
+ if (!adrof(STRnokanji) && n && pwc && s && (*s == '\\' || *s == '~') &&
+ !memcmp(&mb, &mb_zero, sizeof(mb)))
+ {
+ *pwc = *s;
+ return 1;
+ }
+#else
mbstate_t mb;
+#endif
memset (&mb, 0, sizeof mb);
ret = mbrtowc(&tmp, s, n, &mb);

View File

@ -1,16 +0,0 @@
Author: Jean-Luc Leger <reiga@dspnet.fr.eu.org>
Description: fix broken globbing expansion
Debian-Bug: #603545
--- a/tc.str.c
+++ b/tc.str.c
@@ -104,8 +104,9 @@ rt_mbtowc(Char *pwc, const char *s, size_t n)
memset (&mb, 0, sizeof mb);
ret = mbrtowc(&tmp, s, n, &mb);
- if (ret > 0) {
+ if (ret >= 0)
*pwc = tmp;
+ if (ret > 0) {
#ifdef UTF16_STRINGS
if (tmp >= 0xd800 && tmp <= 0xdbff) {
/* UTF-16 surrogate pair. Fetch second half and compute

View File

@ -1,24 +0,0 @@
--- nls/Makefile.in
+++ nls/Makefile.in 2010-12-10 16:05:57.967928042 +0000
@@ -2,7 +2,7 @@
LOCALES= C et finnish french german greek italian ja pl russian \
spanish ukrainian
-GENCAT= gencat
+GENCAT= gencat --new
INSTALL= ginstall
datarootdir=@datarootdir@
--- nls/german/set6
+++ nls/german/set6 2005-08-17 12:12:36.000000000 +0000
@@ -3,8 +3,8 @@ $ ed.inputl.c
$set 6
1 FEHLER: Illegaler Befehl von Taste 0%o\r\n
2 ja\n
-3 ediere\n
-4 brich ab\n
+3 editieren\n
+4 abbrechen\n
5 nein\n
6 Kein entsprechender Befehl\n
7 Mehrdeutiger Befehl\n

View File

@ -1,830 +0,0 @@
--- Makefile.in
+++ Makefile.in 2006-04-25 12:58:31.000000000 +0000
@@ -591,12 +591,12 @@ vgrind:
@vgrind -t -x -h Index index >/crp/bill/csh/index.t
install-strip: install
+ -strip ${DESTBIN}/tcsh$(EXEEXT)
install: tcsh$(EXEEXT)
-mkdir -p ${DESTBIN}
-mv -f ${DESTBIN}/tcsh$(EXEEXT) ${DESTBIN}/tcsh.old
cp tcsh$(EXEEXT) ${DESTBIN}/tcsh$(EXEEXT)
- -strip ${DESTBIN}/tcsh$(EXEEXT)
chmod 755 ${DESTBIN}/tcsh$(EXEEXT)
install.man: tcsh.man
--- config/linux
+++ config/linux 2007-07-13 11:22:07.000000000 +0000
@@ -70,7 +70,7 @@
*
* Note: Linux should work with any SYSVREL < 3.
*/
-#define SYSVREL 0
+#define SYSVREL 2
/*
* YPBUGS Work around Sun YP bugs that cause expansion of ~username
@@ -86,21 +86,40 @@
*/
#define __STRICT_ANSI__
-#define _BSD_SOURCE
-#define _SVID_SOURCE
-#define _POSIX_SOURCE
-#define _XOPEN_SOURCE 500
-#define _GNU_SOURCE
+#ifndef _BSD_SOURCE
+# define _BSD_SOURCE
+#endif
+#ifndef _SVID_SOURCE
+# define _SVID_SOURCE
+#endif
+#ifndef _POSIX_SOURCE
+# define _POSIX_SOURCE
+#endif
+#ifndef _XOPEN_SOURCE
+# define _XOPEN_SOURCE 500
+#endif
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
/*
* Large file support from <features.h>
*/
-#define _LARGEFILE_SOURCE
-#define _LARGEFILE64_SOURCE
-#define _FILE_OFFSET_BITS 64
+#ifndef _LARGEFILE_SOURCE
+# define _LARGEFILE_SOURCE
+#endif
+#ifndef _LARGEFILE64_SOURCE
+# define _LARGEFILE64_SOURCE
+#endif
+#ifndef _FILE_OFFSET_BITS
+# define _FILE_OFFSET_BITS 64
+#endif
/****************** local defines *********************/
+#if !defined(PW_SHADOW)
+# define PW_SHADOW
+#endif
#ifndef _PATH_TCSHELL
#define _PATH_TCSHELL "/bin/tcsh"
#endif
@@ -108,4 +127,17 @@
#define NLS_CATALOGS
+#if !defined(SYSMALLOC)
+# define SYSMALLOC
+#endif
+#if !defined(NISPLUS)
+# define NISPLUS
+#endif
+#if !defined(POSIX)
+# define POSIX
+#endif
+
+#define SuSE
+#define MCLoadBySet NL_CAT_LOCALE
+
#endif /* _h_config */
--- config_f.h
+++ config_f.h 2007-07-13 10:47:30.000000000 +0000
@@ -37,7 +37,7 @@
*/
#ifndef _h_config_f
#define _h_config_f
-
+#include <features.h>
/*
* SHORT_STRINGS Use at least 16 bit characters instead of 8 bit chars
* This fixes up quoting problems and eases implementation
@@ -66,12 +66,19 @@
*/
#if defined (NLS) && defined (HAVE_CATGETS)
# define NLS_CATALOGS
+#else
+# error No NLS Catalogs
#endif
/*
* LOGINFIRST Source ~/.login before ~/.cshrc
*/
-#undef LOGINFIRST
+#define LOGINFIRST
+
+/*
+ * USERLOGINFIRST Source ~/.login before ~/.cshrc
+ */
+#undef USERLOGINFIRST
/*
* VIDEFAULT Make the VI mode editor the default
@@ -146,7 +153,7 @@
* This can be much slower and no memory statistics will be
* provided.
*/
-#if defined(__MACHTEN__) || defined(PURIFY) || defined(MALLOC_TRACE) || defined(_OSD_POSIX) || defined(__MVS__)
+#if defined(__MACHTEN__) || defined(PURIFY) || defined(MALLOC_TRACE) || defined(_OSD_POSIX) || defined(__MVS__) || defined(__GLIBC__)
# define SYSMALLOC
#else
# undef SYSMALLOC
@@ -165,7 +172,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 ?
@@ -188,7 +195,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 2011-11-16 10:49:20.000000000 +0000
@@ -3654,7 +3654,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.in
+++ configure.in 2011-11-16 10:49:09.000000000 +0000
@@ -281,7 +281,7 @@ fi
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_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(connect, socket)
AM_ICONV
--- glob.h
+++ glob.h 2006-04-25 12:58:31.000000000 +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 *);
--- host.defs
+++ host.defs 2007-07-13 12:05:58.000000000 +0000
@@ -110,7 +110,7 @@ newcode :
/*
* On convex, find the current machine type via the getsysinfo() syscall
*/
-#include <sys/sysinfo.h>
+# include <sys/sysinfo.h>
/* From: fox@convex.com (David DeSimone) */
static char *
@@ -168,6 +168,30 @@ getconvex(void)
endcode :
enddef :
+newdef : defined(linux) || defined(__GNU__) || defined(__GLIBC__)
+comment : Linus Torvalds's linux
+newcode :
+# include <sys/utsname.h>
+char * getmach(void)
+{
+ static char* mach = "unknown";
+ struct utsname uts;
+ if (uname(&uts) == 0)
+ mach = uts.machine;
+ return mach;
+}
+char * gethost(void)
+{
+ static char host[256];
+ struct utsname uts;
+ if (uname(&uts) == 0)
+ xsnprintf(host, sizeof(host), "%s-linux", uts.machine);
+ else
+ xsnprintf(host, sizeof(host), "unknown-linux");
+ return host;
+}
+endcode :
+enddef :
newcode :
void
@@ -450,26 +474,29 @@ machtype: defined(M_i386) : "i386-pc-
enddef :
-newdef : defined(linux) || defined(__GNU__) || defined(__GLIBC__)
-comment : Linus Torvalds's linux
+vendor : defined(SuSE) : "suse"
vendor : defined(M_intel) : "intel"
hosttype: defined(__ia64__) : "ia64-linux"
hosttype: defined(__powerpc64__) : "powerpc64-linux"
hosttype: defined(__s390x__) : "s390x-linux"
hosttype: defined(__s390__) : "s390-linux"
hosttype: defined(__x86_64__) : "x86_64-linux"
-hosttype: defined(M_i586) : "i586-linux"
-hosttype: defined(M_i486) : "i486-linux"
+hosttype: defined(M_i686) : "i686-linux"
+hosttype: defined(M_i586) : "i586-linux"
+hosttype: defined(M_i486) : "i486-linux"
hosttype: defined(M_i386) : "i386-linux"
+hosttype: : gethost()
ostype : : "linux"
machtype: defined(__ia64__) : "ia64"
machtype: defined(__powerpc64__) : "powerpc64"
machtype: defined(__s390x__) : "s390x"
machtype: defined(__s390__) : "s390"
machtype: defined(__x86_64__) : "x86_64"
-machtype: defined(M_i586) : "i586"
-machtype: defined(M_i486) : "i486"
+machtype: defined(M_i686) : "i686"
+machtype: defined(M_i586) : "i586"
+machtype: defined(M_i486) : "i486"
machtype: defined(M_i386) : "i386"
+machtype: : getmach()
vendor : defined(__alpha) : "dec"
vendor : defined(PPC) : "apple"
hosttype: defined(__alpha) : "alpha"
@@ -480,6 +507,7 @@ machtype: defined(M_mipsel) : "mipsel
machtype: defined(M_mipseb) : "mipseb"
machtype: defined(M_mips64el) : "mips64el"
machtype: defined(M_mips64eb) : "mips64eb"
+machtype: : getmach()
enddef :
--- nls/C/set1
+++ nls/C/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.6 2006/03/02 18:46:45 christos Exp $
$ Error messages
+$ codeset=ANSI_X3.4-1968
$set 1
1 Syntax Error
2 %s is not allowed
--- nls/et/set1
+++ nls/et/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.3 2006/03/02 18:46:45 christos Exp $
$ Error messages
+$ codeset=ISO-8859-1
$set 1
1 Süntaksi viga
2 %s ei ole lubatud
--- nls/finnish/set1
+++ nls/finnish/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.3 2006/03/02 18:46:46 christos Exp $
$ Error messages
+$ codeset=ISO-8859-1
$set 1
1 Kielioppivirhe
2 %s ei ole sallittu
--- nls/french/set1
+++ nls/french/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.4 2006/03/02 18:46:46 christos Exp $
$ Messages d 'erreur
+$ codeset=ISO-8859-1
$set 1
1 Erreur de syntaxe
2 %s n'est pas autorisé
--- nls/german/set1
+++ nls/german/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.6 2006/03/02 18:46:46 christos Exp $
$ Error messages
+$ codeset=ISO-8859-1
$set 1
1 Syntaxfehler
2 %s nicht erlaubt
--- nls/greek/set1
+++ nls/greek/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.4 2006/03/02 18:46:46 christos Exp $
$ Error messages
+$ codeset=ISO-8859-7
$set 1
1 ËÜèïò óýíôáîç
2 Tï %s äåí åðéôñÝðåôáé
--- nls/italian/set1
+++ nls/italian/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.2 2006/03/02 18:46:47 christos Exp $
$ Error messages
+$ codeset=ISO-8859-1
$set 1
1 Errore di Sintassi
2 %s non è permesso
--- nls/ja/set1
+++ nls/ja/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.5 2006/03/02 18:46:47 christos Exp $
$ Error messages
+$ codeset=EUC-JP
$set 1
1 ʸˡ¤¬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹
2 %s ¤Ï³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤Þ¤»¤ó
--- nls/pl/set1
+++ nls/pl/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.5 1998/06/27 12:27:55 christos Exp $
$ Error messages
+$ codeset=ISO-8859-2
$set 1
1 B³±d sk³adni
2 %s jest niedozwolone
--- nls/russian/set1
+++ nls/russian/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.4 2006/03/02 18:46:47 christos Exp $
$ Error messages
+$ codeset=KOI8-R
$set 1
1 óÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ
2 %s ÎÅÄÏÐÕÓÔÉÍÏ
--- nls/spanish/set1
+++ nls/spanish/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.3 2006/03/02 18:46:48 christos Exp $
$ Mensajes de Error
+$ codeset=ISO-8859-1
$set 1
1 Error de sintaxis
2 %s no está permitido
--- nls/ukrainian/set1
+++ nls/ukrainian/set1 2006-04-25 12:58:31.000000000 +0000
@@ -1,5 +1,6 @@
$ $tcsh: set1,v 1.3 2006/03/02 18:46:48 christos Exp $
$ Error messages
+$ codeset=KOI8-U
$set 1
1 óÉÎÔÁËÓÉÞÎÁ ÐÏÍÉÌËÁ
2 %s ÎÅ ÄÏÚ×ÏÌѤÔØÓÑ
--- pathnames.h
+++ pathnames.h 2006-04-25 12:58:31.000000000 +0000
@@ -33,7 +33,7 @@
#ifndef _h_pathnames
#define _h_pathnames
-#ifdef BSD4_4
+#if defined(BSD4_4) || defined(linux)
# include <paths.h>
#endif
@@ -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 2010-12-10 16:10:45.000000000 +0000
@@ -501,7 +501,8 @@ main(int argc, char **argv)
if (loginsh || (uid == 0)) {
if (*cp) {
/* only for login shells or root and we must have a tty */
- if ((cp2 = Strrchr(cp, (Char) '/')) != NULL) {
+ if (((cp2 = Strrchr(cp, (Char) '/')) != NULL) &&
+ (Strncmp(cp, STRptssl, 3) != 0)) {
cp2 = cp2 + 1;
}
else
@@ -768,7 +769,16 @@ main(int argc, char **argv)
xfree(tmp2);
}
#else /* !WINNT_NATIVE */
+#if defined(__GLIBC__) && __GLIBC__ >= 2
+ {
+ char *tmpdir = getenv ("TMPDIR");
+ if (!tmpdir)
+ tmpdir = "/tmp";
+ shtemp = Strspl(SAVE(tmpdir), SAVE("/sh.XXXXXX")); /* For << */
+ }
+#else
shtemp = Strspl(STRtmpsh, doldol); /* For << */
+#endif /* __GLIBC__ */
#endif /* WINNT_NATIVE */
/*
@@ -792,9 +802,9 @@ main(int argc, char **argv)
/* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
#if defined(DSPMBYTE)
#if defined(NLS) && defined(LC_CTYPE)
- if (((tcp = setlocale(LC_CTYPE, NULL)) != NULL || (tcp = getenv("LANG")) != NULL) && !adrof(CHECK_MBYTEVAR))
+ if (((tcp = setlocale(LC_CTYPE, NULL)) != NULL || (tcp = getenv("LANG")) != NULL))
#else
- if ((tcp = getenv("LANG")) != NULL && !adrof(CHECK_MBYTEVAR))
+ if ((tcp = getenv("LANG")) != NULL)
#endif
{
autoset_dspmbyte(str2short(tcp));
@@ -1303,6 +1313,9 @@ main(int argc, char **argv)
setintr = osetintr;
parintr = oparintr;
}
+#ifndef USERLOGINFIRST
+# undef LOGINFIRST
+#endif
#ifdef LOGINFIRST
if (loginsh)
(void) srccat(varval(STRhome), STRsldotlogin);
--- sh.dol.c
+++ sh.dol.c 2007-07-13 11:51:58.000000000 +0000
@@ -30,6 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+#include <features.h>
#include "sh.h"
RCSID("$tcsh: sh.dol.c,v 3.80 2010/05/12 15:02:47 christos Exp $")
@@ -938,6 +939,31 @@ heredoc(Char *term)
Char *lbp, *obp, *mbp;
Char **vp;
int quoted;
+//#undef __GLIBC__
+#if defined(__GLIBC__) && __GLIBC__ >= 2
+ char *tmp = short2str(shtemp);
+ char *dot = strrchr(tmp, '.');
+ int fd;
+
+ if (!dot)
+ stderror(ERR_NAME | ERR_NOMATCH);
+ strcpy(dot, ".XXXXXX");
+
+ if ((fd = mkstemp(tmp)) < 0)
+ stderror(ERR_SYSTEM, tmp, strerror(errno));
+ xclose(fd);
+
+# ifndef O_TEMPORARY
+# define O_TEMPORARY 0
+# endif
+ xclose(0);
+ if (xopen(tmp, O_RDWR|O_TEMPORARY) == -1) {
+ int oerrno = errno;
+ (void) unlink(tmp);
+ errno = oerrno;
+ stderror(ERR_SYSTEM, tmp, strerror(errno));
+ }
+#else /* !__GLIBC__ */
char *tmp;
#ifndef WINNT_NATIVE
struct timeval tv;
@@ -978,6 +1004,7 @@ again:
errno = oerrno;
stderror(ERR_SYSTEM, tmp, strerror(errno));
}
+#endif /* !__GLIBC__ */
(void) unlink(tmp); /* 0 0 inode! */
Dv[0] = term;
Dv[1] = NULL;
--- sh.func.c
+++ sh.func.c 2010-12-09 09:15:06.000000000 +0000
@@ -1401,14 +1401,6 @@ dosetenv(Char **v, struct command *c)
}
#endif /* apollo */
- /* dspkanji/dspmbyte autosetting */
- /* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
-#if defined(DSPMBYTE)
- if(eq(vp, STRLANG) && !adrof(CHECK_MBYTEVAR)) {
- autoset_dspmbyte(lp);
- }
-#endif
-
if (islocale_var(vp)) {
#ifdef NLS
int k;
@@ -1434,6 +1426,13 @@ dosetenv(Char **v, struct command *c)
nlsclose();
nlsinit();
# endif /* NLS_CATALOGS */
+# if defined(DSPMBYTE)
+ /* dspkanji/dspmbyte autosetting */
+ /* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
+ if (eq(vp, STRLANG)) {
+ autoset_dspmbyte(lp);
+ }
+# endif
# ifdef SETLOCALEBUG
dont_free = 0;
# endif /* SETLOCALEBUG */
--- sh.h
+++ sh.h 2007-07-13 11:07:44.000000000 +0000
@@ -284,7 +284,7 @@ typedef long tcsh_number_t;
# else
# include <termio.h>
# endif /* _UWIN */
-# if SYSVREL > 3
+# if SYSVREL > 3 || defined(linux)
# undef TIOCGLTC /* we don't need those, since POSIX has them */
# undef TIOCSLTC
# undef CSWTCH
@@ -338,6 +338,12 @@ typedef long tcsh_number_t;
#if !((defined(SUNOS4) || defined(_MINIX) /* || defined(DECOSF1) */) && defined(TERMIO))
# if !defined(_VMS_POSIX) && !defined(WINNT_NATIVE)
# include <sys/ioctl.h>
+# if SYSVREL > 3 || defined(linux)
+# undef TIOCGLTC /* we don't need those, since POSIX has them */
+# undef TIOCSLTC
+# undef CSWTCH
+# define CSWTCH _POSIX_VDISABLE /* So job control works */
+# endif /* SYSVREL > 3 */
# endif
#endif
@@ -1203,9 +1209,7 @@ extern char **environ;
# ifdef NLS_CATALOGS
# if defined(linux) || defined(__GNU__) || defined(__GLIBC__)
# include <locale.h>
-# ifdef notdef
-# include <localeinfo.h> /* Has this changed ? */
-# endif
+# include <langinfo.h>
# include <features.h>
# endif
# ifdef SUNOS4
--- sh.sem.c
+++ sh.sem.c 2006-04-25 12:58:31.000000000 +0000
@@ -629,10 +629,19 @@ execute(struct command *t, volatile int
* possible stopping
*/
if (bifunc) {
- func(t, bifunc);
- if (forked)
+ if (forked) {
+ func(t, bifunc);
exitstat();
- else {
+ } else {
+ jmp_buf_t oldexit;
+ int ohaderr = haderr;
+
+ getexit(oldexit);
+ if (setexit() == 0)
+ func(t, bifunc);
+ resexit(oldexit);
+ haderr = ohaderr;
+
if (adrof(STRprintexitvalue)) {
int rv = getn(varval(STRstatus));
if (rv != 0)
--- sh.set.c
+++ sh.set.c 2010-12-09 11:07:56.000000000 +0000
@@ -1115,11 +1115,11 @@ update_dspmbyte_vars(void)
dstr1 = vp->vec[0];
if(eq (dstr1, STRsjis))
iskcode = 1;
- else if (eq(dstr1, STReuc))
+ else if (eq(dstr1, STReuc) || eq(dstr1, STReucjp) || eq(dstr1, STRGB2312))
iskcode = 2;
else if (eq(dstr1, STRbig5))
iskcode = 3;
- else if (eq(dstr1, STRutf8))
+ else if (eq(dstr1, STRutf8) || eq(dstr1, STRutfx8))
iskcode = 4;
else if ((dstr1[0] - '0') >= 0 && (dstr1[0] - '0') <= 3) {
iskcode = 0;
@@ -1203,7 +1203,7 @@ update_dspmbyte_vars(void)
_enable_mbdisp = 0;
dspmbyte_ls = 0;
}
-#ifdef MBYTEDEBUG /* Sorry, use for beta testing */
+# ifdef MBYTEDEBUG /* Sorry, use for beta testing */
{
Char mbmapstr[300];
for (lp = 0; lp < 256; lp++)
@@ -1211,7 +1211,7 @@ update_dspmbyte_vars(void)
mbmapstr[lp] = 0;
setcopy(STRmbytemap, mbmapstr, VAR_READWRITE);
}
-#endif /* MBYTEMAP */
+# endif /* MBYTEMAP */
}
/* dspkanji/dspmbyte autosetting */
@@ -1220,6 +1220,7 @@ void
autoset_dspmbyte(const Char *pcp)
{
int i;
+ struct varent *vp;
static const struct dspm_autoset_Table {
Char *n;
Char *v;
@@ -1242,13 +1243,18 @@ autoset_dspmbyte(const Char *pcp)
#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
static const struct dspm_autoset_Table dspmc[] = {
{ STRstarutfstar8, STRutf8 },
+ { STRutfx8, STRutf8 },
{ STReuc, STReuc },
+ { STReucjp, STReuc },
{ STRGB2312, STReuc },
{ STRLANGBIG5, STRbig5 },
{ NULL, NULL }
};
Char *codeset;
+ if ((vp = adrof(CHECK_MBYTEVAR)))
+ unsetv1(vp);
+
codeset = str2short(nl_langinfo(CODESET));
if (*codeset != '\0') {
for (i = 0; dspmc[i].n; i++) {
--- tc.alloc.c
+++ tc.alloc.c 2006-04-25 12:58:31.000000000 +0000
@@ -486,7 +486,7 @@ smalloc(size_t n)
{
ptr_t ptr;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef HAVE_SBRK
if (membot == NULL)
@@ -509,7 +509,7 @@ srealloc(ptr_t p, size_t n)
{
ptr_t ptr;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef HAVE_SBRK
if (membot == NULL)
@@ -533,7 +533,7 @@ scalloc(size_t s, size_t n)
ptr_t ptr;
n *= s;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef HAVE_SBRK
if (membot == NULL)
@@ -558,8 +558,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.const.c
+++ tc.const.c 2006-04-25 12:58:31.000000000 +0000
@@ -129,10 +129,12 @@ Char STRmmliteral[] = { '-', 'G', '\0' }
Char STRmmliteral[] = { '-', '-', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\0' };
# endif
Char STReuc[] = { 'e', 'u', 'c', '\0' };
+Char STReucjp[] = { 'e', 'u', 'c', '-', 'j', 'p', '\0' };
Char STRsjis[] = { 's', 'j', 'i', 's', '\0' };
Char STRbig5[] = { 'b', 'i', 'g', '5', '\0' };
Char STRutf8[] = { 'u', 't', 'f', '8', '\0' };
Char STRstarutfstar8[] = { '*', 'u', 't', 'f', '*', '8', '\0' };
+Char STRutfx8[] = { 'u', 't', 'f', '-', '8', '\0' };
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' };
@@ -436,7 +438,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' };
-Char STRLC_ALL[] = { 'L', 'C', '_', 'A', 'L', 'L', '\0' };
+Char STRLC_ALL[] = { 'L', 'C', '_', 'A', 'L', 'L', '\0' };
Char STRLC_CTYPE[] = { 'L', 'C', '_', 'C', 'T', 'Y', 'P', 'E' ,'\0' };
Char STRLC_NUMERIC[] = { 'L', 'C', '_', 'N', 'U', 'M', 'E', 'R', 'I',
'C', '\0' };
--- tc.func.c
+++ tc.func.c 2007-07-13 11:15:03.000000000 +0000
@@ -689,9 +689,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
@@ -1902,7 +1906,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 2006-04-25 12:58:31.000000000 +0000
@@ -335,7 +335,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 2006-04-25 12:58:31.000000000 +0000
@@ -260,6 +260,9 @@ watch_login(int force)
}
stlast = sta.st_mtime;
#ifdef HAVE_GETUTENT
+# 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 2006-04-25 12:58:31.000000000 +0000
@@ -578,7 +578,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.
.TP 8
--- tw.color.c
+++ tw.color.c 2007-07-13 11:18:16.000000000 +0000
@@ -177,7 +177,7 @@ parseLS_COLORS(const Char *value)
size_t i, len;
const Char *v; /* pointer in value */
char *c; /* pointer in colors */
- Extension *volatile e; /* pointer in extensions */
+ static Extension *volatile e; /* pointer in extensions */
jmp_buf_t osetexit;
size_t omark;
@@ -302,12 +302,13 @@ print_color(const Char *fname, size_t le
break;
}
if (i == nvariables) {
- for (i = 0; i < nextensions; i++)
- if (len >= extensions[i].extension.len
- && strncmp(last - extensions[i].extension.len,
- extensions[i].extension.s,
- extensions[i].extension.len) == 0) {
- color = &extensions[i].color;
+ int j;
+ for (j = 0; j < nextensions; j++)
+ if (len >= extensions[j].extension.len
+ && strncmp(last - extensions[j].extension.len,
+ extensions[j].extension.s,
+ extensions[j].extension.len) == 0) {
+ color = &extensions[j].color;
break;
}
}
--- tw.h
+++ tw.h 2006-04-25 12:58:31.000000000 +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

View File

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

56
tcsh-6.17.03-colorls.dif Normal file
View File

@ -0,0 +1,56 @@
--- tw.color.c
+++ tw.color.c 2010-12-10 16:07:59.000000000 +0000
@@ -89,6 +89,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 */
+ VAR(NOS, "cl", ""), /* CLRTOEOL */
};
enum FileType {
@@ -177,7 +178,7 @@ parseLS_COLORS(const Char *value)
size_t i, len;
const Char *v; /* pointer in value */
char *c; /* pointer in colors */
- Extension *volatile e; /* pointer in extensions */
+ static Extension *volatile e; /* pointer in extensions */
jmp_buf_t osetexit;
size_t omark;
@@ -240,13 +241,10 @@ parseLS_COLORS(const Char *value)
if ((Char)variables[i].variable[0] == (v[0] & CHAR) &&
(Char)variables[i].variable[1] == (v[1] & CHAR))
break;
- if (i < nvariables) {
- v += 3;
+ v += 3;
+ if (i < nvariables)
getstring(&c, &v, &variables[i].color, ':');
- continue;
- }
- else
- stderror(ERR_BADCOLORVAR, v[0], v[1]);
+ continue;
}
break;
}
@@ -301,12 +303,13 @@ print_color(const Char *fname, size_t le
break;
}
if (i == nvariables) {
- for (i = 0; i < nextensions; i++)
- if (len >= extensions[i].extension.len
- && strncmp(last - extensions[i].extension.len,
- extensions[i].extension.s,
- extensions[i].extension.len) == 0) {
- color = &extensions[i].color;
+ int j;
+ for (j = 0; j < nextensions; j++)
+ if (len >= extensions[j].extension.len
+ && strncmp(last - extensions[j].extension.len,
+ extensions[j].extension.s,
+ extensions[j].extension.len) == 0) {
+ color = &extensions[j].color;
break;
}
}

156
tcsh-6.17.06-catalogs.dif Normal file
View File

@ -0,0 +1,156 @@
--- sh.c
+++ sh.c 2011-11-17 08:28:47.027646998 +0000
@@ -168,8 +168,8 @@ static void st_restore (void *);
static void
add_localedir_to_nlspath(const char *path)
{
- static const char msgs_LOC[] = "/%L/LC_MESSAGES/%N.cat";
- static const char msgs_lang[] = "/%l/LC_MESSAGES/%N.cat";
+ static const char msgs_LOC[] = "/%L/LC_MESSAGES/%N";
+ static const char msgs_lang[] = "/%l/LC_MESSAGES/%N";
char *old;
char *new, *new_p;
size_t len;
@@ -181,7 +181,7 @@ add_localedir_to_nlspath(const char *pat
if (path == NULL)
return;
- (void) xsnprintf(trypath, sizeof(trypath), "%s/en/LC_MESSAGES/tcsh.cat",
+ (void) xsnprintf(trypath, sizeof(trypath), "%s/en/LC_MESSAGES/tcsh",
path);
if (stat(trypath, &st) == -1)
return;
--- nls/Makefile.in
+++ nls/Makefile.in 2011-11-17 08:27:22.856205243 +0000
@@ -15,8 +15,8 @@ localedir=${DESTDIR}@localedir@
all:
CATALOGS+=C.cat
-INSTALLED+=${localedir}/C/LC_MESSAGES/tcsh.cat
-${localedir}/C/LC_MESSAGES/tcsh.cat: C.cat
+INSTALLED+=${localedir}/C/LC_MESSAGES/tcsh
+${localedir}/C/LC_MESSAGES/tcsh: C.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -24,8 +24,8 @@ C.cat: ${srcdir}/C/charset ${srcdir}/C/*
cat $^ $> | $(GENCAT) $@
CATALOGS+=et.cat
-INSTALLED+=${localedir}/et/LC_MESSAGES/tcsh.cat
-${localedir}/et/LC_MESSAGES/tcsh.cat: et.cat
+INSTALLED+=${localedir}/et/LC_MESSAGES/tcsh
+${localedir}/et/LC_MESSAGES/tcsh: et.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -33,8 +33,8 @@ et.cat: ${srcdir}/et/charset ${srcdir}/e
cat $^ $> | $(GENCAT) $@
CATALOGS+=finnish.cat
-INSTALLED+=${localedir}/fi/LC_MESSAGES/tcsh.cat
-${localedir}/fi/LC_MESSAGES/tcsh.cat: finnish.cat
+INSTALLED+=${localedir}/fi/LC_MESSAGES/tcsh
+${localedir}/fi/LC_MESSAGES/tcsh: finnish.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -42,8 +42,8 @@ finnish.cat: ${srcdir}/finnish/charset $
cat $^ $> | $(GENCAT) $@
CATALOGS+=french.cat
-INSTALLED+=${localedir}/fr/LC_MESSAGES/tcsh.cat
-${localedir}/fr/LC_MESSAGES/tcsh.cat: french.cat
+INSTALLED+=${localedir}/fr/LC_MESSAGES/tcsh
+${localedir}/fr/LC_MESSAGES/tcsh: french.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -51,8 +51,8 @@ french.cat: ${srcdir}/french/charset ${s
cat $^ $> | $(GENCAT) $@
CATALOGS+=german.cat
-INSTALLED+=${localedir}/de/LC_MESSAGES/tcsh.cat
-${localedir}/de/LC_MESSAGES/tcsh.cat: german.cat
+INSTALLED+=${localedir}/de/LC_MESSAGES/tcsh
+${localedir}/de/LC_MESSAGES/tcsh: german.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -60,8 +60,8 @@ german.cat: ${srcdir}/german/charset ${s
cat $^ $> | $(GENCAT) $@
CATALOGS+=greek.cat
-INSTALLED+=${localedir}/gr/LC_MESSAGES/tcsh.cat
-${localedir}/gr/LC_MESSAGES/tcsh.cat: greek.cat
+INSTALLED+=${localedir}/el/LC_MESSAGES/tcsh
+${localedir}/el/LC_MESSAGES/tcsh: greek.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -69,8 +69,8 @@ greek.cat: ${srcdir}/greek/charset ${src
cat $^ $> | $(GENCAT) $@
CATALOGS+=italian.cat
-INSTALLED+=${localedir}/it/LC_MESSAGES/tcsh.cat
-${localedir}/it/LC_MESSAGES/tcsh.cat: italian.cat
+INSTALLED+=${localedir}/it/LC_MESSAGES/tcsh
+${localedir}/it/LC_MESSAGES/tcsh: italian.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -78,8 +78,8 @@ italian.cat: ${srcdir}/italian/charset $
cat $^ $> | $(GENCAT) $@
CATALOGS+=ja.cat
-INSTALLED+=${localedir}/ja/LC_MESSAGES/tcsh.cat
-${localedir}/ja/LC_MESSAGES/tcsh.cat: ja.cat
+INSTALLED+=${localedir}/ja/LC_MESSAGES/tcsh
+${localedir}/ja/LC_MESSAGES/tcsh: ja.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -87,8 +87,8 @@ ja.cat: ${srcdir}/ja/charset ${srcdir}/j
cat $^ $> | $(GENCAT) $@
CATALOGS+=pl.cat
-INSTALLED+=${localedir}/pl/LC_MESSAGES/tcsh.cat
-${localedir}/pl/LC_MESSAGES/tcsh.cat: pl.cat
+INSTALLED+=${localedir}/pl/LC_MESSAGES/tcsh
+${localedir}/pl/LC_MESSAGES/tcsh: pl.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -96,8 +96,8 @@ pl.cat: ${srcdir}/pl/charset ${srcdir}/p
cat $^ $> | $(GENCAT) $@
CATALOGS+=russian.cat
-INSTALLED+=${localedir}/ru/LC_MESSAGES/tcsh.cat
-${localedir}/ru/LC_MESSAGES/tcsh.cat: russian.cat
+INSTALLED+=${localedir}/ru_RU/LC_MESSAGES/tcsh
+${localedir}/ru_RU/LC_MESSAGES/tcsh: russian.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -105,8 +105,8 @@ russian.cat: ${srcdir}/russian/charset $
cat $^ $> | $(GENCAT) $@
CATALOGS+=spanish.cat
-INSTALLED+=${localedir}/es/LC_MESSAGES/tcsh.cat
-${localedir}/es/LC_MESSAGES/tcsh.cat: spanish.cat
+INSTALLED+=${localedir}/es/LC_MESSAGES/tcsh
+${localedir}/es/LC_MESSAGES/tcsh: spanish.cat
mkdir -p $(@D)
$(INSTALL) $< $@
@@ -114,8 +114,8 @@ spanish.cat: ${srcdir}/spanish/charset $
cat $^ $> | $(GENCAT) $@
CATALOGS+=ukrainian.cat
-INSTALLED+=${localedir}/ru_UA.koi8u/LC_MESSAGES/tcsh.cat
-${localedir}/ru_UA.koi8u/LC_MESSAGES/tcsh.cat: ukrainian.cat
+INSTALLED+=${localedir}/uk_UA/LC_MESSAGES/tcsh
+${localedir}/uk_UA/LC_MESSAGES/tcsh: ukrainian.cat
mkdir -p $(@D)
$(INSTALL) $< $@

130
tcsh-6.17.06-dspmbyte.dif Normal file
View File

@ -0,0 +1,130 @@
--- sh.c
+++ sh.c 2010-12-10 16:10:45.000000000 +0000
@@ -847,9 +847,9 @@ main(int argc, char **argv)
/* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
#if defined(DSPMBYTE)
#if defined(NLS) && defined(LC_CTYPE)
- if (((tcp = setlocale(LC_CTYPE, NULL)) != NULL || (tcp = getenv("LANG")) != NULL) && !adrof(CHECK_MBYTEVAR))
+ if (((tcp = setlocale(LC_CTYPE, NULL)) != NULL || (tcp = getenv("LANG")) != NULL))
#else
- if ((tcp = getenv("LANG")) != NULL && !adrof(CHECK_MBYTEVAR))
+ if ((tcp = getenv("LANG")) != NULL)
#endif
{
autoset_dspmbyte(str2short(tcp));
--- sh.func.c
+++ sh.func.c 2010-12-09 09:15:06.000000000 +0000
@@ -1406,14 +1406,6 @@ dosetenv(Char **v, struct command *c)
}
#endif /* apollo */
- /* dspkanji/dspmbyte autosetting */
- /* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
-#if defined(DSPMBYTE)
- if(eq(vp, STRLANG) && !adrof(CHECK_MBYTEVAR)) {
- autoset_dspmbyte(lp);
- }
-#endif
-
if (islocale_var(vp)) {
#ifdef NLS
int k;
@@ -1438,6 +1430,13 @@ dosetenv(Char **v, struct command *c)
nlsclose();
nlsinit();
# endif /* NLS_CATALOGS */
+# if defined(DSPMBYTE)
+ /* dspkanji/dspmbyte autosetting */
+ /* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
+ if (eq(vp, STRLANG)) {
+ autoset_dspmbyte(lp);
+ }
+# endif
# ifdef SETLOCALEBUG
dont_free = 0;
# endif /* SETLOCALEBUG */
--- sh.set.c
+++ sh.set.c 2010-12-09 11:07:56.000000000 +0000
@@ -1119,11 +1119,11 @@ update_dspmbyte_vars(void)
dstr1 = vp->vec[0];
if(eq (dstr1, STRsjis))
iskcode = 1;
- else if (eq(dstr1, STReuc))
+ else if (eq(dstr1, STReuc) || eq(dstr1, STReucjp) || eq(dstr1, STRGB2312))
iskcode = 2;
else if (eq(dstr1, STRbig5))
iskcode = 3;
- else if (eq(dstr1, STRutf8))
+ else if (eq(dstr1, STRutf8) || eq(dstr1, STRutfx8))
iskcode = 4;
else if ((dstr1[0] - '0') >= 0 && (dstr1[0] - '0') <= 3) {
iskcode = 0;
@@ -1207,7 +1207,7 @@ update_dspmbyte_vars(void)
_enable_mbdisp = 0;
dspmbyte_ls = 0;
}
-#ifdef MBYTEDEBUG /* Sorry, use for beta testing */
+# ifdef MBYTEDEBUG /* Sorry, use for beta testing */
{
Char mbmapstr[300];
for (lp = 0; lp < 256; lp++)
@@ -1215,7 +1215,7 @@ update_dspmbyte_vars(void)
mbmapstr[lp] = 0;
setcopy(STRmbytemap, mbmapstr, VAR_READWRITE);
}
-#endif /* MBYTEMAP */
+# endif /* MBYTEMAP */
}
/* dspkanji/dspmbyte autosetting */
@@ -1224,6 +1224,7 @@ void
autoset_dspmbyte(const Char *pcp)
{
int i;
+ struct varent *vp;
static const struct dspm_autoset_Table {
Char *n;
Char *v;
@@ -1246,13 +1247,18 @@ autoset_dspmbyte(const Char *pcp)
#if defined(HAVE_NL_LANGINFO) && defined(CODESET)
static const struct dspm_autoset_Table dspmc[] = {
{ STRstarutfstar8, STRutf8 },
+ { STRutfx8, STRutf8 },
{ STReuc, STReuc },
+ { STReucjp, STReuc },
{ STRGB2312, STReuc },
{ STRLANGBIG5, STRbig5 },
{ NULL, NULL }
};
Char *codeset;
+ if ((vp = adrof(CHECK_MBYTEVAR)))
+ unsetv1(vp);
+
codeset = str2short(nl_langinfo(CODESET));
if (*codeset != '\0') {
for (i = 0; dspmc[i].n; i++) {
--- tc.const.c
+++ tc.const.c 2006-04-25 12:58:31.000000000 +0000
@@ -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' };
+Char STReucjp[] = { 'e', 'u', 'c', '-', 'j', 'p', '\0' };
Char STRsjis[] = { 's', 'j', 'i', 's', '\0' };
Char STRbig5[] = { 'b', 'i', 'g', '5', '\0' };
Char STRutf8[] = { 'u', 't', 'f', '8', '\0' };
Char STRstarutfstar8[] = { '*', 'u', 't', 'f', '*', '8', '\0' };
+Char STRutfx8[] = { 'u', 't', 'f', '-', '8', '\0' };
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' };
@@ -437,7 +439,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' };
-Char STRLC_ALL[] = { 'L', 'C', '_', 'A', 'L', 'L', '\0' };
+Char STRLC_ALL[] = { 'L', 'C', '_', 'A', 'L', 'L', '\0' };
Char STRLC_CTYPE[] = { 'L', 'C', '_', 'C', 'T', 'Y', 'P', 'E' ,'\0' };
Char STRLC_NUMERIC[] = { 'L', 'C', '_', 'N', 'U', 'M', 'E', 'R', 'I',
'C', '\0' };

245
tcsh-6.17.06.dif Normal file
View File

@ -0,0 +1,245 @@
--- Makefile.in
+++ Makefile.in 2011-11-16 12:12:02.000000000 +0000
@@ -599,7 +599,6 @@ install: tcsh$(EXEEXT) install.catalogs
-mkdir -p ${DESTBIN}
-mv -f ${DESTBIN}/tcsh$(EXEEXT) ${DESTBIN}/tcsh.old
cp tcsh$(EXEEXT) ${DESTBIN}/tcsh$(EXEEXT)
- -strip ${DESTBIN}/tcsh$(EXEEXT)
chmod 755 ${DESTBIN}/tcsh$(EXEEXT)
install.catalogs:
--- config/linux
+++ config/linux 2011-11-16 12:15:09.000000000 +0000
@@ -132,4 +132,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 2011-11-16 12:17:18.000000000 +0000
@@ -37,7 +37,7 @@
*/
#ifndef _h_config_f
#define _h_config_f
-
+#include <features.h>
/*
* SHORT_STRINGS Use at least 16 bit characters instead of 8 bit chars
* This fixes up quoting problems and eases implementation
@@ -60,7 +60,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
@@ -154,7 +159,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 ?
@@ -177,7 +182,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 2011-11-16 10:49:20.000000000 +0000
@@ -3794,7 +3794,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.in
+++ configure.in 2011-11-16 10:49:09.000000000 +0000
@@ -298,7 +298,7 @@ fi
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_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(connect, socket)
AC_SEARCH_LIBS(catgets, catgets)
--- glob.h
+++ glob.h 2006-04-25 12:58:31.000000000 +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 2006-04-25 12:58:31.000000000 +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 2010-12-10 16:10:45.000000000 +0000
@@ -1353,6 +1353,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 2006-04-25 12:58:31.000000000 +0000
@@ -489,7 +489,7 @@ smalloc(size_t n)
{
ptr_t ptr;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef HAVE_SBRK
if (membot == NULL)
@@ -512,7 +512,7 @@ srealloc(ptr_t p, size_t n)
{
ptr_t ptr;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef HAVE_SBRK
if (membot == NULL)
@@ -536,7 +536,7 @@ scalloc(size_t s, size_t n)
ptr_t ptr;
n *= s;
- n = n ? n : 1;
+ n = n ? n+1 : 1;
#ifdef HAVE_SBRK
if (membot == NULL)
@@ -561,8 +561,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 2007-07-13 11:15:03.000000000 +0000
@@ -689,9 +689,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
@@ -1905,7 +1909,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 2006-04-25 12:58:31.000000000 +0000
@@ -336,7 +336,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 2006-04-25 12:58:31.000000000 +0000
@@ -260,6 +260,9 @@ watch_login(int force)
}
stlast = sta.st_mtime;
#ifdef HAVE_GETUTENT
+# 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 2006-04-25 12:58:31.000000000 +0000
@@ -578,7 +578,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.
.TP 8
--- tw.h
+++ tw.h 2006-04-25 12:58:31.000000000 +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

3
tcsh-6.17.06.tar.bz2 Normal file
View File

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

View File

@ -1,3 +1,69 @@
-------------------------------------------------------------------
Fri Nov 18 13:26:08 UTC 2011 - werner@suse.de
- Increase size of hash table for runtime linker a lot
-------------------------------------------------------------------
Thu Nov 17 08:44:05 UTC 2011 - werner@suse.de
- Split off tcsh-lang as its own package
- Make language catalogs work that is use tcsh instead of tcsh.cat
as this is the system default
-------------------------------------------------------------------
Wed Nov 16 14:21:12 UTC 2011 - werner@suse.de
- Update to tcsh minor version V6.17.06
* PR/110: Add $anyerror to select behavior. Default to the new one.
* Don't try to spell commands that are correct (Rouben Rostamian)
[./tcsh -f; set path=($path 2); mkdir foo2; cd foo2; touch foo;
chmod +x foo; set correct=cmd; ./foo -> ../foo]
* Don't push the syntax struct on the cleanup stack, because on foo;bar
if foo fails, we will free bar prematurely (Ben Miller)
* Avoid infinite loop while trying to print the pid of a dying process
to a closed file (Bob Arendt)
* Handle completion of ${ variables (Anthony Mallet)
* Add --disable-nls-catalogs (Corinna Vinschen)
* convert message catalogs to UTF-8 (Werner Fink)
* check that the NLS path works before setting $NLSPATH.
* use SYSMALLOC for GLIBC (Werner Fink)
* use mallinfo for SYSMALLOC (Corinna Vinschen)
* Use mkstemp() if there for here docs (Werner Fink)
* Fix handling of errors and exit values in builtins (Werner Fink)
* Better pty name detection (Werner Fink)
* Enable NLS catalogs on Cygwin (Corinna Vinschen)
* NLSPATH handling fixes (Corinna Vinschen)
* Avoid infrequent exit when tcsh cd's into a non-existent directory
https://bugzilla.novell.com/show_bug.cgi?id=293395 (Werner Fink)
* Don't try to spell check full path binaries that are correct because
they can cause hangs when other nfs partitions are hung. (Werner Fink)
* Avoid nested interrupts when exiting causing history writing to fail
https://bugzilla.novell.com/show_bug.cgi?id=331627 (Werner Fink)
* Instead of giving an error or ignoring lines with missing eol at eof,
process them.
* Avoid leaking fd's in mail check (Werner Fink)
* Recognize i686 (Corinna Vinschen)
* Avoid double slashes in cdpath (Corinna Vinschen)
* PR/102: Complain on input files with missing trailing \n
* PR/104: If atime == mtime we don't have new mail.
* PR/113: Don't allow illegal variable names to be set.
* PR/112: don't set $REMOTEHOST on the local machine.
* Add AUTOSET_KANJI which works around the Shift-JIS encoding that
translates unshifted 7 bit ASCII (Werner Fink)
* Handle mb{r,}towc() returning 0 by setting the return value to NUL
(Jean-Luc Leger)
* PR/109: make wait interruptible (Vojtech Vitek)
* resource limit fixes: signed vs. unsigned, megabyte issue, doc issues
(Robert Byrnes)
* Don't echo history while history -L or history -M
* Check for EOS before ** from Greg Dionne
* Don't fork in backeval from Bryan Mason
* Better globstar support from Greg Dionne
* Error out when processing the last incomplete line instead of silently
ignoring it (Anders Kaseorg)
* Fix SEGV from echo ``
* Better fixes for histchars and promptchars (nargs)
-------------------------------------------------------------------
Wed Nov 16 11:12:23 UTC 2011 - werner@suse.de

112
tcsh.spec
View File

@ -1,5 +1,5 @@
#
# spec file for package tcsh
# spec file for package tcsh (Version 6.17.06)
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@ -24,28 +24,23 @@ Url: http://www.tcsh.org/
License: BSD3c(or similar)
Group: System/Shells
Requires: gawk textutils
%if %suse_version > 1020
Recommends: tcsh-lang = 6.17.06
%endif
AutoReqProv: on
Version: 6.17.02
Release: 11
Version: 6.17.06
Release: 1
Summary: The C SHell
Source: ftp.astron.com:/pub/tcsh/tcsh-6.17.02.tar.bz2
Source1: nls-iconv
Source: ftp.astron.com:/pub/tcsh/tcsh-6.17.06.tar.bz2
Source2: bindkey.tcsh
Source3: complete.tcsh
Patch: tcsh-6.17.02.dif
Patch1: tcsh-6.17.02-spelling.dif
Patch2: tcsh-6.15.00-utf8.dif
Patch3: tcsh-6.15.00-pipe.dif
Patch4: tcsh-6.17.00-longjmp.dif
Patch5: tcsh-6.16.00-norm-cmd.dif
Patch6: tcsh-6.17.02-history.dif
Patch7: tcsh-6.15.00-blanks.dif
Patch8: tcsh-6.15.00-fullpath.dif
Patch9: tcsh-6.17.02-multibyte.patch
Patch10: tcsh-6.17.02-colorls.dif
Patch11: tcsh-6.16.00-mailbox.dif
Patch12: tcsh-6.17.02-catalogs.patch
Patch13: tcsh-6.17.02-kanji.dif
Patch: tcsh-6.17.06.dif
Patch1: tcsh-6.15.00-pipe.dif
Patch2: tcsh-6.16.00-norm-cmd.dif
Patch3: tcsh-6.15.00-blanks.dif
Patch4: tcsh-6.17.03-colorls.dif
Patch5: tcsh-6.17.06-dspmbyte.dif
Patch6: tcsh-6.17.06-catalogs.dif
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@ -62,29 +57,61 @@ Authors:
Christos Zoulas <christos@deshaw.com>
Scott Krotz <krotz@mot.com>
%package -n tcsh-lang
License: BSD3c(or similar)
Summary: Languages for package tcsh
Group: System/Localization
Provides: tcsh-lang = %{version}
Requires: tcsh = %{version}
%description -n tcsh-lang
Provides translations to the package tcsh
%prep
%setup
%patch1 -p0 -b .spell
%patch2 -p0 -b .utf8
%patch3 -p0 -b .pipe
%patch4 -p0 -b .longjmp
%patch5 -p0 -b .normcmd
%patch6 -p0 -b .history
%patch1 -p0 -b .pipe
%patch2 -p0 -b .normcmd
### disabled for know, should work on os11.1 without
### %patch7 -p0 -b .blanks
%patch8 -p0 -b .fullpath
%patch9 -p1 -b .mb
%patch10 -p0 -b .colorls
%patch11 -p0 -b .mailbox
%patch12 -p1 -b .catalog
%patch13 -p0 -b .kanji
### %patch3 -p0 -b .blanks
%patch4 -p0 -b .colorls
%patch5 -p0 -b .dspmbyte
%patch6 -p0 -b .catalogs
%patch -b .0
sh $RPM_SOURCE_DIR/nls-iconv
%build
cflags ()
{
local flag=$1; shift
local var=$1; shift
test -n "${flag}" -a -n "${var}" || return
case "${!var}" in
*${flag}*) return
esac
set -o noclobber
case "$flag" in
-Wl,*)
if echo 'int main () { return 0; }' | \
${CC:-gcc} -Werror $flag -o /dev/null -xc - > /dev/null 2>&1 ; then
eval $var=\${$var:+\$$var\ }$flag
fi
;;
*)
if ${CC:-gcc} -Werror $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then
eval $var=\${$var:+\$$var\ }$flag
fi
if ${CXX:-g++} -Werror $flag -S -o /dev/null -xc++ /dev/null > /dev/null 2>&1 ; then
eval $var=\${$var:+\$$var\ }$flag
fi
esac
set +o noclobber
}
CC=gcc
CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -DBUFSIZE=8192 -pipe"
export CC CFLAGS
cflags -ftree-loop-linear CFLAGS
cflags -Wl,-O2 LDFLAGS
cflags -Wl,--as-needed LDFLAGS
cflags -Wl,--hash-size=16699 LDFLAGS
export CC CFLAGS LDFLAGS
%ifarch %ix86
CPU=i586
%else
@ -101,12 +128,10 @@ Authors:
--libexecdir=/usr/%{_lib}/tcsh \
--disable-rpath \
--with-gnu-ld
make
make GENCAT='/usr/bin/gencat --new'
#
# requires a working terminal on stdin
# make check
rm -vf nls/*/set[0-9]*.*
make catalogs
%install
rm -rf $RPM_BUILD_ROOT
@ -120,17 +145,18 @@ Authors:
ge*) nls=de ;;
gr*) nls=el ;;
it*) nls=it ;;
ru*) nls=ru ;;
ru*) nls=ru_RU ;;
sp*) nls=es ;;
uk*) nls=uk_UA ;;
C) continue ;;
esac
dir=$RPM_BUILD_ROOT/usr/share/locale/${nls}/LC_MESSAGES
test ! -e ${dir}/tcsh || continue
mkdir -p -m 0755 $dir
install -m 0444 ${msg} ${dir}/tcsh
done
make DESTDIR=$RPM_BUILD_ROOT install
make DESTDIR=$RPM_BUILD_ROOT install.man
make DESTDIR=$RPM_BUILD_ROOT GENCAT='/usr/bin/gencat --new' install
make DESTDIR=$RPM_BUILD_ROOT GENCAT='/usr/bin/gencat --new' install.man
mkdir -p $RPM_BUILD_ROOT%{_docdir}/tcsh
install -m 0444 FAQ $RPM_BUILD_ROOT%{_docdir}/tcsh/FAQ.tcsh
mkdir -p $RPM_BUILD_ROOT/etc/profile.d/
@ -141,6 +167,7 @@ Authors:
rm -f $RPM_BUILD_ROOT/usr/bin/csh
rm -f $RPM_BUILD_ROOT/usr/bin/tcsh
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/csh.*
rm -rf $RPM_BUILD_ROOT%{_datadir}/locale/C
ln -sf tcsh $RPM_BUILD_ROOT/bin/csh
ln -sf tcsh.1.gz $RPM_BUILD_ROOT%{_mandir}/man1/csh.1.gz
ln -sf ../../bin/tcsh $RPM_BUILD_ROOT/usr/bin/csh
@ -161,6 +188,9 @@ Authors:
%doc %{_docdir}/tcsh/FAQ.tcsh
%doc %{_mandir}/man1/csh.1.gz
%doc %{_mandir}/man1/tcsh.1.gz
%{_datadir}/locale/*/LC_MESSAGES/tcsh
%files -n tcsh-lang
%defattr(-,root,root)
%{_datadir}/locale/*/LC_MESSAGES/tcsh*
%changelog