Introduce get_cds1 to merge common code that checks for 0=default_drive,1=A,etc.

Make load_transfer() static.


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1414 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
Bart Oldeman 2009-06-01 14:55:11 +00:00
parent eb318177c1
commit b10d86bcaa
3 changed files with 15 additions and 18 deletions

View File

@ -113,13 +113,21 @@ struct cds FAR *get_cds(unsigned drive)
return cdsp;
}
/* same, but on input drv is 0 for default or 1=A, 2=B, etc. */
struct cds FAR *get_cds1(unsigned drv)
{
if (drv-- == 0) /* get default drive or convert to 0 = A:, 1 = B:, ... */
drv = default_drive;
return get_cds(drv);
}
#ifdef WITHFAT32
struct dpb FAR * GetDriveDPB(UBYTE drive, COUNT * rc)
{
struct dpb FAR *dpb;
struct cds FAR *cdsp;
cdsp = get_cds(drive == 0 ? default_drive : drive - 1);
cdsp = get_cds1(drive);
if (cdsp == NULL)
{
@ -736,12 +744,9 @@ UWORD DosGetFree(UBYTE drive, UWORD * navc, UWORD * bps, UWORD * nc)
COUNT rg[4];
UWORD spc;
/* next - "log" in the drive */
drive = (drive == 0 ? default_drive : drive - 1);
/* first check for valid drive */
spc = -1;
cdsp = get_cds(drive);
cdsp = get_cds1(drive);
if (cdsp == NULL)
return spc;
@ -897,7 +902,7 @@ COUNT DosGetCuDir(UBYTE drive, BYTE FAR * s)
/* next - "log" in the drive */
/* first check for valid drive */
cdsp = get_cds(drive == 0 ? default_drive : drive - 1);
cdsp = get_cds1(drive);
if (cdsp == NULL)
return DE_INVLDDRV;

View File

@ -118,6 +118,7 @@ int idx_to_sft_(int SftIndex);
sft FAR *idx_to_sft(int SftIndex);
int get_sft_idx(UCOUNT hndl);
struct cds FAR *get_cds(unsigned dsk);
struct cds FAR *get_cds1(unsigned dsk);
COUNT DosTruename(const char FAR * src, char FAR * dest);
/* dosidle.asm */

View File

@ -233,15 +233,6 @@ void child_psp(seg para, seg cur_psp, int psize)
p->ps_cmd.ctBuffer[0] = 0xd; /* command tail */
}
STATIC UBYTE chkdrv(unsigned drive) /* from FCB: 0 = default, 1 = A:, ... */
{
if (drive)
drive--; /* 0 = A:, 1 = B:, ... */
else
drive = default_drive;
return get_cds(drive) ? 0 : 0xff; /* return 0 if drive is valid, else 0xff */
}
STATIC UWORD patchPSP(UWORD pspseg, UWORD envseg, exec_blk FAR * exb,
BYTE FAR * fnam)
{
@ -295,11 +286,11 @@ set_name:
pspmcb->m_name[i] = '\0';
/* return value: AX value to be passed based on FCB values */
return chkdrv(psp->ps_fcb1.fcb_drive) |
(chkdrv(psp->ps_fcb2.fcb_drive) << 8);
return (get_cds1(psp->ps_fcb1.fcb_drive) ? 0 : 0xff) |
(get_cds1(psp->ps_fcb2.fcb_drive) ? 0 : 0xff00);
}
int load_transfer(UWORD ds, exec_blk *exp, UWORD fcbcode, COUNT mode)
STATIC int load_transfer(UWORD ds, exec_blk *exp, UWORD fcbcode, COUNT mode)
{
psp FAR *p = MK_FP(ds, 0);
psp FAR *q = MK_FP(cu_psp, 0);