mirror of
https://github.com/FDOS/kernel.git
synced 2025-07-23 22:04:33 +02:00
Eliminate dos_getftime, dos_getfsize, and dos_getfattr_fd, because we can
now get these properties directly from the SFT. git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@1399 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
parent
e63e5dd125
commit
f9f2fe447d
@ -301,8 +301,6 @@ long DosRWSft(int sft_idx, size_t n, void FAR * bp, int mode)
|
|||||||
long XferCount = rwblock(s->sft_status, bp, n, mode);
|
long XferCount = rwblock(s->sft_status, bp, n, mode);
|
||||||
if (XferCount < 0)
|
if (XferCount < 0)
|
||||||
return XferCount;
|
return XferCount;
|
||||||
if (mode == XFR_WRITE)
|
|
||||||
s->sft_size = dos_getfsize(s->sft_status);
|
|
||||||
s->sft_posit += XferCount;
|
s->sft_posit += XferCount;
|
||||||
return XferCount;
|
return XferCount;
|
||||||
}
|
}
|
||||||
@ -604,7 +602,6 @@ long DosOpenSft(char FAR * fname, unsigned flags, unsigned attrib)
|
|||||||
int status = (int)(result >> 16);
|
int status = (int)(result >> 16);
|
||||||
if (status == S_OPENED)
|
if (status == S_OPENED)
|
||||||
{
|
{
|
||||||
sftp->sft_attrib = dos_getfattr_fd((COUNT)result);
|
|
||||||
/* Check permissions. -- JPP
|
/* Check permissions. -- JPP
|
||||||
(do not allow to open volume labels/directories) */
|
(do not allow to open volume labels/directories) */
|
||||||
if (sftp->sft_attrib & (D_DIR | D_VOLID))
|
if (sftp->sft_attrib & (D_DIR | D_VOLID))
|
||||||
@ -613,14 +610,10 @@ long DosOpenSft(char FAR * fname, unsigned flags, unsigned attrib)
|
|||||||
sftp->sft_count--;
|
sftp->sft_count--;
|
||||||
return DE_ACCESS;
|
return DE_ACCESS;
|
||||||
}
|
}
|
||||||
sftp->sft_size = dos_getfsize((COUNT)result);
|
|
||||||
}
|
}
|
||||||
sftp->sft_status = (COUNT)result;
|
sftp->sft_status = (COUNT)result;
|
||||||
sftp->sft_flags = PriPathName[0] - 'A';
|
sftp->sft_flags = PriPathName[0] - 'A';
|
||||||
DosGetFile(PriPathName, sftp->sft_name);
|
DosGetFile(PriPathName, sftp->sft_name);
|
||||||
dos_getftime(sftp->sft_status,
|
|
||||||
(date FAR *) & sftp->sft_date,
|
|
||||||
(time FAR *) & sftp->sft_time);
|
|
||||||
return sft_idx | ((long)status << 16);
|
return sft_idx | ((long)status << 16);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1150,16 +1143,9 @@ COUNT DosGetFtime(COUNT hndl, date * dp, time * tp)
|
|||||||
if (FP_OFF(s = get_sft(hndl)) == (size_t) - 1)
|
if (FP_OFF(s = get_sft(hndl)) == (size_t) - 1)
|
||||||
return DE_INVLDHNDL;
|
return DE_INVLDHNDL;
|
||||||
|
|
||||||
/* If SFT entry refers to a device, return the date and time of opening */
|
*dp = s->sft_date;
|
||||||
if (s->sft_flags & (SFT_FDEVICE | SFT_FSHARED))
|
*tp = s->sft_time;
|
||||||
{
|
return SUCCESS;
|
||||||
*dp = s->sft_date;
|
|
||||||
*tp = s->sft_time;
|
|
||||||
return SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* call file system handler */
|
|
||||||
return dos_getftime(s->sft_status, dp, tp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
COUNT DosSetFtimeSft(int sft_idx, date dp, time tp)
|
COUNT DosSetFtimeSft(int sft_idx, date dp, time tp)
|
||||||
|
@ -842,30 +842,6 @@ time dos_gettime(void)
|
|||||||
return time_encode(&dt);
|
return time_encode(&dt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
|
||||||
/* dos_getftime for the file time */
|
|
||||||
/* */
|
|
||||||
COUNT dos_getftime(COUNT fd, date FAR * dp, time FAR * tp)
|
|
||||||
{
|
|
||||||
f_node_ptr fnp;
|
|
||||||
|
|
||||||
/* Translate the fd into an fnode pointer, since all internal */
|
|
||||||
/* operations are achieved through fnodes. */
|
|
||||||
fnp = xlt_fd(fd);
|
|
||||||
|
|
||||||
/* If the fd was invalid because it was out of range or the */
|
|
||||||
/* requested file was not open, tell the caller and exit */
|
|
||||||
/* note: an invalid fd is indicated by a 0 return */
|
|
||||||
if (fnp == (f_node_ptr) 0)
|
|
||||||
return DE_INVLDHNDL;
|
|
||||||
|
|
||||||
/* Get the date and time from the fnode and return */
|
|
||||||
*dp = fnp->f_dir.dir_date;
|
|
||||||
*tp = fnp->f_dir.dir_time;
|
|
||||||
|
|
||||||
return SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
/* dos_setftime for the file time */
|
/* dos_setftime for the file time */
|
||||||
/* */
|
/* */
|
||||||
@ -893,27 +869,6 @@ COUNT dos_setftime(COUNT fd, date dp, time tp)
|
|||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* */
|
|
||||||
/* dos_getfsize for the file time */
|
|
||||||
/* */
|
|
||||||
ULONG dos_getfsize(COUNT fd)
|
|
||||||
{
|
|
||||||
f_node_ptr fnp;
|
|
||||||
|
|
||||||
/* Translate the fd into an fnode pointer, since all internal */
|
|
||||||
/* operations are achieved through fnodes. */
|
|
||||||
fnp = xlt_fd(fd);
|
|
||||||
|
|
||||||
/* If the fd was invalid because it was out of range or the */
|
|
||||||
/* requested file was not open, tell the caller and exit */
|
|
||||||
/* note: an invalid fd is indicated by a 0 return */
|
|
||||||
if (fnp == (f_node_ptr) 0)
|
|
||||||
return (ULONG)-1l;
|
|
||||||
|
|
||||||
/* Return the file size */
|
|
||||||
return fnp->f_dir.dir_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
/* dos_setfsize for the file time */
|
/* dos_setfsize for the file time */
|
||||||
/* */
|
/* */
|
||||||
@ -1865,19 +1820,6 @@ int dos_cd(char * PathName)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef IPL
|
#ifndef IPL
|
||||||
COUNT dos_getfattr_fd(COUNT fd)
|
|
||||||
{
|
|
||||||
f_node_ptr fnp = xlt_fd(fd);
|
|
||||||
|
|
||||||
/* If the fd was invalid because it was out of range or the */
|
|
||||||
/* requested file was not open, tell the caller and exit */
|
|
||||||
/* note: an invalid fd is indicated by a 0 return */
|
|
||||||
if (fnp == (f_node_ptr) 0)
|
|
||||||
return DE_TOOMANY;
|
|
||||||
|
|
||||||
return fnp->f_dir.dir_attrib;
|
|
||||||
}
|
|
||||||
|
|
||||||
COUNT dos_getfattr(BYTE * name)
|
COUNT dos_getfattr(BYTE * name)
|
||||||
{
|
{
|
||||||
f_node_ptr fnp;
|
f_node_ptr fnp;
|
||||||
|
@ -161,9 +161,7 @@ COUNT dos_rmdir(BYTE * path);
|
|||||||
COUNT dos_rename(BYTE * path1, BYTE * path2, int attrib);
|
COUNT dos_rename(BYTE * path1, BYTE * path2, int attrib);
|
||||||
date dos_getdate(void);
|
date dos_getdate(void);
|
||||||
time dos_gettime(void);
|
time dos_gettime(void);
|
||||||
COUNT dos_getftime(COUNT fd, date FAR * dp, time FAR * tp);
|
|
||||||
COUNT dos_setftime(COUNT fd, date dp, time tp);
|
COUNT dos_setftime(COUNT fd, date dp, time tp);
|
||||||
ULONG dos_getfsize(COUNT fd);
|
|
||||||
BOOL dos_setfsize(COUNT fd, LONG size);
|
BOOL dos_setfsize(COUNT fd, LONG size);
|
||||||
COUNT dos_mkdir(BYTE * dir);
|
COUNT dos_mkdir(BYTE * dir);
|
||||||
BOOL last_link(f_node_ptr fnp);
|
BOOL last_link(f_node_ptr fnp);
|
||||||
@ -180,7 +178,6 @@ VOID trim_path(BYTE FAR * s);
|
|||||||
|
|
||||||
int dos_cd(char * PathName);
|
int dos_cd(char * PathName);
|
||||||
|
|
||||||
COUNT dos_getfattr_fd(COUNT fd);
|
|
||||||
COUNT dos_getfattr(BYTE * name);
|
COUNT dos_getfattr(BYTE * name);
|
||||||
COUNT dos_setfattr(BYTE * name, UWORD attrp);
|
COUNT dos_setfattr(BYTE * name, UWORD attrp);
|
||||||
COUNT media_check(REG struct dpb FAR * dpbp);
|
COUNT media_check(REG struct dpb FAR * dpbp);
|
||||||
|
@ -89,14 +89,7 @@ ULONG SftGetFsize(int sft_idx)
|
|||||||
if (FP_OFF(s) == (size_t) -1)
|
if (FP_OFF(s) == (size_t) -1)
|
||||||
return DE_INVLDHNDL;
|
return DE_INVLDHNDL;
|
||||||
|
|
||||||
/* If SFT entry refers to a device, return the date and time of opening */
|
return s->sft_size;
|
||||||
if (s->sft_flags & (SFT_FDEVICE | SFT_FSHARED))
|
|
||||||
{
|
|
||||||
return s->sft_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* call file system handler */
|
|
||||||
return dos_getfsize(s->sft_status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC COUNT ChildEnv(exec_blk * exp, UWORD * pChildEnvSeg, char far * pathname)
|
STATIC COUNT ChildEnv(exec_blk * exp, UWORD * pChildEnvSeg, char far * pathname)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user