Hi! - bugfix: INT21/29: into FcbParseFname() was not passed options from AL.
--- Begin Message ---diff -ruNp old/kernel/fcbfns.c new/kernel/fcbfns.c --- old/kernel/fcbfns.c 2004-05-24 04:42:56.000000000 +0000 +++ new/kernel/fcbfns.c 2004-07-24 22:04:40.000000000 +0000 @@ -85,7 +85,7 @@ BYTE FAR *FatGetDrvData(UBYTE drive, UWO #define PARSE_RET_BADDRIVE 0xff #ifndef IPL -UWORD FcbParseFname(int *wTestMode, const BYTE FAR * lpFileName, fcb FAR * lpFcb) +ofs_t FcbParseFname(UBYTE *wTestMode, const char FAR * lpFileName, fcb FAR * lpFcb) { WORD wRetCodeName = FALSE, wRetCodeExt = FALSE; @@ -157,7 +157,9 @@ UWORD FcbParseFname(int *wTestMode, cons GetNameField(++lpFileName, (BYTE FAR *) lpFcb->fcb_fext, FEXT_SIZE, (BOOL *) & wRetCodeExt); - *wTestMode = (wRetCodeName | wRetCodeExt) ? PARSE_RET_WILD : PARSE_RET_NOWILD; + *wTestMode = PARSE_RET_WILD; + if (!(wRetCodeName | wRetCodeExt)) + *wTestMode = PARSE_RET_NOWILD; return FP_OFF(lpFileName); } @@ -539,13 +541,14 @@ UBYTE FcbRename(xfcb FAR * lpXfcb) else do { /* 'A:' + '.' + '\0' */ - BYTE loc_szBuffer[2 + FNAME_SIZE + 1 + FEXT_SIZE + 1]; + char loc_szBuffer[2 + FNAME_SIZE + 1 + FEXT_SIZE + 1]; fcb LocalFcb; BYTE *pToName; const BYTE FAR *pFromPattern = Dmatch.dm_name; - int i = 0; + int i; - FcbParseFname(&i, pFromPattern, &LocalFcb); + loc_szBuffer [0] = 0; /* dummy place */ + FcbParseFname((UBYTE*)loc_szBuffer, pFromPattern, &LocalFcb); /* Overlay the pattern, skipping '?' */ /* I'm cheating because this assumes that the */ /* struct alignments are on byte boundaries */ @@ -691,4 +694,3 @@ UBYTE FcbFindFirstNext(xfcb FAR * lpXfcb return FCB_SUCCESS; } #endif - diff -ruNp old/kernel/inthndlr.c new/kernel/inthndlr.c --- old/kernel/inthndlr.c 2004-07-15 02:16:58.000000000 +0000 +++ new/kernel/inthndlr.c 2004-07-24 21:26:42.000000000 +0000 @@ -669,9 +662,7 @@ dispatch: /* Parse File Name */ case 0x29: - rc = 0; - lr.SI = FcbParseFname(&rc, MK_FP(lr.DS, lr.SI), FP_ES_DI); - lr.AL = rc; + lr.SI = FcbParseFname(&lr.AL, MK_FP(lr.DS, lr.SI), FP_ES_DI); break; /* Get Date */ diff -ruNp old/kernel/proto.h new/kernel/proto.h --- old/kernel/proto.h 2004-07-08 19:16:58.000000000 +0000 +++ new/kernel/proto.h 2004-07-24 22:04:32.000000000 +0000 @@ -211,7 +211,7 @@ VOID DosCharOutput(COUNT c); VOID DosDisplayOutput(COUNT c); BYTE FAR *FatGetDrvData(UBYTE drive, UWORD * spc, UWORD * bps, UWORD * nc); -UWORD FcbParseFname(int *wTestMode, const BYTE FAR *lpFileName, fcb FAR * lpFcb); +ofs_t FcbParseFname(UBYTE *wTestMode, const char FAR * lpFileName, fcb FAR * lpFcb); const BYTE FAR *ParseSkipWh(const BYTE FAR * lpFileName); BOOL TestCmnSeps(BYTE FAR * lpFileName); BOOL TestFieldSeps(BYTE FAR * lpFileName);
--- End Message ---
