-
-/***************************************************************************
-* COPYRIGHT NOTICE *
-****************************************************************************
-* ncurses is copyright (C) 1992-1995 *
-* Zeyd M. Ben-Halim *
-* zmbenhal@netcom.com *
-* Eric S. Raymond *
-* esr@snark.thyrsus.com *
-* *
-* Permission is hereby granted to reproduce and distribute ncurses *
-* by any means and for any fee, whether alone or as part of a *
-* larger distribution, in source or in binary form, PROVIDED *
-* this notice is included with any such distribution, and is not *
-* removed from any of its header files. Mention of ncurses in any *
-* applications linked with it is highly appreciated. *
-* *
-* ncurses comes AS IS with no warranty, implied or expressed. *
-* *
-***************************************************************************/
+/****************************************************************************
+ * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
+ * and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ ****************************************************************************/
/*
*/
#include <progs.priv.h>
+#ifndef PURE_TERMINFO
+#include <termsort.c>
+#endif
-#include <ctype.h>
-#include <curses.h>
-
-MODULE_ID("$Id: tput.c,v 1.8 1996/12/21 17:34:36 tom Exp $")
+MODULE_ID("$Id: tput.c,v 1.14 1999/07/31 21:18:29 Goran.Uddeborg Exp $")
#define PUTS(s) fputs(s, stdout)
#define PUTCHAR(c) putchar(c)
static int tput(int argc, char *argv[])
{
+char *name;
char *s;
int i, j, c;
int reset, status;
FILE *f;
reset = 0;
- if (strcmp(argv[0], "reset") == 0) {
+ name = argv[0];
+ if (strcmp(name, "reset") == 0) {
reset = 1;
}
- if (reset || strcmp(argv[0], "init") == 0) {
+ if (reset || strcmp(name, "init") == 0) {
if (init_prog != NULL) {
system(init_prog);
}
PUTS(init_1string);
}
FLUSH;
-
+
if (reset && reset_2string != NULL) {
PUTS(reset_2string);
} else if (init_2string != NULL) {
PUTS(init_2string);
}
FLUSH;
-
+
if (set_lr_margin != NULL) {
PUTS(tparm(set_lr_margin, 0, columns - 1));
} else if (set_left_margin_parm != NULL
}
}
FLUSH;
-
+
if (init_tabs != 8) {
if (clear_all_tabs != NULL && set_tab != NULL) {
for(i = 0; i < columns - 1; i += 8) {
if (parm_right_cursor) {
PUTS(tparm(parm_right_cursor, 8));
} else {
- for(j = 0; j < 8; j++)
+ for(j = 0; j < 8; j++)
PUTCHAR(' ');
}
PUTS(set_tab);
FLUSH;
}
}
-
+
if (reset && reset_file != NULL) {
f = fopen(reset_file, "r");
if (f == NULL) {
fclose(f);
}
FLUSH;
-
+
if (reset && reset_3string != NULL) {
PUTS(reset_3string);
} else if (init_2string != NULL) {
FLUSH;
return 0;
}
-
- if (strcmp(argv[0], "longname") == 0) {
+
+ if (strcmp(name, "longname") == 0) {
PUTS(longname());
return 0;
}
- if ((status = tigetflag(argv[0])) != -1)
+#ifndef PURE_TERMINFO
+ {
+ const struct name_table_entry *np;
+
+ if ((np = _nc_find_entry(name, _nc_get_hash_table(1))) != 0)
+ switch(np->nte_type)
+ {
+ case BOOLEAN:
+ if (bool_from_termcap[np->nte_index])
+ name = boolnames[np->nte_index];
+ break;
+
+ case NUMBER:
+ if (num_from_termcap[np->nte_index])
+ name = numnames[np->nte_index];
+ break;
+
+ case STRING:
+ if (str_from_termcap[np->nte_index])
+ name = strnames[np->nte_index];
+ break;
+ }
+ }
+#endif
+
+ if ((status = tigetflag(name)) != -1)
return(status != 0);
- else if ((status = tigetnum(argv[0])) != CANCELLED_NUMERIC) {
+ else if ((status = tigetnum(name)) != CANCELLED_NUMERIC) {
(void) printf("%d\n", status);
return(0);
}
- else if ((s = tigetstr(argv[0])) == CANCELLED_STRING)
- quit(4, "%s: unknown terminfo capability '%s'", prg_name, argv[0]);
+ else if ((s = tigetstr(name)) == CANCELLED_STRING)
+ quit(4, "%s: unknown terminfo capability '%s'", prg_name, name);
else if (s != (char *)NULL) {
if (argc > 1) {
int k;
char *s, *term;
int errret, cmdline = 1;
int c;
+char buf[BUFSIZ];
+int errors = 0;
prg_name = argv[0];
s = strrchr(prg_name, '/');
/* NOTREACHED */
}
- if (term == NULL || *term == '\0') {
+ if (term == NULL || *term == '\0')
quit(2, "No value for $TERM and no -T specified");
- }
- setupterm(term, STDOUT_FILENO, &errret);
- if (errret == ERR)
- quit(3, "unknown terminal \"%s\"", term);
+ if (setupterm(term, STDOUT_FILENO, &errret) != OK && errret <= 0)
+ quit(3, "unknown terminal \"%s\"", term);
if (cmdline)
- return(tput(argc, argv));
- else {
- char buf[BUFSIZ];
- int errors = 0;
+ return tput(argc, argv);
while (fgets(buf, sizeof(buf), stdin) != (char *)NULL) {
char *argvec[16]; /* command, 9 parms, null, & slop */
/* crack the argument list into a dope vector */
for (cp = buf; *cp; cp++) {
- if (isspace(*cp))
- *cp = '\0';
- else if (cp == buf || cp[-1] == 0)
- argvec[argnum++] = cp;
+ if (isspace(*cp))
+ *cp = '\0';
+ else if (cp == buf || cp[-1] == 0)
+ argvec[argnum++] = cp;
}
argvec[argnum] = (char *)NULL;
if (tput(argnum, argvec) != 0)
- errors++;
+ errors++;
}
- return(errors > 0);
- }
+ return errors > 0;
}