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
13void echo_files(char *, char *);
14
15int
16main(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
37void
38echo_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