aboutsummaryrefslogtreecommitdiff
path: root/contrib/ncurses/ncurses/tinfo/db_iterator.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ncurses/ncurses/tinfo/db_iterator.c')
-rw-r--r--contrib/ncurses/ncurses/tinfo/db_iterator.c225
1 files changed, 0 insertions, 225 deletions
diff --git a/contrib/ncurses/ncurses/tinfo/db_iterator.c b/contrib/ncurses/ncurses/tinfo/db_iterator.c
deleted file mode 100644
index fdc2bb09eadc..000000000000
--- a/contrib/ncurses/ncurses/tinfo/db_iterator.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/****************************************************************************
- * Copyright (c) 2006,2007 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: Thomas E. Dickey *
- ****************************************************************************/
-
-/*
- * Iterators for terminal databases.
- */
-
-#include <curses.priv.h>
-
-#include <tic.h>
-
-MODULE_ID("$Id: db_iterator.c,v 1.6 2007/04/22 00:00:26 tom Exp $")
-
-#define HaveTicDirectory _nc_globals.have_tic_directory
-#define KeepTicDirectory _nc_globals.keep_tic_directory
-#define TicDirectory _nc_globals.tic_directory
-
-/*
- * Record the "official" location of the terminfo directory, according to
- * the place where we're writing to, or the normal default, if not.
- */
-NCURSES_EXPORT(const char *)
-_nc_tic_dir(const char *path)
-{
- if (!KeepTicDirectory) {
- if (path != 0) {
- TicDirectory = path;
- HaveTicDirectory = TRUE;
- } else if (!HaveTicDirectory && use_terminfo_vars()) {
- char *envp;
- if ((envp = getenv("TERMINFO")) != 0)
- return _nc_tic_dir(envp);
- }
- }
- return TicDirectory;
-}
-
-/*
- * Special fix to prevent the terminfo directory from being moved after tic
- * has chdir'd to it. If we let it be changed, then if $TERMINFO has a
- * relative path, we'll lose track of the actual directory.
- */
-NCURSES_EXPORT(void)
-_nc_keep_tic_dir(const char *path)
-{
- _nc_tic_dir(path);
- KeepTicDirectory = TRUE;
-}
-
-/*
- * Process the list of :-separated directories, looking for the terminal type.
- * We don't use strtok because it does not show us empty tokens.
- */
-#define ThisDbList _nc_globals.dbi_list
-#define ThisDbSize _nc_globals.dbi_size
-
-/*
- * Cleanup.
- */
-NCURSES_EXPORT(void)
-_nc_last_db(void)
-{
- if (ThisDbList != 0) {
- FreeAndNull(ThisDbList);
- }
- ThisDbSize = 0;
-}
-
-/* The TERMINFO_DIRS value, if defined by the configure script, begins with a
- * ":", which will be interpreted as TERMINFO.
- */
-static const char *
-next_list_item(const char *source, int *offset)
-{
- if (source != 0) {
- FreeIfNeeded(ThisDbList);
- ThisDbList = strdup(source);
- ThisDbSize = strlen(source);
- }
-
- if (ThisDbList != 0 && ThisDbSize && *offset < ThisDbSize) {
- static char system_db[] = TERMINFO;
- char *result = ThisDbList + *offset;
- char *marker = strchr(result, NCURSES_PATHSEP);
-
- /*
- * Put a null on the marker if a separator was found. Set the offset
- * to the next position after the marker so we can call this function
- * again, using the data at the offset.
- */
- if (marker == 0) {
- *offset += strlen(result) + 1;
- marker = result + *offset;
- } else {
- *marker++ = 0;
- *offset = marker - ThisDbList;
- }
- if (*result == 0 && result != (ThisDbList + ThisDbSize))
- result = system_db;
- return result;
- }
- return 0;
-}
-
-#define NEXT_DBD(var, offset) next_list_item((*offset == 0) ? var : 0, offset)
-
-/*
- * This is a simple iterator which allows the caller to step through the
- * possible locations for a terminfo directory. ncurses uses this to find
- * terminfo files to read.
- */
-NCURSES_EXPORT(const char *)
-_nc_next_db(DBDIRS * state, int *offset)
-{
- const char *result;
- char *envp;
-
- while (*state < dbdLAST) {
- DBDIRS next = (DBDIRS) ((int) (*state) + 1);
-
- result = 0;
-
- switch (*state) {
- case dbdTIC:
- if (HaveTicDirectory)
- result = _nc_tic_dir(0);
- break;
-#if USE_DATABASE
- case dbdEnvOnce:
- if (use_terminfo_vars()) {
- if ((envp = getenv("TERMINFO")) != 0)
- result = _nc_tic_dir(envp);
- }
- break;
- case dbdHome:
- if (use_terminfo_vars()) {
- result = _nc_home_terminfo();
- }
- break;
- case dbdEnvList:
- if (use_terminfo_vars()) {
- if ((result = NEXT_DBD(getenv("TERMINFO_DIRS"), offset)) != 0)
- next = *state;
- }
- break;
- case dbdCfgList:
-#ifdef TERMINFO_DIRS
- if ((result = NEXT_DBD(TERMINFO_DIRS, offset)) != 0)
- next = *state;
-#endif
- break;
- case dbdCfgOnce:
-#ifndef TERMINFO_DIRS
- result = TERMINFO;
-#endif
- break;
-#endif /* USE_DATABASE */
-#if USE_TERMCAP
- case dbdEnvOnce2:
- if (use_terminfo_vars()) {
- if ((envp = getenv("TERMCAP")) != 0)
- result = _nc_tic_dir(envp);
- }
- break;
- case dbdEnvList2:
- if (use_terminfo_vars()) {
- if ((result = NEXT_DBD(getenv("TERMPATH"), offset)) != 0)
- next = *state;
- }
- break;
- case dbdCfgList2:
- if ((result = NEXT_DBD(TERMPATH, offset)) != 0)
- next = *state;
- break;
-#endif /* USE_TERMCAP */
- case dbdLAST:
- break;
- }
- if (*state != next) {
- *state = next;
- *offset = 0;
- _nc_last_db();
- }
- if (result != 0) {
- return result;
- }
- }
- return 0;
-}
-
-NCURSES_EXPORT(void)
-_nc_first_db(DBDIRS * state, int *offset)
-{
- *state = dbdTIC;
- *offset = 0;
-}