-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support UTF character to String class
- Loading branch information
Showing
13 changed files
with
232 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
#! /bin/sh | ||
|
||
# | ||
# install - install a program, script, or datafile | ||
# This comes from X11R5; it is not part of GNU. | ||
# | ||
# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $ | ||
# | ||
# This script is compatible with the BSD install script, but was written | ||
# from scratch. | ||
# | ||
|
||
|
||
# set DOITPROG to echo to test this script | ||
|
||
# Don't use :- since 4.3BSD and earlier shells don't like it. | ||
doit="${DOITPROG-}" | ||
|
||
|
||
# put in absolute paths if you don't have them in your path; or use env. vars. | ||
|
||
mvprog="${MVPROG-mv}" | ||
cpprog="${CPPROG-cp}" | ||
chmodprog="${CHMODPROG-chmod}" | ||
chownprog="${CHOWNPROG-chown}" | ||
chgrpprog="${CHGRPPROG-chgrp}" | ||
stripprog="${STRIPPROG-strip}" | ||
rmprog="${RMPROG-rm}" | ||
|
||
instcmd="$mvprog" | ||
chmodcmd="" | ||
chowncmd="" | ||
chgrpcmd="" | ||
stripcmd="" | ||
rmcmd="$rmprog -f" | ||
mvcmd="$mvprog" | ||
src="" | ||
dst="" | ||
|
||
while [ x"$1" != x ]; do | ||
case $1 in | ||
-c) instcmd="$cpprog" | ||
shift | ||
continue;; | ||
|
||
-m) chmodcmd="$chmodprog $2" | ||
shift | ||
shift | ||
continue;; | ||
|
||
-o) chowncmd="$chownprog $2" | ||
shift | ||
shift | ||
continue;; | ||
|
||
-g) chgrpcmd="$chgrpprog $2" | ||
shift | ||
shift | ||
continue;; | ||
|
||
-s) stripcmd="$stripprog" | ||
shift | ||
continue;; | ||
|
||
*) if [ x"$src" = x ] | ||
then | ||
src=$1 | ||
else | ||
dst=$1 | ||
fi | ||
shift | ||
continue;; | ||
esac | ||
done | ||
|
||
if [ x"$src" = x ] | ||
then | ||
echo "install: no input file specified" | ||
exit 1 | ||
fi | ||
|
||
if [ x"$dst" = x ] | ||
then | ||
echo "install: no destination specified" | ||
exit 1 | ||
fi | ||
|
||
|
||
# If destination is a directory, append the input filename; if your system | ||
# does not like double slashes in filenames, you may need to add some logic | ||
|
||
if [ -d $dst ] | ||
then | ||
dst="$dst"/`basename $src` | ||
fi | ||
|
||
# Make a temp file name in the proper directory. | ||
|
||
dstdir=`dirname $dst` | ||
dsttmp=$dstdir/#inst.$$# | ||
|
||
# Move or copy the file name to the temp name | ||
|
||
$doit $instcmd $src $dsttmp | ||
|
||
# and set any options; do chmod last to preserve setuid bits | ||
|
||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi | ||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi | ||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi | ||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi | ||
|
||
# Now rename the file to the real destination. | ||
|
||
$doit $rmcmd $dst | ||
$doit $mvcmd $dsttmp $dst | ||
|
||
|
||
exit 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
#include "common.h" | ||
|
||
int utf8_index_to_utf32_index(char* str, int utf8_index) | ||
{ | ||
unsigned char* str2 = (unsigned char*)str; | ||
unsigned char* p = str2; | ||
|
||
int utf32_index = 0; | ||
|
||
if(utf8_index == 0) { | ||
return 0; | ||
} | ||
|
||
while(*p) { | ||
/// utf8 character /// | ||
if(*p > 127) { | ||
int size; | ||
|
||
size = ((*p & 0x80) >> 7) + ((*p & 0x40) >> 6) + ((*p & 0x20) >> 5) + ((*p & 0x10) >> 4); | ||
|
||
if(size > MB_LEN_MAX) { | ||
return -1; | ||
} | ||
else { | ||
p+=size; | ||
} | ||
|
||
utf32_index++; | ||
} | ||
/// ascii /// | ||
else { | ||
p++; | ||
utf32_index++; | ||
} | ||
|
||
if(p - str2 == utf8_index) { | ||
break; | ||
} | ||
} | ||
|
||
return utf32_index; | ||
} | ||
|
||
int utf32_index_to_utf8_index(char* str, int utf32_index) | ||
{ | ||
unsigned char* str2 = (unsigned char*)str; | ||
unsigned char* p = str2; | ||
|
||
int utf32_index2 = 0; | ||
|
||
if(utf32_index == 0) { | ||
return 0; | ||
} | ||
|
||
while(*p) { | ||
/// utf8 character /// | ||
if(*p > 127) { | ||
int size; | ||
|
||
size = ((*p & 0x80) >> 7) + ((*p & 0x40) >> 6) + ((*p & 0x20) >> 5) + ((*p & 0x10) >> 4); | ||
|
||
if(size > MB_LEN_MAX) { | ||
return -1; | ||
} | ||
else { | ||
p+=size; | ||
} | ||
|
||
utf32_index2++; | ||
} | ||
/// ascii /// | ||
else { | ||
p++; | ||
utf32_index2++; | ||
} | ||
|
||
if(utf32_index2 == utf32_index) { | ||
break; | ||
} | ||
} | ||
|
||
return p - str2; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters