diff options
author | mp <mp@FreeBSD.org> | 2005-04-24 19:41:08 +0000 |
---|---|---|
committer | mp <mp@FreeBSD.org> | 2005-04-24 19:41:08 +0000 |
commit | 94a109bd814074f290affa8f7698847719d55833 (patch) | |
tree | 6daeb0464a7bc8705c0246b7fd98e212b6beed09 /contrib/tcsh/sh.set.c | |
parent | bbd1addf8f9452690ad13ce5b875ee4cc9633958 (diff) | |
download | FreeBSD-src-94a109bd814074f290affa8f7698847719d55833.zip FreeBSD-src-94a109bd814074f290affa8f7698847719d55833.tar.gz |
Import of tcsh-6.14.00
Diffstat (limited to 'contrib/tcsh/sh.set.c')
-rw-r--r-- | contrib/tcsh/sh.set.c | 177 |
1 files changed, 101 insertions, 76 deletions
diff --git a/contrib/tcsh/sh.set.c b/contrib/tcsh/sh.set.c index afb92f4..568024f 100644 --- a/contrib/tcsh/sh.set.c +++ b/contrib/tcsh/sh.set.c @@ -1,4 +1,4 @@ -/* $Header: /src/pub/tcsh/sh.set.c,v 3.48 2004/03/21 16:48:14 christos Exp $ */ +/* $Header: /src/pub/tcsh/sh.set.c,v 3.61 2005/03/03 16:57:02 kim Exp $ */ /* * sh.set.c: Setting and Clearing of variables */ @@ -32,13 +32,16 @@ */ #include "sh.h" -RCSID("$Id: sh.set.c,v 3.48 2004/03/21 16:48:14 christos Exp $") +RCSID("$Id: sh.set.c,v 3.61 2005/03/03 16:57:02 kim Exp $") #include "ed.h" #include "tw.h" -extern Char HistLit; -extern bool GotTermCaps; +#ifdef HAVE_NL_LANGINFO +#include <langinfo.h> +#endif + +extern int GotTermCaps; int numeof = 0; static void update_vars __P((Char *)); @@ -66,13 +69,13 @@ update_vars(vp) dohash(NULL, NULL); } else if (eq(vp, STRhistchars)) { - register Char *pn = varval(vp); + Char *pn = varval(vp); HIST = *pn++; HISTSUB = *pn; } else if (eq(vp, STRpromptchars)) { - register Char *pn = varval(vp); + Char *pn = varval(vp); PRCH = *pn++; PRCHROOT = *pn; @@ -94,7 +97,7 @@ update_vars(vp) loginsh = 1; } else if (eq(vp, STRsymlinks)) { - register Char *pn = varval(vp); + Char *pn = varval(vp); if (eq(pn, STRignore)) symlinks = SYM_IGNORE; @@ -192,7 +195,7 @@ update_vars(vp) #endif #ifdef NLS_CATALOGS else if (eq(vp, STRcatalog)) { - (void) catclose(catd); + nlsclose(); nlsinit(); } #if defined(FILEC) && defined(TIOCSTI) @@ -206,18 +209,18 @@ update_vars(vp) /*ARGSUSED*/ void doset(v, c) - register Char **v; + Char **v; struct command *c; { - register Char *p; + Char *p; Char *vp, op; Char **vecp; - bool hadsub; + int hadsub; int subscr; int flags = VAR_READWRITE; - bool first_match = 0; - bool last_match = 0; - bool changed = 0; + int first_match = 0; + int last_match = 0; + int changed = 0; USE(c); v++; @@ -276,7 +279,7 @@ doset(v, c) if (op && op != '=') stderror(ERR_NAME | ERR_SYNTAX); if (eq(p, STRLparen)) { - register Char **e = v; + Char **e = v; if (hadsub) stderror(ERR_NAME | ERR_SYNTAX); @@ -309,8 +312,8 @@ doset(v, c) static Char * getinx(cp, ip) - register Char *cp; - register int *ip; + Char *cp; + int *ip; { *ip = 0; *cp++ = 0; @@ -327,7 +330,7 @@ asx(vp, subscr, p) int subscr; Char *p; { - register struct varent *v = getvx(vp, subscr); + struct varent *v = getvx(vp, subscr); if (v->v_flags & VAR_READONLY) stderror(ERR_READONLY|ERR_NAME, v->v_name); @@ -340,7 +343,7 @@ getvx(vp, subscr) Char *vp; int subscr; { - register struct varent *v = adrof(vp); + struct varent *v = adrof(vp); if (v == 0) udvar(vp); @@ -355,9 +358,9 @@ dolet(v, dummy) Char **v; struct command *dummy; { - register Char *p; + Char *p; Char *vp, c, op; - bool hadsub; + int hadsub; int subscr; USE(dummy); @@ -443,7 +446,7 @@ static Char * xset(cp, vp) Char *cp, ***vp; { - register Char *dp; + Char *dp; if (*cp) { dp = Strsave(cp); @@ -461,9 +464,9 @@ operate(op, vp, p) { Char opr[2]; Char *vec[5]; - register Char **v = vec; + Char **v = vec; Char **vecp = v; - register int i; + int i; if (op != '=') { if (*vp) @@ -486,7 +489,7 @@ static Char *putp, nbuf[50]; Char * putn(n) - register int n; + int n; { int num; @@ -518,7 +521,7 @@ putn(n) static void putn1(n) - register int n; + int n; { if (n > 9) putn1(n / 10); @@ -527,9 +530,9 @@ putn1(n) int getn(cp) - register Char *cp; + Char *cp; { - register int n; + int n; int sign; if (!cp) /* PWP: extra error checking */ @@ -557,7 +560,7 @@ value1(var, head) Char *var; struct varent *head; { - register struct varent *vp; + struct varent *vp; if (!var || !head) /* PWP: extra error checking */ return (STRNULL); @@ -570,9 +573,9 @@ value1(var, head) static struct varent * madrof(pat, vp) Char *pat; - register struct varent *vp; + struct varent *vp; { - register struct varent *vp1; + struct varent *vp1; for (vp = vp->v_left; vp; vp = vp->v_right) { if (vp->v_left && (vp1 = madrof(pat, vp)) != NULL) @@ -585,8 +588,8 @@ madrof(pat, vp) struct varent * adrof1(name, v) - register Char *name; - register struct varent *v; + Char *name; + struct varent *v; { int cmp; @@ -608,7 +611,7 @@ set(var, val, flags) Char *var, *val; int flags; { - register Char **vec = (Char **) xmalloc((size_t) (2 * sizeof(Char **))); + Char **vec = (Char **) xmalloc((size_t) (2 * sizeof(Char **))); vec[0] = val; vec[1] = 0; @@ -621,7 +624,7 @@ set1(var, vec, head, flags) struct varent *head; int flags; { - register Char **oldv = vec; + Char **oldv = vec; if ((flags & VAR_NOGLOB) == 0) { gflag = 0; @@ -693,11 +696,11 @@ set1(var, vec, head, flags) void setq(name, vec, p, flags) Char *name, **vec; - register struct varent *p; + struct varent *p; int flags; { - register struct varent *c; - register int f; + struct varent *c; + int f; f = 0; /* tree hangs off the header's left link */ while ((c = p->v_link[f]) != 0) { @@ -729,7 +732,7 @@ unset(v, c) Char **v; struct command *c; { - bool did_roe, did_edit; + int did_roe, did_edit; USE(c); did_roe = adrof(STRrecognize_only_executables) != NULL; @@ -779,18 +782,18 @@ unset(v, c) update_dspmbyte_vars(); #endif #ifdef NLS_CATALOGS - (void) catclose(catd); + nlsclose(); nlsinit(); #endif /* NLS_CATALOGS */ } void unset1(v, head) - register Char *v[]; + Char *v[]; struct varent *head; { - register struct varent *vp; - register int cnt; + struct varent *vp; + int cnt; while (*++v) { cnt = 0; @@ -808,7 +811,7 @@ void unsetv(var) Char *var; { - register struct varent *vp; + struct varent *vp; if ((vp = adrof1(var, &shvhed)) == 0) udvar(var); @@ -817,10 +820,10 @@ unsetv(var) static void unsetv1(p) - register struct varent *p; + struct varent *p; { - register struct varent *c, *pp; - register int f; + struct varent *c, *pp; + int f; /* * Free associated memory first to avoid complications. @@ -870,11 +873,11 @@ setNS(cp) /*ARGSUSED*/ void shift(v, c) - register Char **v; + Char **v; struct command *c; { - register struct varent *argv; - register Char *name; + struct varent *argv; + Char *name; USE(c); v++; @@ -966,15 +969,15 @@ rright(p) */ static void balance(p, f, d) - register struct varent *p; - register int f, d; + struct varent *p; + int f, d; { - register struct varent *pp; + struct varent *pp; #ifndef lint - register struct varent *t; /* used by the rotate macros */ + struct varent *t; /* used by the rotate macros */ #endif /* !lint */ - register int ff; + int ff; #ifdef lint ff = 0; /* Sun's lint is dumb! */ #endif @@ -1071,11 +1074,11 @@ balance(p, f, d) void plist(p, what) - register struct varent *p; + struct varent *p; int what; { - register struct varent *c; - register int len; + struct varent *c; + int len; if (setintr) #ifdef BSDSIGS @@ -1113,7 +1116,7 @@ x: } #if defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE) -bool dspmbyte_ls; +extern int dspmbyte_ls; void update_dspmbyte_vars() @@ -1126,13 +1129,13 @@ update_dspmbyte_vars() if ((vp = adrof(CHECK_MBYTEVAR)) && !adrof(STRnokanji)) { _enable_mbdisp = 1; dstr1 = vp->vec[0]; - if(eq (dstr1, STRKSJIS)) + if(eq (dstr1, STRsjis)) iskcode = 1; - else if (eq(dstr1, STRKEUC)) + else if (eq(dstr1, STReuc)) iskcode = 2; - else if (eq(dstr1, STRKBIG5)) + else if (eq(dstr1, STRbig5)) iskcode = 3; - else if (eq(dstr1, STRKUTF8)) + else if (eq(dstr1, STRutf8)) iskcode = 4; else if ((dstr1[0] - '0') >= 0 && (dstr1[0] - '0') <= 3) { iskcode = 0; @@ -1239,28 +1242,50 @@ autoset_dspmbyte(pcp) Char *n; Char *v; } dspmt[] = { - { STRLANGEUCJP, STRKEUC }, - { STRLANGEUCKR, STRKEUC }, - { STRLANGEUCZH, STRKEUC }, - { STRLANGEUCJPB, STRKEUC }, - { STRLANGEUCKRB, STRKEUC }, - { STRLANGEUCZHB, STRKEUC }, + { STRLANGEUCJP, STReuc }, + { STRLANGEUCKR, STReuc }, + { STRLANGEUCZH, STReuc }, + { STRLANGEUCJPB, STReuc }, + { STRLANGEUCKRB, STReuc }, + { STRLANGEUCZHB, STReuc }, #ifdef linux - { STRLANGEUCJPC, STRKEUC }, + { STRLANGEUCJPC, STReuc }, #endif - { STRLANGSJIS, STRKSJIS }, - { STRLANGSJISB, STRKSJIS }, - { STRLANGBIG5, STRKBIG5 }, - { STRSTARKUTF8, STRKUTF8 }, + { STRLANGSJIS, STRsjis }, + { STRLANGSJISB, STRsjis }, + { STRLANGBIG5, STRbig5 }, + { STRstarutfstar8, STRutf8 }, { NULL, NULL } }; - +#ifdef HAVE_NL_LANGINFO + struct dspm_autoset_Table dspmc[] = { + { STRstarutfstar8, STRutf8 }, + { STReuc, STReuc }, + { STRGB2312, STReuc }, + { STRLANGBIG5, STRbig5 }, + { NULL, NULL } + }; + Char *codeset; + + codeset = str2short(nl_langinfo(CODESET)); + if (*codeset != '\0') { + for (i = 0; dspmc[i].n; i++) { + Char *estr; + if (dspmc[i].n[0] && t_pmatch(pcp, dspmc[i].n, &estr, 0) > 0) { + set(CHECK_MBYTEVAR, Strsave(dspmc[i].v), VAR_READWRITE); + update_dspmbyte_vars(); + return; + } + } + } +#endif + if (*pcp == '\0') return; for (i = 0; dspmt[i].n; i++) { Char *estr; - if (t_pmatch(pcp, dspmt[i].n, &estr, 1) > 0) { + if (dspmt[i].n[0] && t_pmatch(pcp, dspmt[i].n, &estr, 0) > 0) { set(CHECK_MBYTEVAR, Strsave(dspmt[i].v), VAR_READWRITE); update_dspmbyte_vars(); break; |