summaryrefslogtreecommitdiffstats
path: root/contrib/tcsh/sh.set.c
diff options
context:
space:
mode:
authormp <mp@FreeBSD.org>2005-04-24 19:41:08 +0000
committermp <mp@FreeBSD.org>2005-04-24 19:41:08 +0000
commit94a109bd814074f290affa8f7698847719d55833 (patch)
tree6daeb0464a7bc8705c0246b7fd98e212b6beed09 /contrib/tcsh/sh.set.c
parentbbd1addf8f9452690ad13ce5b875ee4cc9633958 (diff)
downloadFreeBSD-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.c177
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;
OpenPOWER on IntegriCloud