1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-24 04:33:24 +00:00
freebsd-ports/net/iaxmodem/files/patch-iaxmodem.c
Raphael Kubo da Costa c801875fa4 Implement upstream fix where multiple net/iaxmodem instances are spawned.
Multiple instances of iaxmodem are being spawned due to a badly placed
closedir call. The fix has been submitted (and accepted) upstream, however
there has been no new release since the fix was submitted.

PR:		ports/176178
Submitted by:	John Bayly <freebsd.ports@tipstrade.net>
Approved by:	maintainer timeout (93 days)
2013-05-18 23:09:58 +00:00

69 lines
1.2 KiB
C

--- iaxmodem.c.orig 2007-10-06 12:22:04.000000000 -0400
+++ iaxmodem.c 2007-11-06 23:54:40.000000000 -0500
@@ -21,17 +21,18 @@
#include <string.h>
#include <strings.h>
-#ifndef __OpenBSD__
+#if !defined(__OpenBSD__) && !defined(__FreeBSD__)
# ifndef USE_UNIX98_PTY
# include <pty.h>
# endif /* !USE_UNIX98_PTY */
#else
+#include <termios.h>
+#if !defined(__FreeBSD__)
# include <util.h>
#endif
+#endif
-#include <termios.h>
-
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
@@ -53,6 +54,26 @@
#include <math.h>
#include <stdint.h>
+
+#ifdef __FreeBSD__
+#include <libutil.h>
+char* strndup(const char* string, size_t n)
+{
+ char* copy_string = 0;
+
+ if(0 == string || 0 == n)
+ return 0;
+
+ copy_string = (char*) malloc(n + 1);
+ if(0 == copy_string)
+ return 0;
+
+ memcpy(copy_string, string, n);
+ *(copy_string + n) = '\0';
+
+ return copy_string;
+}
+#endif
#include <tiffio.h>
#ifndef O_LARGEFILE
@@ -1645,8 +1666,6 @@
}
}
- closedir(cfdir);
-
if (pid == 0) {
/* Start the modem */
iaxmodem(config, 0);
@@ -1654,6 +1673,8 @@
return 1;
}
+ closedir(cfdir);
+
return 0;
}