summaryrefslogtreecommitdiff
path: root/usr/src/lib/libbc/libc/gen/common/getttyent.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libbc/libc/gen/common/getttyent.c')
-rw-r--r--usr/src/lib/libbc/libc/gen/common/getttyent.c163
1 files changed, 0 insertions, 163 deletions
diff --git a/usr/src/lib/libbc/libc/gen/common/getttyent.c b/usr/src/lib/libbc/libc/gen/common/getttyent.c
deleted file mode 100644
index ddea7093df..0000000000
--- a/usr/src/lib/libbc/libc/gen/common/getttyent.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (c) 1985 Regents of the University of California.
- * All rights reserved. The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
- */
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-
-#include <stdio.h>
-#include <strings.h>
-#include <ttyent.h>
-
-static char *TTYFILE = "/etc/ttytab";
-#define LINE 256
-static struct _ttyentjunk {
- char zapchar;
- FILE *tf;
- char line[LINE];
- struct ttyent tty;
-} *__ttyentjunk, *_ttyentjunk(void);
-
-static struct _ttyentjunk *
-_ttyentjunk(void)
-{
-
- if (__ttyentjunk == 0)
- __ttyentjunk = (struct _ttyentjunk *)calloc(1, sizeof (struct _ttyentjunk));
- return (__ttyentjunk);
-}
-
-void
-setttyent(void)
-{
- struct _ttyentjunk *t = _ttyentjunk();
-
- if (t == 0)
- return;
- if (t->tf == NULL)
- t->tf = fopen(TTYFILE, "r");
- else
- rewind(t->tf);
-}
-
-void
-endttyent(void)
-{
- struct _ttyentjunk *t = _ttyentjunk();
-
- if (t == 0)
- return;
- if (t->tf != NULL) {
- (void) fclose(t->tf);
- t->tf = NULL;
- }
-}
-
-#define QUOTED 1
-
-/*
- * Skip over the current field, removing quotes,
- * and return a pointer to the next field.
- */
-static char *
-skip(char *p)
-{
- struct _ttyentjunk *t = _ttyentjunk();
- char *cp = p;
- int c;
- int q = 0;
-
- if (t == 0)
- return (0);
- for (; (c = *p) != '\0'; p++) {
- if (c == '"') {
- q ^= QUOTED; /* obscure, but nice */
- continue;
- }
- if (q == QUOTED && *p == '\\' && *(p+1) == '"')
- p++;
- *cp++ = *p;
- if (q == QUOTED)
- continue;
- if (c == '#') {
- t->zapchar = c;
- *p = 0;
- break;
- }
- if (c == '\t' || c == ' ' || c == '\n') {
- t->zapchar = c;
- *p++ = 0;
- while ((c = *p) == '\t' || c == ' ' || c == '\n')
- p++;
- break;
- }
- }
- *--cp = '\0';
- return (p);
-}
-
-static char *
-value(char *p)
-{
- if ((p = index(p,'=')) == 0)
- return (NULL);
- p++; /* get past the = sign */
- return (p);
-}
-
-struct ttyent *
-getttyent(void)
-{
- struct _ttyentjunk *t = _ttyentjunk();
- char *p;
- int c;
-
- if (t == 0)
- return (NULL);
- if (t->tf == NULL) {
- if ((t->tf = fopen(TTYFILE, "r")) == NULL)
- return (NULL);
- }
- do {
- p = fgets(t->line, LINE, t->tf);
- if (p == NULL)
- return (NULL);
- while ((c = *p) == '\t' || c == ' ' || c == '\n')
- p++;
- } while (c == '\0' || c == '#');
- t->zapchar = 0;
- t->tty.ty_name = p;
- p = skip(p);
- t->tty.ty_getty = p;
- p = skip(p);
- t->tty.ty_type = p;
- p = skip(p);
- t->tty.ty_status = 0;
- t->tty.ty_window = NULL;
- for (; *p; p = skip(p)) {
-#define space(x) ((c = p[x]) == ' ' || c == '\t' || c == '\n')
- if (strncmp(p, "on", 2) == 0 && space(2))
- t->tty.ty_status |= TTY_ON;
- else if (strncmp(p, "off", 3) == 0 && space(3))
- t->tty.ty_status &= ~TTY_ON;
- else if (strncmp(p, "secure", 6) == 0 && space(6))
- t->tty.ty_status |= TTY_SECURE;
- else if (strncmp(p, "local", 5) == 0 && space(5))
- t->tty.ty_status |= TTY_LOCAL;
- else if (strncmp(p, "window=", 7) == 0)
- t->tty.ty_window = value(p);
- else
- break;
- }
- if (t->zapchar == '#' || *p == '#')
- while ((c = *++p) == ' ' || c == '\t')
- ;
- t->tty.ty_comment = p;
- if (*p == 0)
- t->tty.ty_comment = 0;
- if (p = index(p, '\n'))
- *p = '\0';
- return (&t->tty);
-}