/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2005 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 *
#endif
#include <transform.h>
-MODULE_ID("$Id: tput.c,v 1.31 2002/07/20 19:09:47 tom Exp $")
+MODULE_ID("$Id: tput.c,v 1.35 2005/04/03 14:25:32 tom Exp $")
#define PUTS(s) fputs(s, stdout)
#define PUTCHAR(c) putchar(c)
va_list argp;
va_start(argp, fmt);
+ fprintf(stderr, "%s: ", prg_name);
vfprintf(stderr, fmt, argp);
fprintf(stderr, "\n");
va_end(argp);
- exit(status);
+ ExitProgram(status);
}
static void
usage(void)
{
fprintf(stderr, "usage: %s [-V] [-S] [-T term] capname\n", prg_name);
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
}
static void
int i, j, c;
int status;
FILE *f;
- int token = UNDEF;
if ((name = argv[0]) == 0)
name = "";
(void) printf("%d\n", status);
return exit_code(NUMBER, 0);
} else if ((s = tigetstr(name)) == CANCELLED_STRING) {
- quit(4, "%s: unknown terminfo capability '%s'", prg_name, name);
+ quit(4, "unknown terminfo capability '%s'", name);
} else if (s != ABSENT_STRING) {
- token = STRING;
if (argc > 1) {
int k;
- int numbers[10];
- char *strings[10];
+ int popcount;
+ long numbers[1 + NUM_PARM];
+ char *strings[1 + NUM_PARM];
+ char *p_is_s[NUM_PARM];
/* Nasty hack time. The tparm function needs to see numeric
* parameters as numbers, not as pointers to their string
if (tmp == 0 || *tmp != 0)
numbers[k] = 0;
}
- for (k = argc; k <= 9; k++) {
+ for (k = argc; k <= NUM_PARM; k++) {
numbers[k] = 0;
strings[k] = 0;
}
s = tparm(s, numbers[1], strings[2], strings[3]);
break;
default:
+ (void) _nc_tparm_analyze(s, p_is_s, &popcount);
+#define myParam(n) (p_is_s[n - 1] != 0 ? ((long) strings[n]) : numbers[n])
s = tparm(s,
- numbers[1], numbers[2], numbers[3],
- numbers[4], numbers[5], numbers[6],
- numbers[7], numbers[8], numbers[9]);
+ myParam(1),
+ myParam(2),
+ myParam(3),
+ myParam(4),
+ myParam(5),
+ myParam(6),
+ myParam(7),
+ myParam(8),
+ myParam(9));
break;
}
}
int c;
char buf[BUFSIZ];
int result = 0;
- int err;
check_aliases(prg_name = _nc_rootname(argv[0]));
argvec[argnum] = 0;
if (argnum != 0
- && (err = tput(argnum, argvec)) != 0) {
+ && tput(argnum, argvec) != 0) {
if (result == 0)
result = 4; /* will return value >4 */
++result;