/* Program to show all files on a specific drive, either CP/M media or PC-DOS media. This program was compiled under DRC 1.11, requires Concurrent PC-DOS. It is designed as a .CMD file, and cannot be used (without modification) as a .EXE file. Sample usage: TREE shows the tree of the current drive TREE D: shows the tree of drive D: Dave Rand 72 Longfellow St. Thousand Oaks, CA 91360 805-493-1987 76244,51 Written: 07/10/85 Modified 8/4/85 Bob Thrush CompuServe PPN 74146,12 Allow redirection of stdout. This has not been tested with DOS type media. 8/11/85 Bob Thrush Added Harry Van Tassel suggestion for \\... CP/M names. */ #include #include #define MAXF 1024 /* Maximum number of files in any directory */ int isdos; MLOCAL char defdrv,defusr,target_drv; main(argc,argv) int argc; char **argv; { /* Get our default drive/user */ get_current(&defdrv,&defusr); target_drv = defdrv; if (argc > 1) { /* If a drive is supplied, select it */ target_drv = (argv[1][0] & 0x1f)-1; set_du(target_drv,defusr); } isdos = media(); /* Determine the media type */ if (isdos) tree("\\"); /* Tree that drive ! */ else tree("User 0"); /* On CPM media, start at user 0 */ set_du(defdrv,defusr);/* Select the log file drive/user */ } tree(s) char *s; { char *files[MAXF],temp[100]; int ff,x,t,user; static char *mask = " ????????.???"; if (isdos) *mask = 0x80; else { *mask = 0x00; sscanf(s,"User %d",&user); set_du(target_drv,user); } ff = search(mask,files,MAXF); if (ff) { sortit(files,ff); set_du(defdrv,defusr); printf("Current directory: \"%s\" Number of files = %d",s,ff); for (x=0 ; x0; t--) printf(" "); } printf("\n\n"); set_du(target_drv,user); if (isdos) { for (x=0 ; x