| 1 |  |  | /* $OpenBSD: lib_ti.c,v 1.7 2010/01/12 23:22:06 nicm Exp $ */ | 
    
    | 2 |  |  |  | 
    
    | 3 |  |  | /**************************************************************************** | 
    
    | 4 |  |  |  * Copyright (c) 1998-2000,2003 Free Software Foundation, Inc.              * | 
    
    | 5 |  |  |  *                                                                          * | 
    
    | 6 |  |  |  * Permission is hereby granted, free of charge, to any person obtaining a  * | 
    
    | 7 |  |  |  * copy of this software and associated documentation files (the            * | 
    
    | 8 |  |  |  * "Software"), to deal in the Software without restriction, including      * | 
    
    | 9 |  |  |  * without limitation the rights to use, copy, modify, merge, publish,      * | 
    
    | 10 |  |  |  * distribute, distribute with modifications, sublicense, and/or sell       * | 
    
    | 11 |  |  |  * copies of the Software, and to permit persons to whom the Software is    * | 
    
    | 12 |  |  |  * furnished to do so, subject to the following conditions:                 * | 
    
    | 13 |  |  |  *                                                                          * | 
    
    | 14 |  |  |  * The above copyright notice and this permission notice shall be included  * | 
    
    | 15 |  |  |  * in all copies or substantial portions of the Software.                   * | 
    
    | 16 |  |  |  *                                                                          * | 
    
    | 17 |  |  |  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  * | 
    
    | 18 |  |  |  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               * | 
    
    | 19 |  |  |  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   * | 
    
    | 20 |  |  |  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   * | 
    
    | 21 |  |  |  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    * | 
    
    | 22 |  |  |  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    * | 
    
    | 23 |  |  |  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               * | 
    
    | 24 |  |  |  *                                                                          * | 
    
    | 25 |  |  |  * Except as contained in this notice, the name(s) of the above copyright   * | 
    
    | 26 |  |  |  * holders shall not be used in advertising or otherwise to promote the     * | 
    
    | 27 |  |  |  * sale, use or other dealings in this Software without prior written       * | 
    
    | 28 |  |  |  * authorization.                                                           * | 
    
    | 29 |  |  |  ****************************************************************************/ | 
    
    | 30 |  |  |  | 
    
    | 31 |  |  | /**************************************************************************** | 
    
    | 32 |  |  |  *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               * | 
    
    | 33 |  |  |  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         * | 
    
    | 34 |  |  |  ****************************************************************************/ | 
    
    | 35 |  |  |  | 
    
    | 36 |  |  | #include <curses.priv.h> | 
    
    | 37 |  |  |  | 
    
    | 38 |  |  | #include <term_entry.h> | 
    
    | 39 |  |  | #include <tic.h> | 
    
    | 40 |  |  |  | 
    
    | 41 |  |  | MODULE_ID("$Id: lib_ti.c,v 1.7 2010/01/12 23:22:06 nicm Exp $") | 
    
    | 42 |  |  |  | 
    
    | 43 |  |  | NCURSES_EXPORT(int) | 
    
    | 44 |  |  | tigetflag(NCURSES_CONST char *str) | 
    
    | 45 |  |  | { | 
    
    | 46 |  |  |     unsigned i; | 
    
    | 47 |  |  |  | 
    
    | 48 |  |  |     T((T_CALLED("tigetflag(%s)"), str)); | 
    
    | 49 |  |  |  | 
    
    | 50 |  |  |     if (cur_term != 0) { | 
    
    | 51 |  |  | 	TERMTYPE *tp = &(cur_term->type); | 
    
    | 52 |  |  | 	for_each_boolean(i, tp) { | 
    
    | 53 |  |  | 	    const char *capname = ExtBoolname(tp, i, boolnames); | 
    
    | 54 |  |  | 	    if (!strcmp(str, capname)) { | 
    
    | 55 |  |  | 		/* setupterm forces invalid booleans to false */ | 
    
    | 56 |  |  | 		returnCode(tp->Booleans[i]); | 
    
    | 57 |  |  | 	    } | 
    
    | 58 |  |  | 	} | 
    
    | 59 |  |  |     } | 
    
    | 60 |  |  |  | 
    
    | 61 |  |  |     returnCode(ABSENT_BOOLEAN); | 
    
    | 62 |  |  | } | 
    
    | 63 |  |  |  | 
    
    | 64 |  |  | NCURSES_EXPORT(int) | 
    
    | 65 |  |  | tigetnum(NCURSES_CONST char *str) | 
    
    | 66 |  |  | { | 
    
    | 67 |  |  |     unsigned i; | 
    
    | 68 |  |  |  | 
    
    | 69 |  |  |     T((T_CALLED("tigetnum(%s)"), str)); | 
    
    | 70 |  |  |  | 
    
    | 71 |  |  |     if (cur_term != 0) { | 
    
    | 72 |  |  | 	TERMTYPE *tp = &(cur_term->type); | 
    
    | 73 |  |  | 	for_each_number(i, tp) { | 
    
    | 74 |  |  | 	    const char *capname = ExtNumname(tp, i, numnames); | 
    
    | 75 |  |  | 	    if (!strcmp(str, capname)) { | 
    
    | 76 |  |  | 		if (!VALID_NUMERIC(tp->Numbers[i])) | 
    
    | 77 |  |  | 		    returnCode(ABSENT_NUMERIC); | 
    
    | 78 |  |  | 		returnCode(tp->Numbers[i]); | 
    
    | 79 |  |  | 	    } | 
    
    | 80 |  |  | 	} | 
    
    | 81 |  |  |     } | 
    
    | 82 |  |  |  | 
    
    | 83 |  |  |     returnCode(CANCELLED_NUMERIC);	/* Solaris returns a -1 instead */ | 
    
    | 84 |  |  | } | 
    
    | 85 |  |  |  | 
    
    | 86 |  |  | NCURSES_EXPORT(char *) | 
    
    | 87 |  |  | tigetstr(NCURSES_CONST char *str) | 
    
    | 88 |  |  | { | 
    
    | 89 |  |  |     unsigned i; | 
    
    | 90 |  |  |  | 
    
    | 91 |  |  |     T((T_CALLED("tigetstr(%s)"), str)); | 
    
    | 92 |  |  |  | 
    
    | 93 |  |  |     if (cur_term != 0) { | 
    
    | 94 |  |  | 	TERMTYPE *tp = &(cur_term->type); | 
    
    | 95 |  |  | 	for_each_string(i, tp) { | 
    
    | 96 |  |  | 	    const char *capname = ExtStrname(tp, i, strnames); | 
    
    | 97 |  |  | 	    if (!strcmp(str, capname)) { | 
    
    | 98 |  |  | 		/* setupterm forces cancelled strings to null */ | 
    
    | 99 |  |  | 		returnPtr(tp->Strings[i]); | 
    
    | 100 |  |  | 	    } | 
    
    | 101 |  |  | 	} | 
    
    | 102 |  |  |     } | 
    
    | 103 |  |  |  | 
    
    | 104 |  |  |     returnPtr(CANCELLED_STRING); | 
    
    | 105 |  |  | } |