home *** CD-ROM | disk | FTP | other *** search
- /*
- * FIND is a progam was writen to help maintain files on my hard disc.
- * This program should run on any CP/M 2.2 or higher revision machine.
- * It was developed using CP/M 3.0 and the AZTEC C compiler vers. 1.06B.
- *
- * To compile:
- * cc -dTINY find.c
- * as find.asm
- * ln find.o t.lib c.lib
- *
- * As this program was a quick ditch effort, I welcome any and all
- * modifications that anyone makes to it. For example, anbiguous(* , ?)
- * filenames are not extracted from the DMA address after the bdos
- * call to "search filename". The program also does not allow the
- * user to search specific user areas, it assumes a scan of user 0
- * thru user 15.
- *
- * Have fun with it, but this program is not for resale in any form.
- *
- * Please send any ideas/changes/reactions to me in mail. Do not post.
- *
- * Jeff Gibson UUCP: {cepu,ihnp4,noao,uiucdcs}!bradley!jmg
- * Bradley University ARPA: cepu!bradley!jmg@UCLA-LOCUS
- * Peoria, IL 61625 PH: (309) 692-9069
- *
- */
- #include "stdio.h"
-
- int drive_range[17],
- DRIVES;
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- char fn[36],
- drive_name;
-
- int i,
- old_user,
- new_user,
- found,
- drive;
-
-
- if (--argc < 1)
- {
- printf("\nusage: find -drives abcdefghijklmnop filename\n");
- bios(0);
- }
-
- DRIVES = found = FALSE;
-
- *++argv;
- if (*argv[0] == '-')
- {
- check(*argv);
- com_line(*++argv);
- }
- else
- {
- *--argv;
- drive_range[0] = 0;
- drive_range[1] = -1;
- }
- fcbinit(*++argv, &fn);
- old_user = getusr();
- i = 0;
- putchar('\n');
- while (drive_range[i] != -1)
- {
- fn[0] = drive_range[i];
- for (new_user=0; new_user < 16; new_user++)
- {
- if (bdos(11) == 1) /* check for key strike */
- if (getchar() == 0x03) /* abort on ^C */
- bios(0);
- setusr(new_user);
- if (bdos(17, fn) != 0xff)
- {
- found = TRUE;
- if (drive_range[i] == 0)
- drive_name = (char)(drive_range[i] + 65);
- else
- drive_name = (char)(drive_range[i] + 64);
- printf("%s: USER %d DRIVE %c\n", *argv, new_user, drive_name);
- }
- }
- i++;
- }
- if (!found)
- printf("%s: was not found\n", *argv);
- setusr(old_user);
- bios(0);
- }
-
- check(argv)
- char argv[];
- {
- if (tolower(argv[1]) == 'd')
- DRIVES = TRUE;
- else
- {
- printf ("\nERROR in argument\n");
- bios(0);
- }
- }
-
-
- com_line(line)
- char line[];
- {
- int i, j;
-
- if (DRIVES)
- {
- i = 0;
- j = 0;
- while (tolower(line[i]) >= 'a' && tolower(line[i]) <= 'p')
- {
- drive_range[j] = (int)(tolower(line[i++]) - 0x60);
- j++;
- }
- drive_range[j] = -1;
- }
- else
- {
- printf("ERROR --- illegal drive specification.\n");
- bios(0);
- }
- }
-
-