/* mount.ccc -- Misosys C program to switch emulated floppies on xtrs */ /* Copyright (c) 1998, Timothy Mann */ /* This software may be copied, modified, and used for any purpose * without fee, provided that (1) the above copyright notice is * retained, and (2) modified versions are clearly marked as having * been modified, with the modifier's name and the date included. */ /* Last modified on Tue Dec 15 14:54:58 PST 1998 by mann */ #option redirect 0 #include "xtrsemt.h" #include "xtrsemt.ccc" /* could use separate compilation instead */ usage() { fprintf(stderr, "usage: mount [-l] file.dsk unit#\n"); exit(1); } #define DDIRSIZE 256 #define DNAMESIZE 512 #define FNAMESIZE 256 #define CMDSIZE 512 #define ERRBUFSIZE 512 int main(argc, argv) int argc; char **argv; { char ddir[DDIRSIZE]; char dname[DNAMESIZE], fname[FNAMESIZE], cmd[CMDSIZE]; char errbuf[ERRBUFSIZE]; char model[4]; int hl, bc, de, ret, lower, i; char *retp, *p, *q; if (argc < 2) { usage(); } i = 1; if (argv[i][0] == '-') { if (tolower(argv[i][1]) != 'l') { usage(); } i++; lower = 1; } else { lower = 0; } if (argc - i != 2 || !isdigit(argv[i+1][0])) { usage(); } retp = emt_gtddir(ddir, DDIRSIZE); if (retp == NULL) { emt_strerror(errno, errbuf, ERRBUFSIZE); fprintf(stderr, "emt_getddir: %s\n", errbuf); exit(1); } emt_4misc(EMT_MISC_QUERY_MODEL, &hl, &bc, &de); if (hl == 5) { strcpy(model, "4p"); } else { sprintf(model, "%d", hl); } sprintf(dname, "%s/disk%s-%s", ddir, model, argv[i+1]); sprintf(cmd, "rm -f %s", dname); /*printf("$ %s\n", cmd);*/ ret = emt_system(cmd); if (ret != 0) { emt_strerror(errno, errbuf, ERRBUFSIZE); fprintf(stderr, "emt_system: %s\n", errbuf); exit(1); } p = fname; q = argv[i]; if (lower) { while (*q) { if (*q == '[' && *(q+1)) { q++; *p++ = *q++; } else if (isalpha(*q)) { *p++ = tolower(*q++); } else { *p++ = *q++; } } } else { while (*q) *p++ = *q++; } *p = '\000'; sprintf(cmd, "ln -s %s %s", fname, dname); /*printf("$ %s\n", cmd);*/ ret = emt_system(cmd); if (ret != 0) { emt_strerror(errno, errbuf, ERRBUFSIZE); fprintf(stderr, "emt_system: %s\n", errbuf); exit(1); } emt_misc(EMT_MISC_DISK_CHANGE); exit(0); }