home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume15 / upm / part01 / makedrive.c < prev    next >
C/C++ Source or Header  |  1990-12-17  |  1KB  |  56 lines

  1. /*
  2.  
  3. makedrive.c - creates a "drive device" file for CP/M - really a file
  4. with a size a multiple of 2K and more than 128K, with the first 16K
  5. filled with $E5, and a hole for the rest up to the EOF. This creates
  6. a file that takes up 16K on disk, but has a huge EOF. Under CP/M, the
  7. EOF of a "drive device" file defines its size, which (of course)
  8. doesn't change.
  9.  
  10. */
  11.  
  12. #include <stdio.h>
  13.  
  14. extern int errno;
  15. extern char *sys_errlist[];
  16.  
  17. usage(name)
  18. char *name;
  19. {
  20.   printf("Usage: %s [size] [filename]\n\n",name);
  21.   printf("size is in K-bytes and must be an even number 128 or greater.\n\n");
  22.   exit(1);
  23. }
  24.  
  25. main(argc,argv)
  26. int argc;
  27. char **argv;
  28. {
  29.   int size,i;
  30.   FILE *f;
  31.  
  32.   if (argc!=3)
  33.     usage(*argv);
  34.  
  35.   size=atoi(argv[1]);
  36.  
  37.   if (size<128 || size%2)
  38.     usage(*argv);
  39.  
  40.   f=fopen(argv[2],"w");
  41.   if (f==NULL)
  42.   {
  43.     printf("%s: %s - %s\n",*argv,argv[2],sys_errlist[errno]);
  44.     exit(1);
  45.   }
  46.  
  47.   for (i=0;i<16384*4;i++) /* write out a blank directory */
  48.     putc(0xE5,f);
  49.  
  50.   fseek(f,(long)(1024*size-1),0); /* make a big hole */
  51.   putc(0xE5,f);
  52.  
  53.   fclose(f);
  54.  
  55. }
  56.