1: /*
   2:  * Copyright (c) 1980 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: #ifndef lint
   8: char copyright[] =
   9: "@(#) Copyright (c) 1980 Regents of the University of California.\n\
  10:  All rights reserved.\n";
  11: #endif not lint
  12: 
  13: #ifndef lint
  14: static char sccsid[] = "@(#)head.c	5.1 (Berkeley) 5/31/85";
  15: #endif not lint
  16: 
  17: #include <stdio.h>
  18: /*
  19:  * head - give the first few lines of a stream or of each of a set of files
  20:  *
  21:  * Bill Joy UCB August 24, 1977
  22:  */
  23: 
  24: int linecnt = 10;
  25: int argc;
  26: 
  27: main(Argc, argv)
  28:     int Argc;
  29:     char *argv[];
  30: {
  31:     register int argc;
  32:     char *name;
  33:     register char *argp;
  34:     static int around;
  35: 
  36:     Argc--, argv++;
  37:     argc = Argc;
  38:     do {
  39:         while (argc > 0 && argv[0][0] == '-') {
  40:             linecnt = getnum(argv[0] + 1);
  41:             argc--, argv++, Argc--;
  42:         }
  43:         if (argc == 0 && around)
  44:             break;
  45:         if (argc > 0) {
  46:             close(0);
  47:             if (freopen(argv[0], "r", stdin) == NULL) {
  48:                 perror(argv[0]);
  49:                 exit(1);
  50:             }
  51:             name = argv[0];
  52:             argc--, argv++;
  53:         } else
  54:             name = 0;
  55:         if (around)
  56:             putchar('\n');
  57:         around++;
  58:         if (Argc > 1 && name)
  59:             printf("==> %s <==\n", name);
  60:         copyout(linecnt);
  61:         fflush(stdout);
  62:     } while (argc > 0);
  63: }
  64: 
  65: copyout(cnt)
  66:     register int cnt;
  67: {
  68:     register int c;
  69:     char lbuf[BUFSIZ];
  70: 
  71:     while (cnt > 0 && fgets(lbuf, sizeof lbuf, stdin) != 0) {
  72:         printf("%s", lbuf);
  73:         fflush(stdout);
  74:         cnt--;
  75:     }
  76: }
  77: 
  78: getnum(cp)
  79:     register char *cp;
  80: {
  81:     register int i;
  82: 
  83:     for (i = 0; *cp >= '0' && *cp <= '9'; cp++)
  84:         i *= 10, i += *cp - '0';
  85:     if (*cp) {
  86:         fprintf(stderr, "Badly formed number\n");
  87:         exit(1);
  88:     }
  89:     return (i);
  90: }

Defined functions

copyout defined in line 65; used 1 times
  • in line 60
getnum defined in line 78; used 1 times
  • in line 40
main defined in line 27; never used

Defined variables

argc defined in line 25; used 8 times
copyright defined in line 8; never used
linecnt defined in line 24; used 2 times
sccsid defined in line 14; never used
Last modified: 1987-02-17
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2514
Valid CSS Valid XHTML 1.0 Strict