2007-01-12 16:45:13 +00:00
|
|
|
--- src/cmd/ksh93/edit/edit.c
|
2014-07-08 14:22:03 +00:00
|
|
|
+++ src/cmd/ksh93/edit/edit.c 2014-02-17 15:30:42.426703357 +0000
|
2007-01-12 16:45:13 +00:00
|
|
|
@@ -28,6 +28,7 @@
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <ast.h>
|
|
|
|
+#include <ast_wchar.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#include <ccode.h>
|
2009-12-11 15:15:17 +00:00
|
|
|
#include "FEATURE/options"
|
2014-07-08 14:22:03 +00:00
|
|
|
@@ -57,8 +58,20 @@ static char *savelex;
|
2009-12-11 15:15:17 +00:00
|
|
|
|
2007-01-12 16:45:13 +00:00
|
|
|
|
|
|
|
#if SHOPT_MULTIBYTE
|
2007-04-03 19:36:49 +00:00
|
|
|
-# define is_cntrl(c) ((c<=STRIP) && iscntrl(c))
|
2007-01-12 16:45:13 +00:00
|
|
|
-# define is_print(c) ((c&~STRIP) || isprint(c))
|
2007-04-03 19:36:49 +00:00
|
|
|
+# if _hdr_wctype
|
|
|
|
+# include <wctype.h>
|
|
|
|
+# define is_print(c) iswprint((c))
|
|
|
|
+# define is_cntrl(c) iswcntrl((c))
|
|
|
|
+# else
|
|
|
|
+# define is_cntrl(c) (((c)<=STRIP) && iscntrl((c)))
|
|
|
|
+# define is_print(c) (((c)&~STRIP) || isprint((c)))
|
|
|
|
+# endif
|
|
|
|
+# if !_lib_iswcntrl && !defined(iswcntrl)
|
|
|
|
+# define iswcntrl(c) (((c)<=STRIP) && iscntrl((c)))
|
|
|
|
+# endif
|
|
|
|
+# if !_lib_iswprint && !defined(iswprint)
|
|
|
|
+# define iswprint(c) (((c)&~STRIP) || isprint((c)))
|
|
|
|
+# endif
|
2007-01-12 16:45:13 +00:00
|
|
|
#else
|
2007-04-03 19:36:49 +00:00
|
|
|
# define is_cntrl(c) iscntrl(c)
|
2007-01-12 16:45:13 +00:00
|
|
|
# define is_print(c) isprint(c)
|
2007-04-03 19:36:49 +00:00
|
|
|
--- src/cmd/ksh93/edit/emacs.c
|
2014-07-08 14:22:03 +00:00
|
|
|
+++ src/cmd/ksh93/edit/emacs.c 2014-02-17 15:30:42.426703357 +0000
|
2007-04-03 19:36:49 +00:00
|
|
|
@@ -62,6 +62,7 @@ One line screen editor for any program
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <ast.h>
|
|
|
|
+#include <ast_wchar.h>
|
|
|
|
#include "FEATURE/cmds"
|
|
|
|
#if KSHELL
|
2008-12-18 14:28:49 +00:00
|
|
|
# include "defs.h"
|
2009-12-11 15:15:17 +00:00
|
|
|
@@ -84,6 +85,9 @@ One line screen editor for any program
|
2007-04-03 19:36:49 +00:00
|
|
|
|
|
|
|
|
2007-01-12 16:45:13 +00:00
|
|
|
#if SHOPT_MULTIBYTE
|
2007-04-03 19:36:49 +00:00
|
|
|
+# if _hdr_wctype
|
|
|
|
+# include <wctype.h>
|
|
|
|
+# endif
|
|
|
|
# define gencpy(a,b) ed_gencpy(a,b)
|
|
|
|
# define genncpy(a,b,n) ed_genncpy(a,b,n)
|
|
|
|
# define genlen(str) ed_genlen(str)
|
2014-07-08 14:22:03 +00:00
|
|
|
@@ -1567,11 +1571,19 @@ static void setcursor(register Emacs_t *
|
2007-04-03 19:36:49 +00:00
|
|
|
#if SHOPT_MULTIBYTE
|
|
|
|
static int print(register int c)
|
|
|
|
{
|
|
|
|
+#if _lib_iswprint || defined(iswprint)
|
|
|
|
+ return(iswprint(c));
|
|
|
|
+#else
|
|
|
|
return((c&~STRIP)==0 && isprint(c));
|
|
|
|
+#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
static int _isword(register int c)
|
|
|
|
{
|
|
|
|
+#if _lib_iswalnum || defined(iswalnum)
|
|
|
|
+ return(iswalnum(c) || (c == '_'));
|
|
|
|
+#else
|
|
|
|
return((c&~STRIP) || isalnum(c) || c=='_');
|
|
|
|
+#endif
|
|
|
|
}
|
|
|
|
#endif /* SHOPT_MULTIBYTE */
|
2007-01-12 16:45:13 +00:00
|
|
|
--- src/cmd/ksh93/edit/vi.c
|
2014-07-08 14:22:03 +00:00
|
|
|
+++ src/cmd/ksh93/edit/vi.c 2014-02-17 15:30:42.426703357 +0000
|
2007-01-12 16:45:13 +00:00
|
|
|
@@ -28,6 +28,8 @@
|
|
|
|
* cbosgd!pds
|
|
|
|
-*/
|
|
|
|
|
|
|
|
+#include <ast.h>
|
|
|
|
+#include <ast_wchar.h>
|
|
|
|
|
|
|
|
#if KSHELL
|
|
|
|
# include "defs.h"
|
2014-07-08 14:22:03 +00:00
|
|
|
@@ -60,10 +62,19 @@
|
2007-01-12 16:45:13 +00:00
|
|
|
# define gencpy(a,b) ed_gencpy(a,b)
|
|
|
|
# define genncpy(a,b,n) ed_genncpy(a,b,n)
|
|
|
|
# define genlen(str) ed_genlen(str)
|
|
|
|
-# define digit(c) ((c&~STRIP)==0 && isdigit(c))
|
|
|
|
-# define is_print(c) ((c&~STRIP) || isprint(c))
|
|
|
|
+# if _hdr_wctype
|
|
|
|
+# include <wctype.h>
|
2007-04-03 19:36:49 +00:00
|
|
|
+# define digit(c) iswdigit((c))
|
2007-01-12 16:45:13 +00:00
|
|
|
+# define is_print(c) iswprint((c))
|
|
|
|
+# else
|
2007-04-03 19:36:49 +00:00
|
|
|
+# define digit(c) (((c)&~STRIP)==0 && isdigit((c)))
|
2007-01-12 16:45:13 +00:00
|
|
|
+# define is_print(c) (((c)&~STRIP) || isprint((c)))
|
2007-04-03 19:36:49 +00:00
|
|
|
+# endif
|
|
|
|
+# if !_lib_iswdigit && !defined(iswdigit)
|
|
|
|
+# define iswdigit(c) (((c)&~STRIP)==0 && isdigit((c)))
|
2007-01-12 16:45:13 +00:00
|
|
|
+# endif
|
|
|
|
# if !_lib_iswprint && !defined(iswprint)
|
2007-04-03 19:36:49 +00:00
|
|
|
-# define iswprint(c) ((c&~0177) || isprint(c))
|
2007-01-12 16:45:13 +00:00
|
|
|
+# define iswprint(c) (((c)&~STRIP) || isprint((c)))
|
|
|
|
# endif
|
|
|
|
static int _isalph(int);
|
|
|
|
static int _ismetach(int);
|
|
|
|
--- src/cmd/ksh93/sh/string.c
|
2014-07-08 14:22:03 +00:00
|
|
|
+++ src/cmd/ksh93/sh/string.c 2014-02-17 15:30:52.534784033 +0000
|
|
|
|
@@ -36,7 +36,7 @@
|
2007-01-12 16:45:13 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#if !_lib_iswprint && !defined(iswprint)
|
2007-04-03 19:36:49 +00:00
|
|
|
-# define iswprint(c) (((c)&~0377) || isprint(c))
|
|
|
|
+# define iswprint(c) (((c)&~STRIP) || isprint(c))
|
2007-01-12 16:45:13 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
2014-07-08 14:22:03 +00:00
|
|
|
@@ -244,7 +244,7 @@ void sh_trim(register char *sp)
|
2007-06-20 17:15:02 +00:00
|
|
|
if(sp)
|
|
|
|
{
|
|
|
|
dp = sp;
|
|
|
|
- while(c= *sp)
|
|
|
|
+ while((c = *sp))
|
|
|
|
{
|
|
|
|
#if SHOPT_MULTIBYTE
|
|
|
|
int len;
|
2007-11-23 01:11:50 +00:00
|
|
|
--- src/cmd/ksh93/tests/sjis.sh
|
2014-07-08 14:22:03 +00:00
|
|
|
+++ src/cmd/ksh93/tests/sjis.sh 2014-02-17 15:30:52.534784033 +0000
|
2013-03-19 15:31:13 +00:00
|
|
|
@@ -0,0 +1,77 @@
|
2007-11-23 01:11:50 +00:00
|
|
|
+########################################################################
|
|
|
|
+# #
|
|
|
|
+# Copyright (c) 2007 SuSE Linux Products GmbH, Nuernberg, Germany #
|
|
|
|
+# #
|
|
|
|
+# This library is free software; you can redistribute it and/or #
|
|
|
|
+# modify it under the terms of the GNU Lesser General Public #
|
|
|
|
+# License as published by the Free Software Foundation; #
|
|
|
|
+# version 2.1 of the License. #
|
|
|
|
+# #
|
|
|
|
+# This library is distributed in the hope that it will be useful, #
|
|
|
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
|
|
+# GNU Lesser General Public License at #
|
|
|
|
+# http://www.gnu.org/licenses/lgpl-2.1.html for more details #
|
|
|
|
+# #
|
|
|
|
+# Author: Werner Fink <werner@suse.de> #
|
|
|
|
+# #
|
|
|
|
+########################################################################
|
|
|
|
+
|
|
|
|
+#
|
|
|
|
+# Byte ranges for Shift-JIS encoding (hexadecimal):
|
|
|
|
+# First byte: 81-9F, E0-EF
|
|
|
|
+# Second byte: 40-7E, 80-FC
|
|
|
|
+#
|
|
|
|
+# Now test out some multi byte characters which
|
|
|
|
+# include 7bit aka ASCII bytes with 0x81 0x{40-7E}
|
|
|
|
+#
|
|
|
|
+
|
|
|
|
+typeset -i chr=0
|
|
|
|
+typeset -i err=0
|
|
|
|
+typeset printf=$(type -p printf 2>/dev/null)
|
|
|
|
+
|
|
|
|
+unset LC_ALL
|
|
|
|
+unset LC_CTYPE
|
|
|
|
+export LANG=ja_JP.SJIS
|
|
|
|
+
|
|
|
|
+for second in $(seq 64 126); do
|
2010-10-11 12:37:47 +00:00
|
|
|
+ let chr++
|
2007-11-23 01:11:50 +00:00
|
|
|
+ second=$(printf '%x' ${second})
|
|
|
|
+ mbchar="$(printf "\x81\x${second}")"
|
|
|
|
+ if test -z "${mbchar}" ; then
|
2010-10-11 12:37:47 +00:00
|
|
|
+ let err++ # ERROR in builtin printf
|
2011-06-08 13:18:04 +00:00
|
|
|
+ echo ' builtin printf with \\x81\\x'${second} failed as result is empty
|
2007-11-23 01:11:50 +00:00
|
|
|
+ continue
|
|
|
|
+ fi
|
|
|
|
+ if test -x "${printf}" ; then
|
|
|
|
+ if test $(${printf} "\x81\x${second}") != ${mbchar} ; then
|
2010-10-11 12:37:47 +00:00
|
|
|
+ let err++ # ERROR in builtin printf
|
2011-06-08 13:18:04 +00:00
|
|
|
+ echo -n ' \\x81\\x'${second} 'failed with '
|
|
|
|
+ echo -n $(${printf} "\x81\x${second}") '!= '
|
|
|
|
+ echo ${mbchar}
|
2007-11-23 01:11:50 +00:00
|
|
|
+ continue
|
|
|
|
+ fi
|
|
|
|
+ fi
|
|
|
|
+ uq=$(echo ${mbchar})
|
|
|
|
+ dq=$(echo "${mbchar}")
|
|
|
|
+ test "$uq" != "$dq" && let err+=1
|
|
|
|
+ test ${#uq} -ne 1 -o ${#dq} -ne 1 && let err+=1
|
|
|
|
+done
|
|
|
|
+
|
|
|
|
+if test $err -ne 0 ; then
|
|
|
|
+ : err_exit
|
|
|
|
+ : err_exit
|
|
|
|
+ print -u2 -n "\t"
|
|
|
|
+ print -u2 -r ${0##*/}[$LINENO]: "Shift-JIS encoding failed"
|
|
|
|
+fi
|
2013-03-19 15:31:13 +00:00
|
|
|
+
|
|
|
|
+LANG=POSIX
|
|
|
|
+typeset -r utf8_euro_char1=$'\u[20ac]'
|
|
|
|
+typeset -r utf8_euro_char2=$'\342\202\254'
|
|
|
|
+(( (${#utf8_euro_char1} == 1) && (${#utf8_euro_char2} == 1) )) || export LC_ALL='en_US.UTF-8'
|
|
|
|
+if [[ "$(printf '\u[20ac]')" != $'\342\202\254' ]] ; then
|
|
|
|
+ : err_exit
|
|
|
|
+ print -u2 -n "\t"
|
|
|
|
+ print -u2 -r ${0##*/}[$LINENO]: "Locale overrride failed."
|
|
|
|
+fi
|
2007-11-23 01:11:50 +00:00
|
|
|
+exit $err
|
2007-01-12 16:45:13 +00:00
|
|
|
--- src/lib/libast/comp/setlocale.c
|
2014-07-08 14:22:03 +00:00
|
|
|
+++ src/lib/libast/comp/setlocale.c 2014-02-17 15:30:52.534784033 +0000
|
2007-04-03 19:36:49 +00:00
|
|
|
@@ -32,6 +32,7 @@
|
2007-01-12 16:45:13 +00:00
|
|
|
|
|
|
|
#include "lclib.h"
|
|
|
|
|
|
|
|
+#include <ast.h>
|
2007-04-03 19:36:49 +00:00
|
|
|
#include <ast_wchar.h>
|
2007-01-12 16:45:13 +00:00
|
|
|
#include <ctype.h>
|
|
|
|
#include <mc.h>
|
|
|
|
--- src/lib/libast/features/wchar
|
2014-07-08 14:22:03 +00:00
|
|
|
+++ src/lib/libast/features/wchar 2014-02-17 15:39:52.471093724 +0000
|
|
|
|
@@ -8,8 +8,9 @@ cat{
|
2011-09-02 12:19:30 +00:00
|
|
|
#define _AST_WCHAR_H 1
|
|
|
|
}end
|
|
|
|
|
2014-07-08 14:22:03 +00:00
|
|
|
-lib mbstowcs,wctomb,wcscmp,wcscoll,wcslen,wcstombs,wcsxfrm,wcwidth stdlib.h stdio.h wchar.h
|
|
|
|
+lib mbstowcs,wctomb,wcscmp,wcscoll,wcslen,wcstombs,wcsxfrm,wcscpy,wcwidth stdlib.h stdio.h wchar.h
|
|
|
|
lib mbrlen,mbrtowc,mbsrtowcs,wcrtomb,wcsrtombs stdlib.h stdio.h wchar.h
|
2007-04-03 19:36:49 +00:00
|
|
|
+lib iswprint,iswalpha,iswalnum,iswdigit,iswcntrl stdlib.h stdio.h ctype.h wctype.h
|
2007-01-12 16:45:13 +00:00
|
|
|
lib towlower,towupper stdlib.h stdio.h wchar.h
|
|
|
|
typ mbstate_t stdlib.h stdio.h wchar.h
|
|
|
|
nxt wchar
|
2014-07-08 14:22:03 +00:00
|
|
|
@@ -69,6 +70,12 @@ cat <<!
|
2007-01-12 16:45:13 +00:00
|
|
|
#undef putwc
|
|
|
|
#undef putwchar
|
|
|
|
#undef ungetwc
|
|
|
|
+ #undef fwprintf
|
|
|
|
+ #undef swprintf
|
|
|
|
+ #undef vfwprintf
|
|
|
|
+ #undef vswprintf
|
|
|
|
+ #undef vwprintf
|
|
|
|
+ #undef wprintf
|
|
|
|
|
|
|
|
#define fgetwc _ast_fgetwc
|
|
|
|
#define fgetws _ast_fgetws
|
2014-07-08 14:22:03 +00:00
|
|
|
@@ -138,6 +145,12 @@ cat <<!
|
2007-01-12 16:45:13 +00:00
|
|
|
#if !_lib_wcstombs
|
|
|
|
extern size_t wcstombs(char*, const wchar_t*, size_t);
|
|
|
|
#endif
|
|
|
|
+ #if !_lib_wcscpy
|
|
|
|
+ extern wchar_t *wcscpy(wchar_t*t, const wchar_t*);
|
|
|
|
+ #endif
|
|
|
|
+ #if !_lib_wcwidth
|
|
|
|
+ extern int int wcwidth(wchar_t c);
|
|
|
|
+ #endif
|
|
|
|
|
|
|
|
extern int fwprintf(FILE*, const wchar_t*, ...);
|
|
|
|
extern int fwscanf(FILE*, const wchar_t*, ...);
|
2007-11-23 01:11:50 +00:00
|
|
|
--- src/lib/libast/include/ast.h
|
2014-07-08 14:22:03 +00:00
|
|
|
+++ src/lib/libast/include/ast.h 2014-02-17 15:49:44.951821429 +0000
|
|
|
|
@@ -444,13 +444,21 @@ extern char** environ;
|
|
|
|
#else
|
2007-11-23 01:11:50 +00:00
|
|
|
|
2014-07-08 14:22:03 +00:00
|
|
|
#define mb2wc(w,p,n) (*ast.mb_towc)(&(w),(char*)(p),(n))
|
|
|
|
-#define mbchar(p) (mbwide()?((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),mbmax()))>0?((p+=ast.tmp_int),ast.tmp_wchar):(p+=ast.mb_sync+1,ast.tmp_int)):(*(unsigned char*)(p++)))
|
|
|
|
-#define mbnchar(p,n) (mbwide()?((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),n))>0?((p+=ast.tmp_int),ast.tmp_wchar):(p+=ast.mb_sync+1,ast.tmp_int)):(*(unsigned char*)(p++)))
|
|
|
|
#define mbinit() (mbwide()?(*ast.mb_towc)((wchar_t*)0,(char*)0,mbmax()):0)
|
|
|
|
#define mbsize(p) (mbwide()?(*ast.mb_len)((char*)(p),mbmax()):((p),1))
|
|
|
|
#define mbnsize(p,n) (mbwide()?(*ast.mb_len)((char*)(p),n):((p),1))
|
|
|
|
#define mbconv(s,w) (ast.mb_conv?(*ast.mb_conv)(s,w):((*(s)=(w)),1))
|
2010-10-11 12:37:47 +00:00
|
|
|
|
2014-07-08 14:22:03 +00:00
|
|
|
+#define mbchar(p) (mbwide() ? \
|
|
|
|
+ (((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),mbmax()))>0) ? \
|
|
|
|
+ ({p+=ast.tmp_int;ast.tmp_wchar;}) : \
|
|
|
|
+ ({ast.tmp_int=*(unsigned char*)p;p+=ast.mb_sync+1;ast.tmp_int;})) : \
|
|
|
|
+ (*(unsigned char*)(p++)))
|
|
|
|
+#define mbnchar(p,n) (mbwide() ? \
|
|
|
|
+ (((ast.tmp_int=(*ast.mb_towc)(&ast.tmp_wchar,(char*)(p),n))>0) ? \
|
|
|
|
+ ({p+=ast.tmp_int;ast.tmp_wchar;}) : \
|
|
|
|
+ ({ast.tmp_int=*(unsigned char*)p;p+=ast.mb_sync+1;ast.tmp_int;})): \
|
|
|
|
+ (*(unsigned char*)(p++)))
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* generic plugin version support */
|
2007-01-12 16:45:13 +00:00
|
|
|
--- src/lib/libast/regex/reglib.h
|
2014-07-08 14:22:03 +00:00
|
|
|
+++ src/lib/libast/regex/reglib.h 2014-02-17 15:30:52.538784065 +0000
|
2007-04-03 19:36:49 +00:00
|
|
|
@@ -57,6 +57,7 @@ typedef struct regsubop_s
|
2007-01-12 16:45:13 +00:00
|
|
|
char re_rhs[1]; /* substitution rhs */
|
|
|
|
|
|
|
|
#include <ast.h>
|
|
|
|
+#include <ast_wchar.h>
|
|
|
|
#include <cdt.h>
|
|
|
|
#include <stk.h>
|
|
|
|
|
|
|
|
--- src/lib/libcmd/Mamfile
|
2014-07-08 14:22:03 +00:00
|
|
|
+++ src/lib/libcmd/Mamfile 2014-02-17 15:42:56.236560387 +0000
|
|
|
|
@@ -592,7 +592,7 @@ make cat.o
|
2007-01-12 16:45:13 +00:00
|
|
|
prev cat.c
|
2011-09-02 12:19:30 +00:00
|
|
|
meta cat.o %.c>%.o cat.c cat
|
2007-01-12 16:45:13 +00:00
|
|
|
prev cat.c
|
2014-07-08 14:22:03 +00:00
|
|
|
-exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -I${PACKAGE_ast_INCLUDE} -DERROR_CATALOG=\""libcmd"\" -DUSAGE_LICENSE=\""[-author?Glenn Fowler <glenn.s.fowler@gmail.com>][-author?David Korn <dgkorn@gmail.com>][-copyright?Copyright (c) 1992-2014 AT&T Intellectual Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--catalog?libcmd]"\" -D_BLD_cmd -D_PACKAGE_ast -c cat.c
|
|
|
|
+exec - ${CC} ${mam_cc_FLAGS} ${CCFLAGS} -I. -I${PACKAGE_ast_INCLUDE} -DERROR_CATALOG=\""libcmd"\" -DUSAGE_LICENSE=\""[-author?Glenn Fowler <glenn.s.fowler@gmail.com>][-author?David Korn <dgkorn@gmail.com>][-copyright?Copyright (c) 1992-2014 AT&T Intellectual Property][-license?http://www.eclipse.org/org/documents/epl-v10.html][--catalog?libcmd]"\" -D_BLD_cmd -D_PACKAGE_ast -DSHOPT_MULTIBYTE -c cat.c
|
2007-01-12 16:45:13 +00:00
|
|
|
done cat.o generated
|
|
|
|
make chgrp.o
|
|
|
|
prev chgrp.c
|