[PATCH 10/11] input: dahdi: replace exit by return

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

pablo at gnumonks.org pablo at gnumonks.org
Wed Aug 22 15:04:52 UTC 2012


From: Pablo Neira Ayuso <pablo at gnumonks.org>

This is a library, we leave up to the client code to decide when to
finish the code execution.
---
 src/input/dahdi.c |   22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/input/dahdi.c b/src/input/dahdi.c
index ff5cb80..8d3e060 100644
--- a/src/input/dahdi.c
+++ b/src/input/dahdi.c
@@ -425,14 +425,14 @@ struct e1inp_driver dahdi_driver = {
 	.vty_show = &dahdi_vty_show,
 };
 
-void dahdi_set_bufinfo(int fd, int as_sigchan)
+int dahdi_set_bufinfo(int fd, int as_sigchan)
 {
 	struct dahdi_bufferinfo bi;
 	int x = 0;
 
 	if (ioctl(fd, DAHDI_GET_BUFINFO, &bi)) {
 		LOGP(DLINP, LOGL_ERROR, "Error getting bufinfo\n");
-		exit(-1);
+		return -EIO;
 	}
 
 	if (as_sigchan) {
@@ -446,13 +446,13 @@ void dahdi_set_bufinfo(int fd, int as_sigchan)
 
 	if (ioctl(fd, DAHDI_SET_BUFINFO, &bi)) {
 		LOGP(DLINP, LOGL_ERROR, "Error setting bufinfo\n");
-		exit(-1);
+		return -EIO;
 	}
 
 	if (!as_sigchan) {
 		if (ioctl(fd, DAHDI_AUDIOMODE, &x)) {
 			LOGP(DLINP, LOGL_ERROR, "Error setting bufinfo\n");
-			exit(-1);
+			return -EIO;
 		}
 	} else {
 		int one = 1;
@@ -461,6 +461,7 @@ void dahdi_set_bufinfo(int fd, int as_sigchan)
 		 * as this command will fail if the slot _already_ was a
 		 * signalling slot before :( */
 	}
+	return 0;
 }
 
 static int dahdi_e1_setup(struct e1inp_line *line)
@@ -522,10 +523,13 @@ static int dahdi_e1_setup(struct e1inp_line *line)
 				LOGP(DLINP, LOGL_ERROR,
 					"%s could not open %s %s\n",
 					__func__, openstr, strerror(errno));
-				exit(-1);
+				return -EIO;
 			}
 			bfd->when = BSC_FD_READ | BSC_FD_EXCEPT;
-			dahdi_set_bufinfo(bfd->fd, 1);
+			ret = dahdi_set_bufinfo(bfd->fd, 1);
+			if (ret < 0)
+				return ret;
+
 			if (!e1i_ts->lapd)
 				e1i_ts->lapd = lapd_instance_alloc(1,
 					dahdi_write_msg, bfd, e1inp_dlsap_up,
@@ -543,9 +547,11 @@ static int dahdi_e1_setup(struct e1inp_line *line)
 				LOGP(DLINP, LOGL_ERROR,
 					"%s could not open %s %s\n",
 					__func__, openstr, strerror(errno));
-				exit(-1);
+				return -EIO;
 			}
-			dahdi_set_bufinfo(bfd->fd, 0);
+			ret = dahdi_set_bufinfo(bfd->fd, 0);
+			if (ret < 0)
+				return -EIO;
 			/* We never include the DAHDI B-Channel FD into the
 			 * writeset, since it doesn't support poll() based
 			 * write flow control */
-- 
1.7.10.4





More information about the OpenBSC mailing list