home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 2 / 2140 / read.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-28  |  1023 b   |  57 lines

  1. /*
  2. **    Test main program for MS-DOS diskette routines: read file
  3. */
  4.  
  5. #include    <stdio.h>
  6. #include    "io.h"
  7. #include    "msdos.h"
  8.  
  9. main(argc,argv)
  10. int argc;
  11. char *argv[];    {
  12.     register int i,j;
  13.     directory *dp;
  14.     FILE *f=stdout;
  15.  
  16.     if(argc!=3)    {
  17.         printf(    "usage: read diskette_file [other_file|-]\n"
  18.             "Filenames may have leading A: B: or\n"
  19.             "imbedded periods, indicating spaces\n");
  20.         exit(2);
  21.     }
  22.  
  23.     for(i=0; j=argv[1][i]; i++)
  24.         if(j=='.')
  25.             argv[1][i]=' ';
  26.         else if(j>='a' && j<='z')
  27.             argv[1][i]-=32;
  28.  
  29.     if(argv[1][1]==':')    {
  30.         drive_number=*argv[1]-'A';
  31.         argv[1]+=2;
  32.     }
  33.  
  34.     disk_open();
  35.  
  36.     if(!(dp=find_dir(argv[1])))    {
  37.         printf("No match for \"%11.11s\"\n",argv[1]);
  38.         exit(1);
  39.     }
  40.  
  41.     printf("Reading file \"%11.11s\" %02x %ld %04x/%04x\n",
  42.         dp->filename,dp->attribute,dp->filesize,dp->date,dp->time);
  43.  
  44.     if((*argv[2]!='-' || argv[2][1]) && (!(f=fopen(argv[2],"w"))))    {
  45.         printf("Cannot open file \"%s\" for writing\n",argv[2]);
  46.         exit(1);
  47.     }
  48.  
  49.     file_open(dp);
  50.  
  51.     while((i=file_getc())!=EOF)
  52.         putc(i,f);
  53.  
  54.     fclose(f);
  55.     exit(0);
  56. }
  57.