summaryrefslogtreecommitdiffstats
path: root/lib/libmytinfo/gettinfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libmytinfo/gettinfo.c')
-rw-r--r--lib/libmytinfo/gettinfo.c303
1 files changed, 0 insertions, 303 deletions
diff --git a/lib/libmytinfo/gettinfo.c b/lib/libmytinfo/gettinfo.c
deleted file mode 100644
index 7b7b445..0000000
--- a/lib/libmytinfo/gettinfo.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- * gettinfo.c
- *
- * By Ross Ridge
- * Public Domain
- * 92/02/01 07:30:02
- *
- */
-
-#include "defs.h"
-#include <term.h>
-
-#include <ctype.h>
-
-#ifdef USE_SCCS_IDS
-static const char SCCSid[] = "@(#) mytinfo gettinfo.c 3.2 92/02/01 public domain, By Ross Ridge";
-#endif
-
-int _gettinfo(sp, cur, path)
-register char *sp;
-struct term_path *path;
-TERMINAL *cur; {
- static char name[MAX_NAME];
- static char entry[MAX_LINE];
- register char *dp;
- register TERMINAL *ct = cur;
- int ind, i, base;
- char c, flag;
-
- dp = entry;
- while(*sp != ',' && *sp != '\0')
- *dp++ = *sp++;
- if (ct->name_all == NULL) {
- *dp = '\0';
- if ((ct->name_all = _addstr(entry)) == NULL)
- return 1;
- while(dp > entry && *--dp != '|');
- ct->name_long = ct->name_all + (dp - entry) + 1;
- }
-
- while(*sp != '\0') {
- while(*sp == ',')
- sp++;
- while(isspace(*sp))
- sp++;
- if (*sp == ',')
- continue;
- if (*sp == '\0')
- break;
- dp = name;
- while (*sp != ',' && *sp != '#' && *sp != '=' && !isspace(*sp) && *sp != '\0')
- *dp++ = *sp++;
- *dp = '\0';
-#ifdef DEBUG
- printf(" %s", name);
-#endif
- switch(*sp) {
- case '=':
-#ifdef DEBUG
- putchar('$');
-#endif
- dp = entry;
- sp++;
- ind = _findstrname(name);
- if (ind != -1)
- flag = _strflags[ind];
- else {
- ind = _findstrfname(name);
- if (ind != -1)
- flag = _strflags[ind];
- else
- flag = 'K';
- }
- while(*sp != '\0' && *sp != ',') {
- switch(*sp) {
- case '%':
- *dp++ = *sp++;
- if (*sp == '^' && flag == 'G')
- *dp++ = *sp++;
- break;
- case '\\':
- switch(*++sp) {
- case 'e':
- case 'E': *dp++ = '\033'; break;
- case 'l': *dp++ = '\012'; break;
- case 'n': *dp++ = '\n'; break;
- case 'r': *dp++ = '\r'; break;
- case 't': *dp++ = '\t'; break;
- case 'b': *dp++ = '\b'; break;
- case 'f': *dp++ = '\f'; break;
- case 's': *dp++ = ' '; break;
-
- case '^':
- case '\\':
- case ',':
- case ':':
- *dp++ = *sp; break;
-
- case '0':
- if (!isdigit(*(sp + 1))) {
- *dp++ = '\200';
- break;
- }
- /* FALLTHROUGH */
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- c = *sp - '0';
- if (isdigit(sp[1]))
- c = c * 8 + (*++sp-'0');
- if (isdigit(sp[1]))
- c = c * 8 + (*++sp-'0');
- switch((char)c) {
- case 0:
- if (flag == 'K')
- *dp++ = '\200';
- else {
- *dp++ = '\\';
- *dp++ = '0';
- *dp++ = '0';
- *dp++ = '0';
- }
- break;
- case '$':
- case '\'':
- case '\\':
- if (flag != 'K')
- *dp++ = '\\';
- /* FALLTHROUGH */
- default:
- if (flag == 'G'
- && c == '%')
- *dp++ = '\\';
- *dp++ = c;
- break;
- }
- break;
- default:
- *dp++ = '\\';
- *dp++ = *sp;
- break;
- }
- sp++;
- break;
- case '^':
- if (*++sp >= 'A' && *sp <= '_') {
- *dp++ = *sp++ - '@';
- } else if (*sp >= 'a' && *sp <= 'z') {
- *dp++ = *sp++ - 'a' + 1;
- } else if (*sp == '@') {
- if (flag == 'K')
- *dp++ = '\200';
- else {
- *dp++ = '\\';
- *dp++ = '0';
- *dp++ = '0';
- *dp++ = '0';
- }
- sp++;
- } else
- *dp++ = '^';
- break;
- default:
- *dp++ = *sp++;
- break;
- }
- }
- *dp++ = '\0';
- if (strcmp(name, "use") == 0) {
- if (_getother(entry, path, ct))
- return 1;
- break;
- }
- if (ind == -1)
- break;
- if (ct->strs[ind] != (char *) -1)
- break;
- if ((ct->strs[ind] = _addstr(entry)) == NULL)
- return 1;
- break;
- case '#':
-#ifdef DEBUG
- putchar('#');
-#endif
-#if 0
- i = atoi(++sp);
-#else
- sp++;
- if (*sp == '0') {
- sp++;
- if (*sp == 'x' || *sp == 'X') {
- sp++;
- base = 16;
- } else
- base = 8;
- } else
- base = 10;
- i = 0;
- while(1) {
- if (isdigit(*sp))
- i = i * base + *sp - '0';
- else if (base == 16 && isxdigit(*sp))
- i = i * base + tolower(*sp) - 'a' + 10;
- else
- break;
- sp++;
- }
-#endif
- while(*sp != '\0' && *sp != ',')
- sp++;
-
- ind = _findnumname(name);
- if (ind != -1) {
- if (ct->nums[ind] != -2)
- break;
- ct->nums[ind] = i;
- } else {
- ind = _findnumfname(name);
- if (ind != -1) {
- if (ct->nums[ind] != -2)
- break;
- ct->nums[ind] = i;
- }
- }
- break;
- default:
- while(*sp != '\0' && *sp++ != ',');
- if (*(dp - 1) == '@') {
-#ifdef DEBUG
- putchar('@');
-#endif
- *(dp - 1) = '\0';
- ind = _findboolname(name);
- if (ind != -1) {
-#ifdef DEBUG
- putchar('!');
-#endif
- ct->bools[ind] = 0;
- break;
- }
- ind = _findnumname(name);
- if (ind != -1) {
-#ifdef DEBUG
- putchar('#');
-#endif
- ct->nums[ind] = -1;
- break;
- }
- ind = _findstrname(name);
- if (ind != -1) {
-#ifdef DEBUG
- putchar('$');
-#endif
- ct->strs[ind] = NULL;
- break;
- }
- ind = _findboolfname(name);
- if (ind != -1) {
-#ifdef DEBUG
- putchar('!');
-#endif
- ct->bools[ind] = 0;
- break;
- }
- ind = _findnumfname(name);
- if (ind != -1) {
-#ifdef DEBUG
- putchar('#');
-#endif
- ct->nums[ind] = -1;
- break;
- }
- ind = _findstrfname(name);
- if (ind != -1) {
-#ifdef DEBUG
- putchar('$');
-#endif
- ct->strs[ind] = NULL;
- break;
- }
- break;
- }
-#ifdef DEBUG
- putchar('!');
-#endif
- ind = _findboolname(name);
- if (ind == -1) {
- ind = _findboolfname(name);
- if (ind == -1)
- break;
- }
- if (ct->bools[ind] != -1)
- break;
- ct->bools[ind] = 1;
- break;
- }
- }
- return 0;
-}
OpenPOWER on IntegriCloud