#include #include #include FILE *fp; int main(int argc, char *argv[]) { int i, n; char c, buffer[10][MAXPATH], *p; strcpy(buffer[0], argv[0]); strcpy(strrchr(buffer[0], '.'), ".DIR"); if ((fp = fopen(buffer[0], "r")) == NULL) { printf("Can't open %s\n", buffer[0]); return 1; } for(n = 0; n < 10; n++) { if (fgets(buffer[n], MAXPATH, fp) == NULL) break; if ((p = strchr(buffer[n], '\n')) == NULL) { puts("Path too long."); return 1; } *p = '\0'; } fclose(fp); if (argc == 2) { i = argv[1][0] - '0'; if (i >= 0 && i < n) { if (chdir(buffer[i])) { printf("Unable to change directory. %s\n", buffer[i]); return 1; } c = buffer[i][0]; if (c >= 'a' && c <= 'z') c -= 0x20; if (buffer[i][1] == ':' && c >= 'A' && c <= 'Z') { if (_chdrive(c - 'A' + 1)) { printf("Unable to change drive. %s\n", buffer[i]); return 1; } } return 0; } } for(i = 0; i < n; i++) printf("%2d : %s\n", i, buffer[i]); return 0; }