home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / msdos / c / djgpp / utils / dtou.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-03-07  |  1.6 KB  |  75 lines

  1. /* History:10,1 */
  2. #include <stdio.h>
  3. #include <dir.h>
  4. #include <dos.h>
  5. #include <fcntl.h>
  6. #include <sys/stat.h>
  7. #include <alloc.h>
  8. #include <string.h>
  9. #include <io.h>
  10.  
  11. typedef struct F {
  12.     char *name;
  13.     struct F *next;
  14.     } F;
  15.  
  16. main(argc, argv)
  17. int argc;
  18. char *argv[];
  19. {
  20.   F *root=NULL, *n;
  21.   int done;
  22.   struct ffblk ff;
  23.   char path[80], drive[10];
  24.   for (argc--, argv++; argc; argc--, argv++)
  25.   {
  26.     fnsplit(*argv, drive, path, NULL, NULL);
  27.     done = findfirst(*argv, &ff, 0);
  28.     while (!done)
  29.     {
  30.       n = (F *)malloc(sizeof(F));
  31.       n->name = (char *)malloc(strlen(ff.ff_name)+strlen(drive)+strlen(path)+5);
  32.       fnmerge(n->name, drive, path, ff.ff_name, "");
  33.       n->next = root;
  34.       root = n;
  35.       done = findnext(&ff);
  36.     }
  37.     while (root)
  38.     {
  39.       dtou(root->name);
  40.       n = root->next;
  41.       free(root->name);
  42.       free(root);
  43.       root = n;
  44.     }
  45.   }
  46. }
  47.  
  48. dtou(fname)
  49. char *fname;
  50. {
  51.   int sf, df, l, bp1, bp2;
  52.   char buf[512], buf2[512]; /* best case */
  53.   char tfname[80], drive[3], path[80];
  54.   struct ftime ftime;
  55.   sf = open(fname, O_RDONLY|O_BINARY);
  56.   fnsplit(fname, drive, path, NULL, NULL);
  57.   fnmerge(tfname, drive, path, "utod", "c");
  58.   df = open(tfname, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, S_IWRITE);
  59.   while ((l=read(sf, buf, 512)) > 0)
  60.   {
  61.     bp2 = 0;
  62.     for (bp1 = 0; bp1 < l; bp1++)
  63.       if (buf[bp1] != 13)
  64.         buf2[bp2++] = buf[bp1];
  65.     write(df, buf2, bp2);
  66.   }
  67.   getftime(sf, &ftime);
  68.   setftime(df, &ftime);
  69.   close(sf);
  70.   close(df);
  71.  
  72.   remove(fname);
  73.   rename(tfname, fname);
  74. }
  75.