From Lucho: converted TM_ENCODE into a function. Various cleanups in fatfs.c

git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@942 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
Bart Oldeman 2004-05-23 15:00:37 +00:00
parent 42c0af3aee
commit de5bed6d28
2 changed files with 13 additions and 28 deletions

View File

@ -39,14 +39,6 @@ static BYTE *time_hRcsId =
#endif
#endif
/* FAT Time notation in the form of hhhh hmmm mmmd dddd */
#define TM_HOUR(t) (((t)>>11)&0x1f)
#define TM_MIN(t) (((t)>>5)&0x3f)
#define TM_DEC(t) ((t)&0x1f)
#define TM_ENCODE(h,m,d) ((((h)&0x1f)<<11)|(((m)&0x3f)<<5)|((d)&0x1f))
typedef UWORD time;
struct dostime

View File

@ -58,6 +58,12 @@ CLUSTER first_fat(f_node_ptr);
COUNT map_cluster(f_node_ptr, COUNT);
STATIC VOID shrink_file(f_node_ptr fnp);
/* FAT time notation in the form of hhhh hmmm mmmd dddd (d = double second) */
STATIC time time_encode(struct dostime *t)
{
return (t->hour << 11) | (t->minute << 5) | (t->second >> 1);
}
#ifdef WITHFAT32
CLUSTER getdstart(struct dpb FAR *dpbp, struct dirent *dentry)
{
@ -68,12 +74,8 @@ CLUSTER getdstart(struct dpb FAR *dpbp, struct dirent *dentry)
void setdstart(struct dpb FAR *dpbp, struct dirent *dentry, CLUSTER value)
{
if (!ISFAT32(dpbp))
{
dentry->dir_start = (UWORD)value;
return;
}
dentry->dir_start = (UWORD)value;
if (ISFAT32(dpbp))
dentry->dir_start_high = (UWORD)(value >> 16);
}
@ -124,8 +126,7 @@ STATIC void init_direntry(struct dirent *dentry, unsigned attrib,
dentry->dir_crtimems = dt.hundredth;
if (dt.second & 1)
dentry->dir_crtimems += 100;
dentry->dir_time = dentry->dir_crtime =
TM_ENCODE(dt.hour, dt.minute, dt.second >> 1);
dentry->dir_time = dentry->dir_crtime = time_encode(&dt);
dentry->dir_date = dentry->dir_crdate = dentry->dir_accdate = dos_getdate();
}
@ -258,16 +259,9 @@ long dos_open(char *path, unsigned flags, unsigned attrib)
BOOL fcmp_wild(const char * s1, const char * s2, unsigned n)
{
while (n--)
{
if (*s1 == '?')
{
++s1, ++s2;
continue;
}
if (*s1++ != *s2++)
for ( ; n--; ++s1, ++s2)
if (*s1 != '?' && *s1 != *s2)
return FALSE;
}
return TRUE;
}
@ -882,7 +876,7 @@ time dos_gettime(void)
/* First - get the system time set by either the user */
/* on start-up or the CMOS clock */
DosGetTime(&dt);
return TM_ENCODE(dt.hour, dt.minute, dt.second >> 1);
return time_encode(&dt);
}
/* */
@ -1183,8 +1177,7 @@ COUNT dos_mkdir(BYTE * dir)
return DE_BLKINVLD;
}
fmemset(bp->b_buffer, 0, BUFFERSIZE);
bp->b_flag |= BFR_DIRTY | BFR_VALID;
bp->b_flag |= BFR_UNCACHE; /* need not be cached */
bp->b_flag |= BFR_DIRTY | BFR_VALID | BFR_UNCACHE; /* need not be cached */
}
/* flush the drive buffers so that all info is written */