LINUX.ORG.RU

История изменений

Исправление saahriktu, (текущая версия) :

Вот что-что а ни ls ни cat в будут ну явно не десяток и даже не двадцаток строк

>cat myls.c
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>

main(int argc, char **argv)
{
    DIR            *dptr;
    struct dirent  *ds;
    dptr = opendir(argv[1]);
    while ((ds = readdir(dptr)) != 0)
        printf("%s\n", ds->d_name);
    closedir(dptr);
}

---------------------

/*
 * Unixway cat implementation v0.1 by saahriktu
 * under GNU GPLv3
 */

#include <stdio.h>
#include <string.h>

void
copystdin ()
{
  int stdc;
  while ((stdc = getchar ()) != EOF)
    putchar (stdc);
}

int
main (int argc, char **argv)
{
  int nfid, c;
  FILE *fptr;
  if (argc != 1)
    {
      for (nfid = 1; nfid < argc; nfid++)
        {
          if (!strcmp ("-", argv[nfid]))
            {
              copystdin ();
              continue;
            }
          else if ((fptr = fopen (argv[nfid], "r")) == NULL)
            continue;
          while ((c = fgetc (fptr)) != EOF)
            putchar (c);
          fclose (fptr);
        }
    }
  else
    copystdin ();
  return 0;
}

Исходная версия saahriktu, :

Вот что-что а ни ls ни cat в будут ну явно не десяток и даже не двадцаток строк

>cat myls.c
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>

main(int argc, char **argv)
{
    DIR            *dptr;
    struct dirent  *ds;
    dptr = opendir(argv[1]);
    while ((ds = readdir(dptr)) != 0)
        printf("%s\n", ds->d_name);
    closedir(dptr);
}
/*
 * Unixway cat implementation v0.1 by saahriktu
 * under GNU GPLv3
 */

#include <stdio.h>
#include <string.h>

void
copystdin ()
{
  int stdc;
  while ((stdc = getchar ()) != EOF)
    putchar (stdc);
}

int
main (int argc, char **argv)
{
  int nfid, c;
  FILE *fptr;
  if (argc != 1)
    {
      for (nfid = 1; nfid < argc; nfid++)
        {
          if (!strcmp ("-", argv[nfid]))
            {
              copystdin ();
              continue;
            }
          else if ((fptr = fopen (argv[nfid], "r")) == NULL)
            continue;
          while ((c = fgetc (fptr)) != EOF)
            putchar (c);
          fclose (fptr);
        }
    }
  else
    copystdin ();
  return 0;
}