home *** CD-ROM | disk | FTP | other *** search
- /*
- * PROMPT.C - prompt handling.
- *
- *
- *
- * Comments:
- *
- * 14/01/95 (Tim Normal) ---------------------------------------------------
- * started.
- *
- * 08/08/95 (Matt Rains) ---------------------------------------------------
- * i have cleaned up the source code. changes now bring this source into
- * guidelines for recommended programming practice.
- *
- * 01/06/96 (Tim Norman) --------------------------------------------
- * added day of the week printing (oops, forgot about that!)
- *
- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <dos.h>
- #include <ctype.h>
- #include <dir.h>
- #include <string.h>
-
- static char days[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
-
- /*
- *
- * print the command-line prompt
- *
- */
- void printprompt(void)
- {
- struct time t;
- struct dosdate_t d;
-
- static char default_pr[] = "$P$G";
- char *pr;
- char direc[128];
- char temp[128];
-
- pr = getenv("PROMPT"); /* get PROMPT environment var. */
-
- if(!pr || !pr[0]) /* if PROMPT hasn't been set */
- {
- pr = default_pr;
- }
-
- while(*pr)
- {
- if(*pr != '$')
- {
- putchar (*pr);
- }
- else
- {
- pr++;
-
- switch(toupper(*pr))
- {
- case 'Q' :
- {
- putchar ('=');
- break;
- }
- case '$' :
- {
- putchar('$');
- break;
- }
- case 'T' :
- {
- gettime(&t);
- printf("%2d:%02d:%02d.%02d", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
- break;
- }
- case 'D' :
- {
- _dos_getdate (&d);
- printf("%s %02d-%02d-%04d", days[d.dayofweek], d.month,
- d.day, d.year);
- break;
- }
- case 'P' :
- {
- direc[0] = getdisk() + 'A';
- direc[1] = ':';
- getcurdir(0, temp);
-
- if(temp[0] == '\\')
- {
- strcpy(&direc[2], temp);
- }
- else
- {
- direc[2] = '\\';
- strcpy(&direc[3], temp);
- }
-
- printf("%s", direc);
- break;
- }
- case 'V' :
- {
- printf("FreeDOS Alpha");
- break;
- }
- case 'N' :
- {
- printf("%c", getdisk () + 'A');
- break;
- }
- case 'G' :
- {
- putchar('>');
- break;
- }
- case 'L' :
- {
- putchar('<');
- break;
- }
- case 'B' :
- {
- putchar('|');
- break;
- }
- case '_' :
- {
- putchar('\n');
- break;
- }
- case 'E' :
- {
- putchar(27);
- break;
- }
- case 'H' :
- {
- putchar(8);
- break;
- }
- }
- }
- pr++;
- }
-
- return;
- }
-