Patchwork [RFC] Darwin: Fix compilation warning regarding the deprecated daemon() function

login
register
mail settings
Submitter Alexandre Raymond
Date June 2, 2011, 2:45 a.m.
Message ID <1306982755-19553-1-git-send-email-cerbere@gmail.com>
Download mbox | patch
Permalink /patch/98326/
State New
Headers show

Comments

Alexandre Raymond - June 2, 2011, 2:45 a.m.
On OSX > 10.5, daemon() is deprecated, resulting int he following warning:
----8<----
qemu-nbd.c: In function ‘main’:
qemu-nbd.c:371: warning: ‘daemon’ is deprecated (declared at /usr/include/stdlib.h:289)
----8<----

The following trick, used in mDNSResponder, takes care of this warning:
http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-258.18/mDNSPosix/PosixDaemon.c

Signed-off-by: Alexandre Raymond <cerbere@gmail.com>
---
 qemu-nbd.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
Andreas Färber - June 2, 2011, 12:09 p.m.
Am 02.06.2011 um 04:45 schrieb Alexandre Raymond:

> On OSX > 10.5, daemon() is deprecated, resulting int he following  
> warning:

 >= 10.5

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ 
ManPages/man3/daemon.3.html

> ----8<----
> qemu-nbd.c: In function ‘main’:
> qemu-nbd.c:371: warning: ‘daemon’ is deprecated (declared at /usr/ 
> include/stdlib.h:289)
> ----8<----
>
> The following trick, used in mDNSResponder, takes care of this  
> warning:
> http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-258.18/mDNSPosix/PosixDaemon.c

Even if apparently applied by Apple themselves, I consider it a bad  
hack for curing symptoms.

http://developer.apple.com/library/mac/technotes/tn2083/_index.html#// 
apple_ref/doc/uid/DTS10003794-CH1-SUBSECTION64

Possibly a better fix would be to supply a .plist file for use with  
launchd/launchctl and to #ifndef __APPLE__ the daemon() functionality?

Further comments inline.

> Signed-off-by: Alexandre Raymond <cerbere@gmail.com>
> ---
> qemu-nbd.c |    9 +++++++++
> 1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/qemu-nbd.c b/qemu-nbd.c
> index e858033..10b0791 100644
> --- a/qemu-nbd.c
> +++ b/qemu-nbd.c
> @@ -16,6 +16,10 @@
>  *  along with this program; if not, see <http://www.gnu.org/ 
> licenses/>.
>  */
>
> +#if __APPLE__

#ifdef __APPLE__

> +#define daemon fake_daemon_function
> +#endif
> +
> #include <qemu-common.h>
> #include "block_int.h"
> #include "nbd.h"
> @@ -32,6 +36,11 @@
> #include <signal.h>
> #include <libgen.h>
>
> +#if __APPLE__

dito

> +#undef daemon
> +extern int daemon(int, int);

Blue Swirl has declared war on "extern"... ;)

> +#endif
> +
> #define SOCKET_PATH    "/var/lock/qemu-nbd-%s"
>
> #define NBD_BUFFER_SIZE (1024*1024)
> -- 
> 1.7.5

Andreas
Alexandre Raymond - June 2, 2011, 1:34 p.m.
Hi Andreas,

On Thu, Jun 2, 2011 at 8:09 AM, Andreas Färber <andreas.faerber@web.de> wrote:
> Am 02.06.2011 um 04:45 schrieb Alexandre Raymond:
>
>> On OSX > 10.5, daemon() is deprecated, resulting int he following warning:
>
>>= 10.5
>
> http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/daemon.3.html
>
>> ----8<----
>> qemu-nbd.c: In function ‘main’:
>> qemu-nbd.c:371: warning: ‘daemon’ is deprecated (declared at
>> /usr/include/stdlib.h:289)
>> ----8<----
>>
>> The following trick, used in mDNSResponder, takes care of this warning:
>>
>> http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-258.18/mDNSPosix/PosixDaemon.c
>
> Even if apparently applied by Apple themselves, I consider it a bad hack for
> curing symptoms.
>
> http://developer.apple.com/library/mac/technotes/tn2083/_index.html#//apple_ref/doc/uid/DTS10003794-CH1-SUBSECTION64

I agree that this is a nasty hack. It's really up to you guys. I can
try to modify this patch to use launchd instead.

Alexandre
Peter Maydell - June 2, 2011, 1:55 p.m.
On 2 June 2011 03:45, Alexandre Raymond <cerbere@gmail.com> wrote:

> The following trick, used in mDNSResponder, takes care of this warning:
> http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-258.18/mDNSPosix/PosixDaemon.c

If we do decide to borrow this trick from there, can we
also borrow some equivalent of the comment which explains
why we're doing it?

-- PMM
Blue Swirl - June 4, 2011, 8:39 a.m.
On Thu, Jun 2, 2011 at 5:45 AM, Alexandre Raymond <cerbere@gmail.com> wrote:
> On OSX > 10.5, daemon() is deprecated, resulting int he following warning:
> ----8<----
> qemu-nbd.c: In function ‘main’:
> qemu-nbd.c:371: warning: ‘daemon’ is deprecated (declared at /usr/include/stdlib.h:289)
> ----8<----
>
> The following trick, used in mDNSResponder, takes care of this warning:
> http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-258.18/mDNSPosix/PosixDaemon.c
>
> Signed-off-by: Alexandre Raymond <cerbere@gmail.com>
> ---
>  qemu-nbd.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/qemu-nbd.c b/qemu-nbd.c
> index e858033..10b0791 100644
> --- a/qemu-nbd.c
> +++ b/qemu-nbd.c
> @@ -16,6 +16,10 @@
>  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
>  */
>
> +#if __APPLE__
> +#define daemon fake_daemon_function
> +#endif
> +
>  #include <qemu-common.h>
>  #include "block_int.h"
>  #include "nbd.h"
> @@ -32,6 +36,11 @@
>  #include <signal.h>
>  #include <libgen.h>
>
> +#if __APPLE__
> +#undef daemon
> +extern int daemon(int, int);
> +#endif
> +

Please introduce a wrapper instead, for example in oslib-posix.c. Then
the #ifdeffery is not spread to generic files.

Patch

diff --git a/qemu-nbd.c b/qemu-nbd.c
index e858033..10b0791 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -16,6 +16,10 @@ 
  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+#if __APPLE__
+#define daemon fake_daemon_function
+#endif
+
 #include <qemu-common.h>
 #include "block_int.h"
 #include "nbd.h"
@@ -32,6 +36,11 @@ 
 #include <signal.h>
 #include <libgen.h>
 
+#if __APPLE__
+#undef daemon
+extern int daemon(int, int);
+#endif
+
 #define SOCKET_PATH    "/var/lock/qemu-nbd-%s"
 
 #define NBD_BUFFER_SIZE (1024*1024)