From 9748a7013104aabb51a997cb4181babf65d8a98b Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Fri, 9 May 2003 21:53:43 +0000
Subject: [PATCH] ansi_getxy() now returns bool instead of void (false on
 timeout).

---
 src/sbbs3/ansiterm.cpp | 18 ++++++++++++------
 src/sbbs3/sbbs.h       |  2 +-
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/sbbs3/ansiterm.cpp b/src/sbbs3/ansiterm.cpp
index 99da18673f..8b1620b0bf 100644
--- a/src/sbbs3/ansiterm.cpp
+++ b/src/sbbs3/ansiterm.cpp
@@ -107,7 +107,7 @@ void sbbs_t::ansi_getlines()
 	}
 }
 
-void sbbs_t::ansi_getxy(int* x, int* y)
+bool sbbs_t::ansi_getxy(int* x, int* y)
 {
 	int 	rsp=0, ch;
 
@@ -129,8 +129,10 @@ void sbbs_t::ansi_getxy(int* x, int* y)
 				start=time(NULL);
 			}
             else if(isdigit(ch) && rsp==2) {
-               	(*y)*=10;
-                (*y)+=(ch&0xf);
+				if(y!=NULL) {
+               		(*y)*=10;
+					(*y)+=(ch&0xf);
+				}
 				start=time(NULL);
             }
             else if(ch==';' && rsp>=2) {
@@ -138,8 +140,10 @@ void sbbs_t::ansi_getxy(int* x, int* y)
 				start=time(NULL);
 			}
             else if(isdigit(ch) && rsp==3) {
-            	(*x)*=10;
-                (*x)+=(ch&0xf);
+				if(x!=NULL) {
+            		(*x)*=10;
+					(*x)+=(ch&0xf);
+				}
 				start=time(NULL);
             }
             else if(ch=='R' && rsp)
@@ -149,7 +153,9 @@ void sbbs_t::ansi_getxy(int* x, int* y)
         }
     	if(time(NULL)-start>TIMEOUT_ANSI_GETXY) {
         	lprintf("Node %d !TIMEOUT in ansi_getxy", cfg.node_num);
-            break;
+            return(false);
         }
     }
+
+	return(true);
 }
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index d66a2c0d4f..5f7d24c14d 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -338,7 +338,7 @@ public:
 
     /* ansi_term.cpp */
 	char *	ansi(int atr);			/* Returns ansi escape sequence for atr */
-    void	ansi_getxy(int* x, int* y);
+    bool	ansi_getxy(int* x, int* y);
 	void	ansi_getlines(void);
 
 			/* Command Shell Methods */
-- 
GitLab