1: /*
   2:  * Concatenate files.
   3:  */
   4: 
   5: #include <stdio.h>
   6: #include <sys/types.h>
   7: #include <sys/stat.h>
   8: 
   9: char    stdbuf[BUFSIZ];
  10: 
  11: main(argc, argv)
  12: char **argv;
  13: {
  14:     int fflg = 0;
  15:     register FILE *fi;
  16:     register c;
  17:     int dev, ino = -1;
  18:     struct stat statb;
  19: 
  20:     setbuf(stdout, stdbuf);
  21:     for( ; argc>1 && argv[1][0]=='-'; argc--,argv++) {
  22:         switch(argv[1][1]) {
  23:         case 0:
  24:             break;
  25:         case 'u':
  26:             setbuf(stdout, (char *)NULL);
  27:             continue;
  28:         }
  29:         break;
  30:     }
  31:     fstat(fileno(stdout), &statb);
  32:     statb.st_mode &= S_IFMT;
  33:     if (statb.st_mode!=S_IFCHR && statb.st_mode!=S_IFBLK) {
  34:         dev = statb.st_dev;
  35:         ino = statb.st_ino;
  36:     }
  37:     if (argc < 2) {
  38:         argc = 2;
  39:         fflg++;
  40:     }
  41:     while (--argc > 0) {
  42:         if (fflg || (*++argv)[0]=='-' && (*argv)[1]=='\0')
  43:             fi = stdin;
  44:         else {
  45:             if ((fi = fopen(*argv, "r")) == NULL) {
  46:                 fprintf(stderr, "cat: can't open %s\n", *argv);
  47:                 continue;
  48:             }
  49:         }
  50:         fstat(fileno(fi), &statb);
  51:         if (statb.st_dev==dev && statb.st_ino==ino) {
  52:             fprintf(stderr, "cat: input %s is output\n",
  53:                fflg?"-": *argv);
  54:             fclose(fi);
  55:             continue;
  56:         }
  57:         while ((c = getc(fi)) != EOF)
  58:             putchar(c);
  59:         if (fi!=stdin)
  60:             fclose(fi);
  61:     }
  62:     return(0);
  63: }

Defined functions

main defined in line 11; never used

Defined variables

stdbuf defined in line 9; used 1 times
  • in line 20
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 638
Valid CSS Valid XHTML 1.0 Strict