--- np2/generic/hostdrvs.c 2005/02/07 14:46:10 1.12 +++ np2/generic/hostdrvs.c 2011/01/15 18:04:43 1.17 @@ -2,8 +2,8 @@ #if defined(SUPPORT_HOSTDRV) -#if defined(OSLANG_EUC) -#include "codecnv.h" +#if defined(OSLANG_EUC) || defined(OSLANG_UTF8) || defined(OSLANG_UCS2) +#include "oemtext.h" #endif #include "dosio.h" #include "pccore.h" @@ -21,19 +21,19 @@ static const UINT8 dospathchr[] = { 0x01, 0x00, // gfedcba` onmlkjih 0x00, 0x40}; // wvutsrqp ~}|{zyx -static void rcnvfcb(char *dst, UINT dlen, char *src, UINT slen) { + +static void rcnvfcb(char *dst, UINT dlen, const char *src) { REG8 c; - while((slen) && (dlen)) { - slen--; + while(dlen) { c = (UINT8)*src++; if (c == 0) { break; } -#if defined(OSLANG_SJIS) || defined(OSLANG_EUC) || defined(OSLANG_UTF8) +#if defined(OSLANG_SJIS) || defined(OSLANG_EUC) || defined(OSLANG_UTF8) || defined(OSLANG_UCS2) if ((((c ^ 0x20) - 0xa1) & 0xff) < 0x3c) { - if ((!slen) || (src[0] == '\0')) { + if (src[0] == '\0') { break; } if (dlen < 2) { @@ -75,28 +75,32 @@ static void rcnvfcb(char *dst, UINT dlen } } -static BOOL realname2fcb(char *fcbname, FLINFO *fli) { +static BRESULT realname2fcb(char *fcbname, const FLINFO *fli) { -#if defined(OSLANG_EUC) || defined(OSLANG_UTF8) + OEMCHAR *ext; +#if defined(OSLANG_EUC) || defined(OSLANG_UTF8) || defined(OSLANG_UCS2) char sjis[MAX_PATH]; #endif - char *realname; - char *ext; + OEMCHAR filename[MAX_PATH]; + + FillMemory(fcbname, 11, ' '); -#if defined(OSLANG_EUC) - codecnv_euc2sjis(sjis, sizeof(sjis), fli->path, NELEMENTS(fli->path)); - realname = sjis; -#elif defined(OSLANG_UTF8) - oemtext_oem2sjis(sjis, sizeof(sjis), fli->path, NELEMENTS(fli->path)); - realname = sjis; + ext = file_getext(fli->path); +#if defined(OSLANG_EUC) || defined(OSLANG_UTF8) || defined(OSLANG_UCS2) + oemtext_oemtosjis(sjis, sizeof(sjis), ext, (UINT)-1); + rcnvfcb(fcbname+8, 3, sjis); #else - realname = fli->path; + rcnvfcb(fcbname+8, 3, ext); +#endif + + file_cpyname(filename, fli->path, NELEMENTS(filename)); + file_cutext(filename); +#if defined(OSLANG_EUC) || defined(OSLANG_UTF8) || defined(OSLANG_UCS2) + oemtext_oemtosjis(sjis, sizeof(sjis), filename, (UINT)-1); + rcnvfcb(fcbname+0, 8, sjis); +#else + rcnvfcb(fcbname+0, 8, filename); #endif - FillMemory(fcbname, 11, ' '); - // ToDo: SJISに変換済みなのに OEM依存してる - ext = file_getext(realname); - rcnvfcb(fcbname+0, 8, realname, ext - realname); - rcnvfcb(fcbname+8, 3, ext, (UINT)-1); return(SUCCESS); } @@ -117,7 +121,7 @@ static BOOL hddseadir(void *vpItem, void return(FALSE); } -LISTARRAY hostdrvs_getpathlist(const OEMCHAR *realpath) { +LISTARRAY hostdrvs_getpathlist(const OEMCHAR *path) { FLISTH flh; FLINFO fli; @@ -125,7 +129,7 @@ LISTARRAY hostdrvs_getpathlist(const OEM char fcbname[11]; HDRVLST hdd; - flh = file_list1st(realpath, &fli); + flh = file_list1st(path, &fli); if (flh == FLISTH_INVALID) { goto hdgpl_err1; } @@ -303,7 +307,7 @@ BOOL hostdrvs_newrealpath(HDRVPATH *hdp, char dosname[16]; UINT i; char *p; -#if defined(OSLANG_EUC) || defined(OSLANG_UTF8) +#if defined(OSLANG_EUC) || defined(OSLANG_UTF8) || defined(OSLANG_UCS2) OEMCHAR oemname[64]; #endif @@ -334,11 +338,8 @@ BOOL hostdrvs_newrealpath(HDRVPATH *hdp, } *p = '\0'; // ここで SJIS->OEMコードに未変換! -#if defined(OSLANG_EUC) - codecnv_sjis2euc(oemname, NELEMENTS(oemname), dosname, (UINT)-1); - file_catname(path, oemname, NELEMENTS(path)); -#elif defined(OSLANG_UTF8) - oemtext_sjis2oem(oemname, NELEMENTS(oemname), dosname, (UINT)-1); +#if defined(OSLANG_EUC) || defined(OSLANG_UTF8) || defined(OSLANG_UCS2) + oemtext_sjistooem(oemname, NELEMENTS(oemname), dosname, (UINT)-1); file_catname(path, oemname, NELEMENTS(path)); #else file_catname(path, dosname, NELEMENTS(path));