99 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*	tget 1.0 - get termcap values			Author: Kees J. Bot
 | |
|  *								6 Mar 1994
 | |
|  */
 | |
| #define nil 0
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| #include <termcap.h>
 | |
| 
 | |
| void fputchar(int c)
 | |
| {
 | |
| 	putchar(c);
 | |
| }
 | |
| 
 | |
| void usage(void)
 | |
| {
 | |
| 	fprintf(stderr,
 | |
| "Usage: tget [-flag id] [-num id] [-str id] [-goto col line] [[-echo] string]\n"
 | |
| 		);
 | |
| 	exit(-1);
 | |
| }
 | |
| 
 | |
| void main(int argc, char **argv)
 | |
| {
 | |
| 	char termbuf[1024];
 | |
| 	char string[256], *pstr;
 | |
| 	char *term;
 | |
| 	int i;
 | |
| 	int excode= 0;
 | |
| 
 | |
| 	if ((term= getenv("TERM")) == nil) {
 | |
| 		fprintf(stderr, "tget: $TERM is not set\n");
 | |
| 		exit(-1);
 | |
| 	}
 | |
| 
 | |
| 	if (tgetent(termbuf, term) != 1) {
 | |
| 		fprintf(stderr, "tget: no termcap entry for '%s'\n", term);
 | |
| 		exit(-1);
 | |
| 	}
 | |
| 
 | |
| 	for (i= 1; i < argc; i++) {
 | |
| 		char *option= argv[i];
 | |
| 		char *id;
 | |
| 
 | |
| 		if (option[0] != '-') {
 | |
| 			fputs(option, stdout);
 | |
| 			continue;
 | |
| 		}
 | |
| 
 | |
| 		if (++i == argc) usage();
 | |
| 		id= argv[i];
 | |
| 
 | |
| 		if (strcmp(option, "-flag") == 0) {
 | |
| 			excode= tgetflag(id) ? 0 : 1;
 | |
| 		} else
 | |
| 		if (strcmp(option, "-num") == 0) {
 | |
| 			int num;
 | |
| 
 | |
| 			if ((num= tgetnum(id)) == -1) {
 | |
| 				excode= 1;
 | |
| 			} else {
 | |
| 				excode= 0;
 | |
| 				printf("%d", num);
 | |
| 			}
 | |
| 		} else
 | |
| 		if (strcmp(option, "-str") == 0) {
 | |
| 			char *str;
 | |
| 
 | |
| 			if ((str= tgetstr(id, (pstr= string, &pstr))) == nil) {
 | |
| 				excode= 1;
 | |
| 			} else {
 | |
| 				excode= 0;
 | |
| 				tputs(str, 0, fputchar);
 | |
| 			}
 | |
| 		} else
 | |
| 		if (strcmp(option, "-goto") == 0) {
 | |
| 			char *cm;
 | |
| 			int col, line;
 | |
| 
 | |
| 			col= atoi(id);
 | |
| 			if (++i == argc) usage();
 | |
| 			line= atoi(argv[i]);
 | |
| 
 | |
| 			if ((cm= tgetstr("cm", (pstr= string, &pstr))) == nil) {
 | |
| 				excode= 1;
 | |
| 			} else {
 | |
| 				excode= 0;
 | |
| 				tputs(tgoto(cm, col, line), 0, fputchar);
 | |
| 			}
 | |
| 		} else
 | |
| 		if (strcmp(option, "-echo") == 0) {
 | |
| 			fputs(id, stdout);
 | |
| 		} else {
 | |
| 			usage();
 | |
| 		}
 | |
| 	}
 | |
| 	exit(excode);
 | |
| }
 | 
