summaryrefslogtreecommitdiffstats
path: root/lib/libmytinfo/buildpath.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libmytinfo/buildpath.c')
-rw-r--r--lib/libmytinfo/buildpath.c198
1 files changed, 0 insertions, 198 deletions
diff --git a/lib/libmytinfo/buildpath.c b/lib/libmytinfo/buildpath.c
deleted file mode 100644
index 4e6f529..0000000
--- a/lib/libmytinfo/buildpath.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * buildpath.c
- *
- * By Ross Ridge
- * Public Domain
- * 92/02/01 07:29:42
- *
- * _buildpath builds a list of file names and terminal descriprions extracted
- * from its arguments. It returns a pointer to a structure that is used by
- * other routines as the list of file names to search for terminal
- * descriptions. It is passed a variable number of arguments consisting
- * of file name and type pairs. The file name can actually be a list of
- * file names seperated by spaces and any environment variables specified
- * by a dollar sign ($) followed by its name are substituted in. A type
- * of 1 indicates that the file name may actually be termcap description
- * and a type of 2 indicates it may be a terminfo description. A type of 0
- * indicates that the file name can only be a file name (or list of them).
- *
- */
-
-#include "defs.h"
-
-#include <ctype.h>
-
-#ifdef USE_SCCS_IDS
-static const char SCCSid[] = "@(#) mytinfo buildpath.c 3.2 92/02/01 public domain, By Ross Ridge";
-#endif
-
-/* more memory is allocated for file names every HUNK file names */
-#define HUNK 32
-
-/* characters that seperate file names in a list */
-#define SEPERATORS " :"
-
-static struct term_path *path = NULL; /* the list of files */
-static int files = 0; /* # of files in the list */
-static int size = 0; /* # of files there is space for */
-
-/* add a file name, type pair to the list */
-static int
-addfile(file, type)
-char *file;
-int type; {
- int l;
- char *s;
-
- if (file == NULL) {
- if (type != -1)
- return -1;
- } else if (file[0] == '\0')
- return -1;
-
-#ifdef DEBUG
- if (file != NULL)
- printf("addfile: %s\n", file);
-#endif
-
- if (files >= size) {
- size += HUNK;
- path = (struct term_path *) reallocf((anyptr) path,
- size * sizeof(struct term_path));
- if (path == NULL)
- return 0;
- }
- if (file == NULL) {
- path[files].file = file;
- } else {
- l = strlen(file) + 1;
- s = (char *) malloc(l * sizeof(char));
- if (s == NULL)
- return 0;
- path[files].file = strcpy(s, file);
- }
- path[files].type = type;
-
- return ++files;
-}
-
-/* deallocate space used by the path list */
-void
-_delpath(ppath)
-struct term_path *ppath; {
- struct term_path *p;
-
- p = ppath;
- while(p->file != NULL) {
- free((anyptr)p->file);
- p++;
- }
-
- free((anyptr)ppath);
-}
-
-/* build a list of paths. see above */
-#ifdef lint
-/*VARARGS2*/
-struct term_path *
-_buildpath(file, type)
-char *file;
-int type;
-#else
-#ifdef USE_STDARG
-#ifdef USE_PROTOTYPES
-struct term_path *_buildpath(char *file, int type, ...)
-#else
-struct term_path *_buildpath(file, type)
-char *file;
-int type;
-#endif /* USE_PROTOTYPES */
-#else /* USE_STDARG */
-struct term_path *_buildpath(va_alist)
-va_dcl
-#endif /* USE_STDARG */
-#endif /* lint */
-{
-#ifndef lint
-#ifndef USE_STDARG
- char *file;
- int type;
-#endif
-#endif
- va_list ap;
- register char *s, *d, *e;
- char *p;
- char line[MAX_BUF+1];
- char name[MAX_NAME+1];
- int i,j;
-
- size = 0;
- files = 0;
- path = NULL;
-
-#ifdef lint
- ap = NULL;
-#else
-#ifdef USE_STDARG
- va_start(ap, type);
-#else
- va_start(ap);
- file = va_arg(ap, char *);
- type = va_arg(ap, int);
-#endif
-#endif
-
- while (type >= 0 && type <= 2) {
- s = file;
- d = line;
- i = 0;
- while(*s != '\0') {
- if (*s == '$') {
- s++;
- j = 0;
- while(*s != '\0' && (*s == '_' || isalnum(*s)))
- if (j < MAX_NAME) {
- name[j] = *s++;
- j++;
- } else
- break;
- name[j] = '\0';
- e = getenv(name);
- if (e != NULL) {
- while(*e != '\0') {
- if (i < MAX_BUF) {
- *d++ = *e++;
- i++;
- } else
- break;
- }
- } else if (*s == '/')
- s++;
- } else {
- if (i < MAX_BUF) {
- *d++ = *s++;
- i++;
- } else
- break;
- }
- }
- *d = '\0';
- if (type == 0 || line[0] == '/') {
- p = line;
- while ((s = strsep(&p, SEPERATORS)) != NULL && *s == '\0')
- ;
- while(s != NULL) {
- if (addfile(s, 0) == 0)
- return NULL;
- while ((s = strsep(&p, SEPERATORS)) != NULL && *s == '\0')
- ;
- }
- } else
- if (addfile(line, type) == 0)
- return NULL;
- file = va_arg(ap, char *);
- type = va_arg(ap, int);
- }
- addfile(NULL, -1);
- return path;
-}
OpenPOWER on IntegriCloud