/* History:10,1 */ #include #include #include #include #include #include #include #include typedef struct F { char *name; struct F *next; } F; main(argc, argv) int argc; char *argv[]; { F *root=NULL, *n; int done; struct ffblk ff; char path[80], drive[10]; for (argc--, argv++; argc; argc--, argv++) { fnsplit(*argv, drive, path, NULL, NULL); done = findfirst(*argv, &ff, 0); while (!done) { n = (F *)malloc(sizeof(F)); n->name = (char *)malloc(strlen(ff.ff_name)+strlen(drive)+strlen(path)+5); fnmerge(n->name, drive, path, ff.ff_name, ""); n->next = root; root = n; done = findnext(&ff); } while (root) { dtou(root->name); n = root->next; free(root->name); free(root); root = n; } } } dtou(fname) char *fname; { int sf, df, l, bp1, bp2; char buf[512], buf2[512]; /* best case */ char tfname[80], drive[3], path[80]; struct ftime ftime; sf = open(fname, O_RDONLY|O_BINARY); fnsplit(fname, drive, path, NULL, NULL); fnmerge(tfname, drive, path, "utod", "c"); df = open(tfname, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, S_IWRITE); while ((l=read(sf, buf, 512)) > 0) { bp2 = 0; for (bp1 = 0; bp1 < l; bp1++) if (buf[bp1] != 13) buf2[bp2++] = buf[bp1]; write(df, buf2, bp2); } getftime(sf, &ftime); setftime(df, &ftime); close(sf); close(df); remove(fname); rename(tfname, fname); }