home *** CD-ROM | disk | FTP | other *** search
- /* File PARSEDIR.C BDS-C Ver 1.1 04May85 */
- /* v 1.1 fixed error check on mixed relative/real-time */
- #include <bdscio.h>
- #include "make.h"
-
- /*
- * Get a file's creation date.
- */
- int getdate(f)
- FILENODE *f;
- {
- if(f->fdate != NULL || filedate(f) != -1) return;
-
- if(f->fflag & ROOTP == 0)
- {
- printf("Can't get date for file '%s'\n", f->fname);
- f->fdate = endoftime;
- } else f->fdate = bigbang;
- return;
- }
-
- /*
- * filedate - return file's creation or modified date
- * (CP/M with DATSTAMP only.)
- * Returns -1 if file cannot be found, 0 if successful
- */
- filedate(fnd)
- FILENODE *fnd;
- {
- DATE datetime;
- DATE *adate();
-
- if(osdate(fnd->fname, &datetime) == -1) return -1;
- fnd->fdate = adate(&datetime);
- }
-
-
- /*
- * laterdt - compare two dates.
- * Return -1, 0 or 1 if date1 < date2, date1 == date2, or date1 > date2
- */
- laterdt(date1, date2)
- DATE *date1;
- DATE *date2;
- {
- int i;
- char hi1,hi2;
- unsigned *pu,datval1,datval2;
- /* This little kludgery is because DATSTAMP my have either real-time
- clock running or a counter clock running.
- */
- hi1 = (date1->d_s[3]) & 0x80;
- hi2 = (date2->d_s[3]) & 0x80;
- if (hi1 ^ hi2) {/* Possible trouble, looks like two
- different type of dates. */
- pu = &date1->d_s[3];
- datval1 = *pu;
- pu = &date2->d_s[3];
- datval2 = *pu;
-
- /* unless one date is 0000 (bigbang) or FFFF (endoftime)
- , its trouble */
- if ( ( hi1 && !(datval1 == 0xffff || datval2 == 0x0000) )
- || ( hi2 && !(datval2 == 0xffff || datval1 == 0x0000) ) ) { printf("\7\nTwo different type of clock readings detected...\Aborting.\n");
- exit();
- }
- }
-
- for (i=0; i<5; i++) {
- if(date1->d_s[i] > date2->d_s[i]) return 1;
- if(date1->d_s[i] < date2->d_s[i]) return -1;
- }
- return 0; /* Say they are equal. */
- }
-
-
- /*
- * adate - allocate a date with the given time
- */
- DATE *adate(time)
- DATE *time;
- {
- DATE *d;
- int i;
-
- if((d = /*(DATE)*/alloc(sizeof *d)) == NULL) allerr();
- for (i=0; i<5; i++) d->d_s[i]=time->d_s[i];
- return d;
-
- }
- real-time
- clock running or a counter clock running.
- */
- hi1 = (date1->d_s[3]) & 0x80;
- hi2 = (date2->d_s[3]