From 4fe3960478a0c1098bb7e7ed5a701c4fe2998ac9 Mon Sep 17 00:00:00 2001
From: Russell Bryant <russell@russellbryant.com>
Date: Fri, 5 May 2006 21:01:39 +0000
Subject: [PATCH] move ast_carefulwrite from manager.c to utils.c so that cli.c
 and res_agi.c no longer depend on manager.h (issue #6397, casper)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@25026 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 cli.c                      |  1 -
 include/asterisk/manager.h |  2 --
 include/asterisk/utils.h   | 11 +++++++++++
 manager.c                  | 32 --------------------------------
 res/res_agi.c              |  1 -
 utils.c                    | 28 ++++++++++++++++++++++++++++
 6 files changed, 39 insertions(+), 36 deletions(-)

diff --git a/cli.c b/cli.c
index 333286dad9..09803954f5 100644
--- a/cli.c
+++ b/cli.c
@@ -44,7 +44,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/module.h"
 #include "asterisk/pbx.h"
 #include "asterisk/channel.h"
-#include "asterisk/manager.h"
 #include "asterisk/utils.h"
 #include "asterisk/app.h"
 #include "asterisk/lock.h"
diff --git a/include/asterisk/manager.h b/include/asterisk/manager.h
index 4541e7f173..71b5a59662 100644
--- a/include/asterisk/manager.h
+++ b/include/asterisk/manager.h
@@ -81,8 +81,6 @@ struct manager_action {
 	struct manager_action *next;
 };
 
-int ast_carefulwrite(int fd, char *s, int len, int timeoutms);
-
 /* External routines may register/unregister manager callbacks this way */
 #define ast_manager_register(a, b, c, d) ast_manager_register2(a, b, c, d, NULL)
 
diff --git a/include/asterisk/utils.h b/include/asterisk/utils.h
index 9a61f573b7..d2db42e07d 100644
--- a/include/asterisk/utils.h
+++ b/include/asterisk/utils.h
@@ -217,6 +217,17 @@ const char *ast_inet_ntoa(char *buf, int bufsiz, struct in_addr ia);
 int ast_utils_init(void);
 int ast_wait_for_input(int fd, int ms);
 
+/*! ast_carefulwrite
+	\brief Try to write string, but wait no more than ms milliseconds
+	before timing out.
+
+	\note If you are calling ast_carefulwrite, it is assumed that you are calling
+	it on a file descriptor that _DOES_ have NONBLOCK set.  This way,
+	there is only one system call made to do a write, unless we actually
+	have a need to wait.  This way, we get better performance.
+*/
+int ast_carefulwrite(int fd, char *s, int len, int timeoutms);
+
 /*! Compares the source address and port of two sockaddr_in */
 static force_inline int inaddrcmp(const struct sockaddr_in *sin1, const struct sockaddr_in *sin2)
 {
diff --git a/manager.c b/manager.c
index 06f996ab08..bf70166726 100644
--- a/manager.c
+++ b/manager.c
@@ -168,38 +168,6 @@ static struct mansession {
 static struct manager_action *first_action = NULL;
 AST_MUTEX_DEFINE_STATIC(actionlock);
 
-/*! If you are calling ast_carefulwrite, it is assumed that you are calling
-   it on a file descriptor that _DOES_ have NONBLOCK set.  This way,
-   there is only one system call made to do a write, unless we actually
-   have a need to wait.  This way, we get better performance. */
-int ast_carefulwrite(int fd, char *s, int len, int timeoutms) 
-{
-	/* Try to write string, but wait no more than ms milliseconds
-	   before timing out */
-	int res = 0;
-	struct pollfd fds[1];
-	while (len) {
-		res = write(fd, s, len);
-		if ((res < 0) && (errno != EAGAIN)) {
-			return -1;
-		}
-		if (res < 0)
-			res = 0;
-		len -= res;
-		s += res;
-		res = 0;
-		if (len) {
-			fds[0].fd = fd;
-			fds[0].events = POLLOUT;
-			/* Wait until writable again */
-			res = poll(fds, 1, timeoutms);
-			if (res < 1)
-				return -1;
-		}
-	}
-	return res;
-}
-
 /*! authority_to_str: Convert authority code to string with serveral options */
 static char *authority_to_str(int authority, char *res, int reslen)
 {
diff --git a/res/res_agi.c b/res/res_agi.c
index 0b88b892c6..c4df2421e1 100644
--- a/res/res_agi.c
+++ b/res/res_agi.c
@@ -59,7 +59,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/app.h"
 #include "asterisk/dsp.h"
 #include "asterisk/musiconhold.h"
-#include "asterisk/manager.h"
 #include "asterisk/utils.h"
 #include "asterisk/lock.h"
 #include "asterisk/strings.h"
diff --git a/utils.c b/utils.c
index 807df16b2b..ccc87f21dd 100644
--- a/utils.c
+++ b/utils.c
@@ -591,6 +591,34 @@ int ast_wait_for_input(int fd, int ms)
 	return poll(pfd, 1, ms);
 }
 
+int ast_carefulwrite(int fd, char *s, int len, int timeoutms) 
+{
+	/* Try to write string, but wait no more than ms milliseconds
+	   before timing out */
+	int res = 0;
+	struct pollfd fds[1];
+	while (len) {
+		res = write(fd, s, len);
+		if ((res < 0) && (errno != EAGAIN)) {
+			return -1;
+		}
+		if (res < 0)
+			res = 0;
+		len -= res;
+		s += res;
+		res = 0;
+		if (len) {
+			fds[0].fd = fd;
+			fds[0].events = POLLOUT;
+			/* Wait until writable again */
+			res = poll(fds, 1, timeoutms);
+			if (res < 1)
+				return -1;
+		}
+	}
+	return res;
+}
+
 char *ast_strip_quoted(char *s, const char *beg_quotes, const char *end_quotes)
 {
 	char *e;
-- 
GitLab