Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:GA
tcsh
tcsh-6.18.01-SJIS.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File tcsh-6.18.01-SJIS.patch of Package tcsh
--- sh.c | 41 ++++++++++++++++++++++++++++++++++++++++- sh.decls.h | 4 ++++ sh.func.c | 2 ++ sh.set.c | 11 +++++++++++ tc.str.c | 8 ++++++++ 5 files changed, 65 insertions(+), 1 deletion(-) --- sh.c +++ sh.c 2017-12-12 13:08:52.253207919 +0000 @@ -250,6 +250,7 @@ main(int argc, char **argv) char **tempv; int osetintr; struct sigaction oparintr; + const char *cmd = NULL; (void)memset(&reslab, 0, sizeof(reslab)); #ifdef WINNT_NATIVE @@ -262,6 +263,7 @@ main(int argc, char **argv) #ifdef NLS # ifdef LC_CTYPE (void) setlocale(LC_CTYPE, ""); /* for iscntrl */ + autoset_sjis(); # endif /* LC_CTYPE */ #endif /* NLS */ @@ -925,6 +927,13 @@ main(int argc, char **argv) #endif arginp = SAVE(tempv[0]); + if (shiftjis) { + cmd = tempv[0]; + prompt = 0; + nofile = 1; + break; + } + /* * we put the command into a variable */ @@ -1398,7 +1407,37 @@ main(int argc, char **argv) setNS(STRverbose); if (nexececho) setNS(STRecho); - + + if (cmd != NULL) { + if (arginp != NULL) { + xfree(arginp); + arginp = SAVE(cmd); + } + + /* + * we put the command into a variable + */ + if (arginp != NULL) + setv(STRcommand, quote(Strsave(arginp)), VAR_READWRITE); + + /* + * * Give an error on -c arguments that end in * backslash to + * ensure that you don't make * nonportable csh scripts. + */ + { + int count; + + cp = Strend(arginp); + count = 0; + while (cp > arginp && *--cp == '\\') + ++count; + if ((count & 1) != 0) { + exiterr = 1; + stderror(ERR_ARGC); + } + } + } + /* * All the rest of the world is inside this call. The argument to process * indicates whether it should catch "error unwinds". Thus if we are a --- sh.decls.h +++ sh.decls.h 2017-12-12 12:54:35.841788967 +0000 @@ -399,6 +399,10 @@ extern void autoset_dspmbyte (const C #if defined(AUTOSET_KANJI) extern void autoset_kanji (void); #endif +#if defined(NLS) && defined(LC_CTYPE) +extern void autoset_sjis (void); +extern int shiftjis; +#endif /* * sh.time.c --- sh.func.c +++ sh.func.c 2017-12-12 13:02:38.464241737 +0000 @@ -1419,6 +1419,7 @@ dosetenv(Char **v, struct command *c) # endif # ifdef LC_CTYPE (void) setlocale(LC_CTYPE, ""); /* for iscntrl */ + autoset_sjis(); # endif /* LC_CTYPE */ # if defined(AUTOSET_KANJI) autoset_kanji(); @@ -1632,6 +1633,7 @@ dounsetenv(Char **v, struct command *c) # endif # ifdef LC_CTYPE (void) setlocale(LC_CTYPE, ""); /* for iscntrl */ + autoset_sjis(); # endif /* LC_CTYPE */ # ifdef NLS_CATALOGS # ifdef LC_MESSAGES --- sh.set.c +++ sh.set.c 2017-12-12 13:00:22.366800676 +0000 @@ -1305,5 +1305,16 @@ autoset_kanji(void) if (adrof(STRnokanji) != NULL) unsetv(STRnokanji); } +#else +int shiftjis = 0; +void +autoset_sjis(void) +{ + char *codeset = nl_langinfo(CODESET); + if (strcasestr (codeset, "JIS") != 0 && MB_CUR_MAX == 2) + shiftjis = 1; + else + shiftjis = 0; +} #endif #endif --- tc.str.c +++ tc.str.c 2017-12-12 13:25:46.234095792 +0000 @@ -136,6 +136,14 @@ rt_mbtowc(Char *pwc, const char *s, size ret += n2; } } else +#else + if (shiftjis) + /* Special case for Shift-JIS, so the output is always + ASCII-compatible. */ + if (ret == 1 && 0x00 <= *s && *s <= 0x7F && *pwc != *s) { + *pwc = *s; + return ret; + } #endif if (wctomb(back, *pwc) != ret || memcmp(s, back, ret) != 0) ret = -1;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor