--- np2/common/milstr.c 2004/06/20 11:19:45 1.10 +++ np2/common/milstr.c 2005/04/01 15:35:49 1.14 @@ -4,12 +4,12 @@ // ---- ANK / UCS2 / UCS4 #if defined(SUPPORT_ANK) -int milank_charsize(const OEMCHAR *str) { +int STRCALL milank_charsize(const OEMCHAR *str) { return((str[0] != '\0')?1:0); } -int milank_cmp(const OEMCHAR *str, const OEMCHAR *cmp) { +int STRCALL milank_cmp(const OEMCHAR *str, const OEMCHAR *cmp) { int s; int c; @@ -30,7 +30,7 @@ int milank_cmp(const OEMCHAR *str, const return(0); } -int milank_memcmp(const OEMCHAR *str, const OEMCHAR *cmp) { +int STRCALL milank_memcmp(const OEMCHAR *str, const OEMCHAR *cmp) { int s; int c; @@ -51,7 +51,7 @@ int milank_memcmp(const OEMCHAR *str, co return((s > c)?1:-1); } -void milank_ncpy(OEMCHAR *dst, const OEMCHAR *src, int maxlen) { +void STRCALL milank_ncpy(OEMCHAR *dst, const OEMCHAR *src, int maxlen) { int i; @@ -64,7 +64,7 @@ void milank_ncpy(OEMCHAR *dst, const OEM } } -void milank_ncat(OEMCHAR *dst, const OEMCHAR *src, int maxlen) { +void STRCALL milank_ncat(OEMCHAR *dst, const OEMCHAR *src, int maxlen) { int i; int j; @@ -83,7 +83,7 @@ void milank_ncat(OEMCHAR *dst, const OEM } } -OEMCHAR *milank_chr(const OEMCHAR *str, int c) { +OEMCHAR * STRCALL milank_chr(const OEMCHAR *str, int c) { int s; @@ -104,7 +104,7 @@ OEMCHAR *milank_chr(const OEMCHAR *str, // ---- Shift-JIS #if defined(SUPPORT_SJIS) -int milsjis_charsize(const char *str) { +int STRCALL milsjis_charsize(const char *str) { int pos; @@ -112,26 +112,26 @@ int milsjis_charsize(const char *str) { return((str[pos] != '\0')?(pos+1):0); } -int milsjis_cmp(const char *str, const char *cmp) { +int STRCALL milsjis_cmp(const char *str, const char *cmp) { int s; int c; do { - s = (BYTE)*str++; + s = (UINT8)*str++; if ((((s ^ 0x20) - 0xa1) & 0xff) < 0x3c) { - c = (BYTE)*cmp++; + c = (UINT8)*cmp++; if (s != c) { goto mscp_err; } - s = (BYTE)*str++; - c = (BYTE)*cmp++; + s = (UINT8)*str++; + c = (UINT8)*cmp++; } else { if (((s - 'a') & 0xff) < 26) { s -= 0x20; } - c = (BYTE)*cmp++; + c = (UINT8)*cmp++; if (((c - 'a') & 0xff) < 26) { c -= 0x20; } @@ -146,26 +146,26 @@ mscp_err: return((s > c)?1:-1); } -int milsjis_memcmp(const char *str, const char *cmp) { +int STRCALL milsjis_memcmp(const char *str, const char *cmp) { int s; int c; do { - c = (BYTE)*cmp++; + c = (UINT8)*cmp++; if ((((c ^ 0x20) - 0xa1) & 0xff) < 0x3c) { - s = (BYTE)*str++; + s = (UINT8)*str++; if (c != s) { break; } - c = (BYTE)*cmp++; - s = (BYTE)*str++; + c = (UINT8)*cmp++; + s = (UINT8)*str++; } else if (c) { if (((c - 'a') & 0xff) < 26) { c &= ~0x20; } - s = (BYTE)*str++; + s = (UINT8)*str++; if (((s - 'a') & 0xff) < 26) { s &= ~0x20; } @@ -177,7 +177,7 @@ int milsjis_memcmp(const char *str, cons return((s > c)?1:-1); } -int milsjis_kanji1st(const char *str, int pos) { +int STRCALL milsjis_kanji1st(const char *str, int pos) { int ret; @@ -189,17 +189,18 @@ int milsjis_kanji1st(const char *str, in return(ret); } -int milsjis_kanji2nd(const char *str, int pos) { +int STRCALL milsjis_kanji2nd(const char *str, int pos) { - int ret = 0; + int ret; + ret = 0; while((pos > 0) && ((((str[--pos] ^ 0x20) - 0xa1) & 0xff) < 0x3c)) { ret ^= 1; } return(ret); } -void milsjis_ncpy(char *dst, const char *src, int maxlen) { +void STRCALL milsjis_ncpy(char *dst, const char *src, int maxlen) { int i; @@ -217,7 +218,7 @@ void milsjis_ncpy(char *dst, const char } } -void milsjis_ncat(char *dst, const char *src, int maxlen) { +void STRCALL milsjis_ncat(char *dst, const char *src, int maxlen) { int i; int j; @@ -241,7 +242,7 @@ void milsjis_ncat(char *dst, const char } } -char *milsjis_chr(const char *str, int c) { +char * STRCALL milsjis_chr(const char *str, int c) { int s; @@ -266,34 +267,34 @@ char *milsjis_chr(const char *str, int c // ---- EUC #if defined(SUPPORT_EUC) // あれ 半角カナ忘れてるぞ? -int mileuc_charsize(const char *str) { +int STRCALL mileuc_charsize(const char *str) { int pos; - pos = (((str[0] - 0xa1) & 0xff) < 0x5d)?1:0; + pos = (str[0] & 0x80)?1:0; return((str[pos] != '\0')?(pos+1):0); } -int mileuc_cmp(const char *str, const char *cmp) { +int STRCALL mileuc_cmp(const char *str, const char *cmp) { int s; int c; do { - s = (BYTE)*str++; - if (((s - 0xa1) & 0xff) < 0x5d) { - c = (BYTE)*cmp++; + s = (UINT8)*str++; + if (s & 0x80) { + c = (UINT8)*cmp++; if (s != c) { goto mscp_err; } - s = (BYTE)*str++; - c = (BYTE)*cmp++; + s = (UINT8)*str++; + c = (UINT8)*cmp++; } else { if (((s - 'a') & 0xff) < 26) { s -= 0x20; } - c = (BYTE)*cmp++; + c = (UINT8)*cmp++; if (((c - 'a') & 0xff) < 26) { c -= 0x20; } @@ -308,26 +309,26 @@ mscp_err: return((s > c)?1:-1); } -int mileuc_memcmp(const char *str, const char *cmp) { +int STRCALL mileuc_memcmp(const char *str, const char *cmp) { int s; int c; do { - c = (BYTE)*cmp++; - if (((c - 0xa1) & 0xff) < 0x5d) { - s = (BYTE)*str++; + c = (UINT8)*cmp++; + if (c & 0x80) { + s = (UINT8)*str++; if (c != s) { break; } - c = (BYTE)*cmp++; - s = (BYTE)*str++; + c = (UINT8)*cmp++; + s = (UINT8)*str++; } else if (c) { if (((c - 'a') & 0xff) < 26) { c -= 0x20; } - s = (BYTE)*str++; + s = (UINT8)*str++; if (((s - 'a') & 0xff) < 26) { s -= 0x20; } @@ -339,29 +340,29 @@ int mileuc_memcmp(const char *str, const return((s > c)?1:-1); } -int mileuc_kanji1st(const char *str, int pos) { +int STRCALL mileuc_kanji1st(const char *str, int pos) { int ret; ret = 0; - while((pos >= 0) && - (((str[pos--] - 0xa1) & 0xff) < 0x5d)) { + while((pos >= 0) && (str[pos--] & 0x80)) { ret ^= 1; } return(ret); } -int mileuc_kanji2nd(const char *str, int pos) { +int STRCALL mileuc_kanji2nd(const char *str, int pos) { - int ret = 0; + int ret; - while((pos > 0) && (((str[--pos] - 0xa1) & 0xff) < 0x5d)) { + ret = 0; + while((pos > 0) && (str[--pos] & 0x80)) { ret ^= 1; } return(ret); } -void mileuc_ncpy(char *dst, const char *src, int maxlen) { +void STRCALL mileuc_ncpy(char *dst, const char *src, int maxlen) { int i; @@ -379,7 +380,7 @@ void mileuc_ncpy(char *dst, const char * } } -void mileuc_ncat(char *dst, const char *src, int maxlen) { +void STRCALL mileuc_ncat(char *dst, const char *src, int maxlen) { int i; int j; @@ -403,7 +404,7 @@ void mileuc_ncat(char *dst, const char * } } -char *mileuc_chr(const char *str, int c) { +char * STRCALL mileuc_chr(const char *str, int c) { int s; @@ -413,7 +414,7 @@ char *mileuc_chr(const char *str, int c) if (s == c) { return((char *)str); } - if (((s - 0xa1) & 0xff) < 0x5d) { + if (s & 0x80) { str++; s = *str; } @@ -428,7 +429,7 @@ char *mileuc_chr(const char *str, int c) // ---- UTF8 #if defined(SUPPORT_UTF8) -int milutf8_charsize(const char *str) { +int STRCALL milutf8_charsize(const char *str) { if (str[0] == '\0') { return(0); @@ -450,7 +451,7 @@ int milutf8_charsize(const char *str) { return(0); } -int milutf8_cmp(const char *str, const char *cmp) { +int STRCALL milutf8_cmp(const char *str, const char *cmp) { int s; int c; @@ -460,7 +461,7 @@ int milutf8_cmp(const char *str, const c if (((s - 'a') & 0xff) < 26) { s -= 0x20; } - c = (BYTE)*cmp++; + c = (UINT8)*cmp++; if (((c - 'a') & 0xff) < 26) { c -= 0x20; } @@ -471,7 +472,7 @@ int milutf8_cmp(const char *str, const c return(0); } -int milutf8_memcmp(const char *str, const char *cmp) { +int STRCALL milutf8_memcmp(const char *str, const char *cmp) { int s; int c; @@ -492,17 +493,17 @@ int milutf8_memcmp(const char *str, cons return((s > c)?1:-1); } -int milutf8_kanji1st(const char *str, int pos) { +int STRCALL milutf8_kanji1st(const char *str, int pos) { return(((str[pos] & 0xc0) >= 0xc0)?1:0); } -int milutf8_kanji2nd(const char *str, int pos) { +int STRCALL milutf8_kanji2nd(const char *str, int pos) { return(((str[pos] & 0xc0) == 0x80)?1:0); } -void milutf8_ncpy(char *dst, const char *src, int maxlen) { +void STRCALL milutf8_ncpy(char *dst, const char *src, int maxlen) { int i; @@ -511,14 +512,18 @@ void milutf8_ncpy(char *dst, const char for (i=0; i c)?1:-1); } -OEMCHAR *milstr_nextword(const OEMCHAR *str) { +OEMCHAR * STRCALL milstr_nextword(const OEMCHAR *str) { if (str) { while((*str > '\0') && (*str <= ' ')) { @@ -606,11 +615,11 @@ OEMCHAR *milstr_nextword(const OEMCHAR * return((OEMCHAR *)str); } -int milstr_getarg(OEMCHAR *str, OEMCHAR *arg[], int maxarg) { +int STRCALL milstr_getarg(OEMCHAR *str, OEMCHAR *arg[], int maxarg) { int ret = 0; OEMCHAR *p; - BOOL quot; + BRESULT quot; while(maxarg--) { quot = FALSE; @@ -640,11 +649,11 @@ int milstr_getarg(OEMCHAR *str, OEMCHAR return(ret); } -long milstr_solveHEX(const OEMCHAR *str) { +long STRCALL milstr_solveHEX(const OEMCHAR *str) { long ret; int i; - char c; + OEMCHAR c; ret = 0; for (i=0; i<8; i++) { @@ -667,25 +676,26 @@ long milstr_solveHEX(const OEMCHAR *str) return(ret); } -long milstr_solveINT(const OEMCHAR *str) { +long STRCALL milstr_solveINT(const OEMCHAR *str) { - long ret; - int c; - int s = 1; + unsigned long ret; + BOOL minus; + int c; ret = 0; + minus = FALSE; c = *str; if (c == '+') { str++; } else if (c == '-') { str++; - s = -1; + minus = TRUE; } while(1) { c = *str++; c -= '0'; - if ((unsigned)c < 10) { + if ((c >= 0) && (c < 10)) { ret *= 10; ret += c; } @@ -693,10 +703,15 @@ long milstr_solveINT(const OEMCHAR *str) break; } } - return(ret * s); + if (!minus) { + return((long)ret); + } + else { + return((long)(0 - ret)); + } } -OEMCHAR *milstr_list(const OEMCHAR *lststr, UINT pos) { +OEMCHAR * STRCALL milstr_list(const OEMCHAR *lststr, UINT pos) { if (lststr) { while(pos) {