Home | History | Annotate | Download | only in util
      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