FCB: Rename return value lost

Two variables named 'result' were defined, at the outer level a
UBYTE to hold the function return value and the inner a COUNT to
hold returns from 'truename()'. The overall function return value
was always FCB_SUCCESS due to shadowing, however removing the
inner variable definition as a fix does not work due to sign
issues and intermixing of the variable uses, so rename the inner
variable.

Tested this patch using FDPP platform
1/ Simple rename of file with conditions for success (ok)
2/ Simple rename of file with conditions for failure - source missing (ok)
3/ Simple rename of file with conditions for failure - target exists (ok)

Fixes #16
This commit is contained in:
Andrew Bird 2018-10-18 09:37:17 +01:00 committed by Kenneth J Davis
parent e6d427834f
commit d5b5505013

View File

@ -526,7 +526,7 @@ UBYTE FcbRename(xfcb FAR * lpXfcb)
else else
{ {
dmatch Dmatch; dmatch Dmatch;
COUNT result; COUNT rc;
wAttr = (lpXfcb->xfcb_flag == 0xff ? lpXfcb->xfcb_attrib : D_ALL); wAttr = (lpXfcb->xfcb_flag == 0xff ? lpXfcb->xfcb_attrib : D_ALL);
dta = &Dmatch; dta = &Dmatch;
@ -561,9 +561,9 @@ UBYTE FcbRename(xfcb FAR * lpXfcb)
SecPathName[0] = 'A' + FcbDrive - 1; SecPathName[0] = 'A' + FcbDrive - 1;
SecPathName[1] = ':'; SecPathName[1] = ':';
strcpy(&SecPathName[2], Dmatch.dm_name); strcpy(&SecPathName[2], Dmatch.dm_name);
result = truename(SecPathName, PriPathName, 0); rc = truename(SecPathName, PriPathName, 0);
if (result < SUCCESS || (result & IS_DEVICE)) if (rc < SUCCESS || (rc & IS_DEVICE))
{ {
result = FCB_ERROR; result = FCB_ERROR;
break; break;
@ -571,8 +571,8 @@ UBYTE FcbRename(xfcb FAR * lpXfcb)
/* now to build a dos name again */ /* now to build a dos name again */
LocalFcb.fcb_drive = FcbDrive; LocalFcb.fcb_drive = FcbDrive;
FcbNameInit(&LocalFcb, loc_szBuffer, &FcbDrive); FcbNameInit(&LocalFcb, loc_szBuffer, &FcbDrive);
result = truename(loc_szBuffer, SecPathName, 0); rc = truename(loc_szBuffer, SecPathName, 0);
if (result < SUCCESS || (result & (IS_NETWORK|IS_DEVICE)) == IS_DEVICE if (rc < SUCCESS || (rc & (IS_NETWORK|IS_DEVICE)) == IS_DEVICE
|| DosRenameTrue(PriPathName, SecPathName, wAttr) != SUCCESS) || DosRenameTrue(PriPathName, SecPathName, wAttr) != SUCCESS)
{ {
result = FCB_ERROR; result = FCB_ERROR;