summaryrefslogtreecommitdiffstats
path: root/lib/libmytinfo/termcap.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libmytinfo/termcap.c')
-rw-r--r--lib/libmytinfo/termcap.c165
1 files changed, 165 insertions, 0 deletions
diff --git a/lib/libmytinfo/termcap.c b/lib/libmytinfo/termcap.c
new file mode 100644
index 0000000..f914c0b
--- /dev/null
+++ b/lib/libmytinfo/termcap.c
@@ -0,0 +1,165 @@
+/*
+ * termcap.c
+ *
+ * By Ross Ridge
+ * Public Domain
+ * 92/06/01 07:43:08
+ *
+ * termcap compatibility functions
+ *
+ */
+
+#include "defs.h"
+#include <term.h>
+#ifdef __FreeBSD__
+#include <unistd.h>
+#endif
+
+#ifdef USE_SCCS_IDS
+static const char SCCSid[] = "@(#) mytinfo termcap.c 3.3 92/06/01 public domain, By Ross Ridge";
+#endif
+
+extern char _mytinfo_version[];
+/* not static */
+char *_force_pick1 = _mytinfo_version;
+
+int
+tgetent(buf, term)
+char *term, *buf; {
+ char *s;
+ struct term_path *path;
+ int r = -1;
+ int fd;
+
+ if (term == NULL)
+ term = getenv("TERM");
+ if (term == NULL)
+ return 0;
+
+ path = _buildpath(
+#ifdef USE_TERMINFO
+ "$MYTERMINFO", 2,
+ "$TERMINFO", 2,
+#ifdef TERMINFODIR
+ TERMINFODIR, 0,
+#endif
+#ifdef TERMINFOSRC
+ TERMINFOSRC, 0,
+#endif
+#endif
+#ifdef USE_TERMCAP
+ "$TERMCAP", 1,
+#ifdef TERMCAPFILE
+ TERMCAPFILE, 0,
+#endif
+#endif
+ NULL, -1);
+
+ if (path == NULL)
+ return -1;
+
+#if 1
+ {
+ char buf1[MAX_BUF];
+ r = _fillterm(term, path, buf1);
+ }
+#else
+ r = _fillterm(term, path, buf);
+#endif
+
+ _delpath(path);
+
+ switch(r) {
+ case -3:
+ case -2:
+ case -1:
+ return -1;
+ case 0:
+ return 0;
+ case 1:
+ case 2:
+ case 3:
+ if (isatty(1))
+ fd = 1;
+ else if (isatty(2))
+ fd = 2;
+ else if (isatty(3)) /* V10 /dev/tty ?? */
+ fd = 3;
+ else if (isatty(0))
+ fd = 0;
+ else
+ fd = 1;
+
+ cur_term->fd = fd;
+ _term_buf.fd = fd;
+
+ if (_init_tty() == ERR)
+ return 0;
+ if ((s = getenv("LINES")) != NULL && atoi(s) > 0)
+ lines = atoi(s);
+ if ((s = getenv("COLUMNS")) != NULL && atoi(s) > 0)
+ columns = atoi(s);
+ cur_term->termcap = 1;
+ return 1;
+ default:
+ return -1;
+ }
+}
+
+static char cap2[3];
+
+int
+tgetnum(cap)
+char *cap; {
+ int ind;
+
+ cap2[0] = cap[0];
+ cap2[1] = cap[1];
+ cap2[2] = '\0';
+
+ ind = _findnumcode(cap2);
+ if (ind == -1)
+ return -1;
+ return cur_term->nums[ind];
+}
+
+int
+tgetflag(cap)
+char *cap; {
+ int ind;
+
+ cap2[0] = cap[0];
+ cap2[1] = cap[1];
+ cap2[2] = '\0';
+
+ ind = _findboolcode(cap2);
+ if (ind == -1)
+ return 0;
+ return cur_term->bools[ind];
+}
+
+char *
+tgetstr(cap, area)
+char *cap;
+char **area; {
+ register char *sp, *dp;
+ int ind;
+
+ cap2[0] = cap[0];
+ cap2[1] = cap[1];
+ cap2[2] = '\0';
+
+ ind = _findstrcode(cap2);
+ if (ind == -1)
+ return NULL;
+ sp = cur_term->strs[ind];
+ if (area == NULL || sp == NULL)
+ return sp;
+ dp = *area;
+ while (*sp != '\0')
+ *dp++ = *sp++;
+ *dp++ = '\0';
+ sp = *area;
+ *area = dp;
+ return sp;
+}
OpenPOWER on IntegriCloud