mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 18:04:07 +00:00
Upload
Digital Research
This commit is contained in:
79
CONTRIBUTIONS/cpm-handbook/cpmsrc/DATE.C
Normal file
79
CONTRIBUTIONS/cpm-handbook/cpmsrc/DATE.C
Normal file
@@ -0,0 +1,79 @@
|
||||
#define VN "\nDATE Vn 1.0 02/18/83"
|
||||
/* This utility accepts the current date from the command tail
|
||||
validates it, and set the internal system date in the BIOS.
|
||||
Alternatively, it can be requested just to display the current
|
||||
system date. */
|
||||
|
||||
#include <LIBRARY.H>
|
||||
|
||||
char *date; /* pointer to the date in the config. block */
|
||||
char *date_flag; /* pointer to date set flag */
|
||||
int mm,dd,yy; /* variables to hold month, day, year */
|
||||
int mcount; /* match count of numeric values entered */
|
||||
int count; /* count used to add leading 0's to date */
|
||||
|
||||
main(argc,argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
printf(VN); /* display signon message */
|
||||
date = get_cba(CB_DATE); /* set pointer to date */
|
||||
date_flag = get_cba(CB_DTFLAGS); /* set pointer to "date set" flag */
|
||||
|
||||
if (argc != 2) /* check if help requested (or needed) */
|
||||
show_use(); /* display correct usage and exit */
|
||||
|
||||
if (usstrcmp("SHOW",argv[1])) /* check if not SHOW option */
|
||||
{
|
||||
/* convert specified time into month, day, year */
|
||||
mcount = sscanf(argv[1],"%d/%d/%d",&mm,&dd,&yy);
|
||||
if (mcount != 3) /* input not numeric */
|
||||
show_use(); /* display correct usage and exit */
|
||||
|
||||
/* NOTE : The following validity checking is VERY
|
||||
simplistic - this could be expanded to accomodate
|
||||
more context-sensitive checking, days in the month,
|
||||
leap years, etc. */
|
||||
if (mm > 12 || mm < 1) /* check valid month, day, year */
|
||||
{
|
||||
printf("\nMonth = %d is illegal.",mm);
|
||||
show_use(); /* display correct usage and exit */
|
||||
}
|
||||
if (dd > 31 || dd < 1)
|
||||
{
|
||||
printf("\nDay = %d is illegal.",dd);
|
||||
show_use(); /* display correct usage and exit */
|
||||
}
|
||||
if (yy > 90 || yy < 83) /* <=== NOTE ! */
|
||||
{
|
||||
printf("\nYear = %d is illegal.",yy);
|
||||
show_use(); /* display correct usage and exit */
|
||||
}
|
||||
|
||||
/* convert integers back into a formatted string */
|
||||
sprintf(date,"%2d/%2d/%2d",mm,dd,yy);
|
||||
date[8] = 0x0A; /* terminate with line feed */
|
||||
date[9] = '\0'; /* new string terminator */
|
||||
|
||||
/* change " 1/ 2/ 3" into "01/02/03" */
|
||||
for (count = 0; count < 7; count+=3)
|
||||
{
|
||||
if (date[count] == ' ')
|
||||
date[count] = '0';
|
||||
}
|
||||
|
||||
/* turn flag on to indicate that the user has set the date */
|
||||
*date_flag |= DATE_SET;
|
||||
}
|
||||
printf("\n\tCurrent Date is %s",date);
|
||||
}
|
||||
|
||||
show_use() /* display correct usage and exit */
|
||||
{
|
||||
printf("\nDATE sets the system date. Usage is :");
|
||||
printf("\n\tDATE mm/dd/yy");
|
||||
printf("\n\tDATE SHOW (to display current date)\n");
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user