/*
 * libecho.c
 *
 * For each argument on the command line, echo it.  Should expand
 * DOS wildcards correctly.
 *
 * Syntax: libecho [-p prefix] list...
 */
#include <stdio.h>
#include <io.h>
#include <string.h>

void echo_files(char *, char *);

int
main(int argc, char *argv[])
{
  int i;
  char *prefix;

  prefix = "";

  if (argc < 2) {
    fprintf(stderr, "Usage:  libecho [-p prefix] list...\n");
    return 1;
  }

  for (i = 1 ; i < argc ; i++)
    if (!stricmp(argv[i], "-p"))
      prefix = argv[++i];
    else
      echo_files(prefix, argv[i]);

  return 0;
}

void
echo_files(char *prefix, char *f)
{
  long ff;
  struct _finddata_t fdt;
  char *slash;
  char filepath[256];

  /*
   * We're unix based quite a bit here.  Look for normal slashes and
   * make them reverse slashes.
   */
  while((slash = strrchr(f, '/')) != NULL)
    *slash = '\\';

  strcpy(filepath, f);

  slash = strrchr(filepath, '\\');

  if (slash) {
    slash++;
    *slash = 0;
  } else {
    filepath[0] = '\0';
  }

  ff = _findfirst(f, &fdt);

  if (ff < 0) {
    printf("%s%s\n", prefix, f);
    return;
  }

  printf("%s%s%s\n", prefix, filepath, fdt.name);

  for (;;) {
    if (_findnext(ff, &fdt) < 0)
      break;
    printf("%s%s%s\n", prefix, filepath, fdt.name);
  }
  _findclose(ff);
}
