/* * 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 #include #include #include #include #include #include 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; }