Annotation of src/lib/libterminfo/ti.c, revision 1.2
1.2 ! roy 1: /* $NetBSD: ti.c,v 1.1 2010/02/03 15:16:32 roy Exp $ */
1.1 roy 2:
3: /*
4: * Copyright (c) 2009 The NetBSD Foundation, Inc.
5: *
6: * This id is derived from software contributed to The NetBSD Foundation
7: * by Roy Marples.
8: *
9: * Redistribution and use in source and binary forms, with or without
10: * modification, are permitted provided that the following conditions
11: * are met:
12: * 1. Redistributions of source id must retain the above copyright
13: * notice, this list of conditions and the following disclaimer.
14: * 2. Redistributions in binary form must reproduce the above copyright
15: * notice, this list of conditions and the following disclaimer in the
16: * documentation and/or other materials provided with the distribution.
17: *
18: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28: */
29:
30: #include <sys/cdefs.h>
1.2 ! roy 31: __RCSID("$NetBSD: ti.c,v 1.1 2010/02/03 15:16:32 roy Exp $");
1.1 roy 32:
33: #include <assert.h>
34: #include <string.h>
35: #include <term_private.h>
36: #include <term.h>
37:
38: int
39: ti_getflag(const TERMINAL *term, const char *id)
40: {
41: ssize_t ind;
42: size_t i;
43: TERMUSERDEF *ud;
44:
45: _DIAGASSERT(term != NULL);
46: _DIAGASSERT(id != NULL);
47:
48: ind = _ti_flagindex(id);
49: if (ind != -1)
50: return term->flags[ind];
51: for (i = 0; i < term->_nuserdefs; i++) {
52: ud = &term->_userdefs[i];
53: if (ud->type == 'f' && strcmp(ud->id, id) == 0)
54: return ud->flag;
55: }
56: return ABSENT_BOOLEAN;
57: }
58:
59: int
60: tigetflag(const char *id)
61: {
62:
63: _DIAGASSERT(id != NULL);
64: if (cur_term != NULL)
65: return ti_getflag(cur_term, id);
66: return ABSENT_BOOLEAN;
67: }
68:
69: int
70: ti_getnum(const TERMINAL *term, const char *id)
71: {
72: ssize_t ind;
73: size_t i;
74: TERMUSERDEF *ud;
75:
76: _DIAGASSERT(term != NULL);
77: _DIAGASSERT(id != NULL);
78:
79: ind = _ti_numindex(id);
80: if (ind != -1) {
81: if (!VALID_NUMERIC(term->nums[ind]))
82: return ABSENT_NUMERIC;
83: return term->nums[ind];
84: }
85: for (i = 0; i < term->_nuserdefs; i++) {
86: ud = &term->_userdefs[i];
87: if (ud->type == 'n' && strcmp(ud->id, id) == 0) {
88: if (!VALID_NUMERIC(ud->num))
89: return ABSENT_NUMERIC;
90: return ud->num;
91: }
92: }
93: return CANCELLED_NUMERIC;
94: }
95:
96: int
97: tigetnum(const char *id)
98: {
99:
100: _DIAGASSERT(id != NULL);
101: if (cur_term != NULL)
102: return ti_getnum(cur_term, id);
103: return CANCELLED_NUMERIC;
104: }
105:
106: const char *
107: ti_getstr(const TERMINAL *term, const char *id)
108: {
109: ssize_t ind;
110: size_t i;
111: TERMUSERDEF *ud;
112:
113: _DIAGASSERT(term != NULL);
114: _DIAGASSERT(id != NULL);
115:
116: ind = _ti_strindex(id);
117: if (ind != -1)
118: return term->strs[ind];
119: for (i = 0; i < term->_nuserdefs; i++) {
120: ud = &term->_userdefs[i];
121: if (ud->type == 's' && strcmp(ud->id, id) == 0)
122: return ud->str;
123: }
124: return (const char *)CANCELLED_STRING;
125: }
126:
127: char *
128: tigetstr(const char *id)
129: {
130:
131: _DIAGASSERT(id != NULL);
132: if (cur_term != NULL)
133: return __UNCONST(ti_getstr(cur_term, id));
134: return (char *)CANCELLED_STRING;
135: }
CVSweb <webmaster@jp.NetBSD.org>