Читаем UNIX — универсальная среда программирования полностью

3.8.55 toolong

length($0) 72 { print "Line", NR, "too long:", substr($0,1,60) }

3.8.56 ttyin1.c

ttyin /* process response from /dev/tty (version 1) */

{

 char buf[BUFSIZ];

 FILE *efopen;

 static FILE *tty = NULL;


 if (tty == NULL)

  tty = efopen("/dev/tty", "r");

 if (fgets(buf, BUFSIZ, tty) == NULL || buf[0] == 'q')

  exit(0);

 else /* ordinary line */

  return buf[0];

}

3.8.57 ttyin2.c

ttyin /* process response from /dev/tty (version 2) */

{

 char buf[BUFSIZ];

 FILE *efopen;

 static FILE *tty = NULL;


 if (tty == NULL)

  tty = efopen("/dev/tty", "r");

 for (;;) {

  if (fgets(buf,BUFSIZ,tty) == NULL || buf[0] == 'q')

  exit(0);

  else if (buf[0] == '!') {

   system(buf+1); /* BUG here */

   printf("!\n");

  }

  else /* ordinary line */

   return buf[0];

 }

}


#include "system.c"

3.5.58 vis1.c

/* vis: make funny characters visible (version 1) */

#include stdio.h

#include ctype.h


main {

 int c;


 while ((c = getchar) != EOF)

  if (isascii(c)

   (isprint(c) || c=='\n' || c=='\t' || c==' '))

   putchar(c);

  else

   printf("\\%03o", c);

 exit(0);

}

3.5.59 vis2.c

/* vis: make funny characters visible (version 2) */

#include stdio.h

#include ctype.h


main(argc, argv)

 int argc;

 char *argv[];

{

 int с, strip = 0;


 if (argc 1 strcmp(argv[1] , "-s") == 0)

  strip = 1;

 while ((c = getchar) != EOF) if (isascii(c)

  (isprint(c) || c=='\n' || c=='\t' || c==' '))

  putchar(c);

 else if (!strip)

  printf("\\%03o", c);

 exit(0);

}

3.8.60 vis3.c

/* vis: make funny characters visible (version 3) */

#include stdio.h

#include ctype.h


int strip = 0; /* 1 = discard special characters */


main(argc, argv)

 int argc;

 char *argv[];

{

 int i;

 FILE *fp;


 while (argc 1 argv[1][0] == '-') {

  switch (argv[1][1]) {

  case 's': /* -s: strip funny chars */

   strip = 1;

   break;

  default:

   fprintf(stderr, "%s: unknown arg %s\n",

    argv[0], argv[1]);

   exit(1);

  }

  argc--;

  argv++;

 }

 if (argc == 1)

  vis(stdin);

 for (i = 1; i argc; i++)

  if ((fp=fopen(argv[i], "r")) == NULL) {

   fprintf(stderr, "%s: can't open %s\n",

    argv[0], argv[i]);

   exit(1);

  } else {

   vis(fp);

   fclose(fp);

  }

 exit(0);

}


vis(fp) /* make chars visible in FILE *fp */

 FILE *fp;

{

 int c;


 while ((c = getc(fp)) != EOF)

  if (isascii(c)

   (isprint(c) || c=='\n' || c=='\t' || c==' '))

   putchar(c);

  else if (!strip)

   printf("\\%03o", с);

}

3.8.61 waitfile.c

/* waitfile: wait until file stops changing */

#include stdio.h

#include sys/types.h

#include sys/stat.h


char *progname;


main(argc, argv)

 int argc;

 char *argv[];

{

 int fd;

 struct stat stbuf;

 time_t old_time = 0;


 progname = argv[0];

 if (argc 2)

  error("Usage: %s filename [cmd]", progname);

 if ((fd = open(argv[1], 0)) == -1)

  error("can't open %s", argv[1]);

 fstat(fd, stbuf);

 while (stbuf.st_mtime != old_time) {

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже