Module Name:    src
Committed By:   roy
Date:           Tue May 16 11:16:37 UTC 2017

Modified Files:
        src/lib/libterminfo: term.c

Log Message:
Remove ticcmp and extend _ti_checkname so it can be used instead.


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/lib/libterminfo/term.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libterminfo/term.c
diff -u src/lib/libterminfo/term.c:1.26 src/lib/libterminfo/term.c:1.27
--- src/lib/libterminfo/term.c:1.26	Tue May 16 10:29:06 2017
+++ src/lib/libterminfo/term.c	Tue May 16 11:16:37 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: term.c,v 1.26 2017/05/16 10:29:06 roy Exp $ */
+/* $NetBSD: term.c,v 1.27 2017/05/16 11:16:37 roy Exp $ */
 
 /*
  * Copyright (c) 2009, 2010, 2011 The NetBSD Foundation, Inc.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: term.c,v 1.26 2017/05/16 10:29:06 roy Exp $");
+__RCSID("$NetBSD: term.c,v 1.27 2017/05/16 11:16:37 roy Exp $");
 
 #include <sys/stat.h>
 
@@ -243,27 +243,32 @@ out:
 }
 
 static int
-_ti_checkname(const TERMINAL *term, const char *name)
+_ti_checkname(const char *name, const char *termname, const char *termalias)
 {
-	const char *a, *p;
-	size_t name_len;
+	const char *alias, *s;
+	size_t len, l;
 
 	/* Check terminal name matches. */
-	if (strcmp(name, term->name) == 0)
+	if (strcmp(termname, name) == 0)
 		return 1;
 
 	/* Check terminal aliases match. */
-	name_len = strlen(name);
-	for (a = term->_alias; a != NULL && *a != '\0'; a = p) {
-		for (p = a; *p != '\0'; p++) {
-			if (*p == '|')
-				break;
-		}
-		if ((size_t)(p - a) == name_len &&
-		    memcmp(name, a, name_len) == 0)
+	if (termalias == NULL)
+		return 0;
+
+	len = strlen(name);
+	alias = termalias;
+	while (*alias != '\0') {
+		s = strchr(alias, '|');
+		if (s == NULL)
+			l = strlen(alias);
+		else
+			l = (size_t)(s - alias);
+		if (len == l && memcmp(alias, name, l) == 0)
 			return 1;
-		if (*p == '|')
-			p++;
+		if (s == NULL)
+			break;
+		alias = s + 1;
 	}
 
 	/* No match. */
@@ -303,7 +308,7 @@ _ti_dbgetterm(TERMINAL *term, const char
 	r = _ti_readterm(term, data, len, flags);
 	/* Ensure that this is the right terminfo description. */
         if (r == 1)
-                r = _ti_checkname(term, name);
+                r = _ti_checkname(name, term->name, term->_alias);
 	/* Remember the database we read. */
         if (r == 1)
                 _ti_database = __ti_database;
@@ -341,34 +346,6 @@ _ti_dbgettermp(TERMINAL *term, const cha
 }
 
 static int
-ticcmp(const TIC *tic, const char *name)
-{
-	char *alias, *s;
-	size_t len, l;
-
-	if (strcmp(tic->name, name) == 0)
-		return 0;
-	if (tic->alias == NULL)
-		return -1;
-
-	len = strlen(name);
-	alias = tic->alias;
-	while (*alias != '\0') {
-		s = strchr(alias, '|');
-		if (s == NULL)
-			l = strlen(alias);
-		else
-			l = (size_t)(s - alias);
-		if (len == l && memcmp(alias, name, l) == 0)
-			return 0;
-		if (s == NULL)
-			break;
-		alias = s + 1;
-	}
-	return 1;
-}
-
-static int
 _ti_findterm(TERMINAL *term, const char *name, int flags)
 {
 	int r;
@@ -380,7 +357,6 @@ _ti_findterm(TERMINAL *term, const char 
 	_DIAGASSERT(term != NULL);
 	_DIAGASSERT(name != NULL);
 
-	__ti_database[0] = '\0';
 	_ti_database = NULL;
 	r = 0;
 
@@ -410,7 +386,9 @@ _ti_findterm(TERMINAL *term, const char 
 			    TIC_ALIAS | TIC_DESCRIPTION | TIC_EXTRA);
 			free(e);
 		}
-		if (tic != NULL && ticcmp(tic, name) == 0) {
+		if (tic != NULL &&
+		    _ti_checkname(name, tic->name, tic->alias) == 1)
+		{
 			len = _ti_flatten(&f, tic);
 			if (len != -1) {
 				r = _ti_readterm(term, (char *)f, (size_t)len,

Reply via email to