Merge change 9990
[android/platform/external/e2fsprogs.git] / util / libecho.c
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 }