1 /* 2 * libecho.c 3 * 4 * For each argument on the command line, echo it. Should expand 5 * DOS wildcards correctly. 6 * 7 * Syntax: libecho [-p prefix] list... 8 */ 9 #include <stdio.h> 10 #include <io.h> 11 #include <string.h> 12 13 void echo_files(char *, char *); 14 15 int 16 main(int argc, char *argv[]) 17 { 18 int i; 19 char *prefix; 20 21 prefix = ""; 22 23 if (argc < 2) { 24 fprintf(stderr, "Usage: libecho [-p prefix] list...\n"); 25 return 1; 26 } 27 28 for (i = 1 ; i < argc ; i++) 29 if (!stricmp(argv[i], "-p")) 30 prefix = argv[++i]; 31 else 32 echo_files(prefix, argv[i]); 33 34 return 0; 35 } 36 37 void 38 echo_files(char *prefix, char *f) 39 { 40 long ff; 41 struct _finddata_t fdt; 42 char *slash; 43 char filepath[256]; 44 45 /* 46 * We're unix based quite a bit here. Look for normal slashes and 47 * make them reverse slashes. 48 */ 49 while((slash = strrchr(f, '/')) != NULL) 50 *slash = '\\'; 51 52 strcpy(filepath, f); 53 54 slash = strrchr(filepath, '\\'); 55 56 if (slash) { 57 slash++; 58 *slash = 0; 59 } else { 60 filepath[0] = '\0'; 61 } 62 63 ff = _findfirst(f, &fdt); 64 65 if (ff < 0) { 66 printf("%s%s\n", prefix, f); 67 return; 68 } 69 70 printf("%s%s%s\n", prefix, filepath, fdt.name); 71 72 for (;;) { 73 if (_findnext(ff, &fdt) < 0) 74 break; 75 printf("%s%s%s\n", prefix, filepath, fdt.name); 76 } 77 _findclose(ff); 78 } 79