]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/tinfo/lib_tgoto.c
ncurses 6.5 - patch 20240525
[ncurses.git] / ncurses / tinfo / lib_tgoto.c
index 4173d74efcddac2ab79791ce5125cbf19a8405f8..58b561fa7c781610ee030d2a075466fe320d922f 100644 (file)
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 2000-2018,2019 Free Software Foundation, Inc.              *
+ * Copyright 2018-2020,2023 Thomas E. Dickey                                *
+ * Copyright 2000-2008,2012 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            *
@@ -35,7 +36,7 @@
 #include <ctype.h>
 #include <termcap.h>
 
-MODULE_ID("$Id: lib_tgoto.c,v 1.18 2019/10/26 22:43:48 tom Exp $")
+MODULE_ID("$Id: lib_tgoto.c,v 1.23 2023/04/16 17:19:40 tom Exp $")
 
 #if !PURE_TERMINFO
 static bool
@@ -206,6 +207,16 @@ tgoto(const char *string, int x, int y)
        result = tgoto_internal(string, x, y);
     else
 #endif
-       result = TPARM_2(string, y, x);
+    if ((result = TIPARM_2(string, y, x)) == NULL) {
+       /*
+        * Because termcap did not provide a more general solution such as
+        * tparm(), it was necessary to handle single-parameter capabilities
+        * using tgoto().  The internal _nc_tiparm() function returns a NULL
+        * for that case; retry for the single-parameter case.
+        */
+       if ((result = TIPARM_1(string, y)) == NULL) {
+           result = TIPARM_0(string);
+       }
+    }
     returnPtr(result);
 }