From 9ebd5a6aff73d70717f1d9a2f57767eae3eeb0c8 Mon Sep 17 00:00:00 2001 From: Gary Date: Tue, 23 Jul 2013 00:07:23 -0500 Subject: [PATCH] Add support for DragonFly BSD --- etc/rc.conf.DragonFly | 13 +++++++++++++ mk/os-DragonFly.mk | 6 ++++++ src/librc/librc-daemon.c | 12 +++++++++--- src/rc/rc-plugin.h | 2 +- src/rc/start-stop-daemon.c | 2 ++ 5 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 etc/rc.conf.DragonFly create mode 100644 mk/os-DragonFly.mk diff --git a/etc/rc.conf.DragonFly b/etc/rc.conf.DragonFly new file mode 100644 index 00000000..208bcc16 --- /dev/null +++ b/etc/rc.conf.DragonFly @@ -0,0 +1,13 @@ +############################################################################## +# DragonFly BSD SPECIFIC OPTIONS + +# This is the subsystem type. Valid options on DragonFly BSD: +# "" - nothing special +# "jail" - DragonFly BSD jails +# "prefix" - Prefix +# If this is commented out, automatic detection will be used. +# +# This should be set to the value representing the environment this file is +# PRESENTLY in, not the virtualization the environment is capable of. +#rc_sys="" + diff --git a/mk/os-DragonFly.mk b/mk/os-DragonFly.mk new file mode 100644 index 00000000..ff5e42f3 --- /dev/null +++ b/mk/os-DragonFly.mk @@ -0,0 +1,6 @@ +# Copyright (c) 2008 Roy Marples +# Released under the 2-clause BSD license. + +# Generic definitions + +include ${MK}/os-BSD.mk diff --git a/src/librc/librc-daemon.c b/src/librc/librc-daemon.c index 982da354..6e7d57fd 100644 --- a/src/librc/librc-daemon.c +++ b/src/librc/librc-daemon.c @@ -164,9 +164,15 @@ librc_hidden_def(rc_find_pids) # endif # define _KINFO_PROC kinfo_proc # define _KVM_GETARGV kvm_getargv -# define _GET_KINFO_UID(kp) (kp.ki_ruid) -# define _GET_KINFO_COMM(kp) (kp.ki_comm) -# define _GET_KINFO_PID(kp) (kp.ki_pid) +# if defined(__DragonFly__) +# define _GET_KINFO_UID(kp) (kp.kp_ruid) +# define _GET_KINFO_COMM(kp) (kp.kp_comm) +# define _GET_KINFO_PID(kp) (kp.kp_pid) +# else +# define _GET_KINFO_UID(kp) (kp.ki_ruid) +# define _GET_KINFO_COMM(kp) (kp.ki_comm) +# define _GET_KINFO_PID(kp) (kp.ki_pid) +# endif # define _KVM_PATH _PATH_DEVNULL # define _KVM_FLAGS O_RDONLY # endif diff --git a/src/rc/rc-plugin.h b/src/rc/rc-plugin.h index f763c3e9..b4e40ab4 100644 --- a/src/rc/rc-plugin.h +++ b/src/rc/rc-plugin.h @@ -41,7 +41,7 @@ void rc_plugin_unload(void); void rc_plugin_run(RC_HOOK, const char *value); /* dlfunc defines needed to avoid ISO errors. FreeBSD has this right :) */ -#ifndef __FreeBSD__ +#if !defined(__FreeBSD__) && !defined(__DragonFly__) struct __dlfunc_arg { int __dlfunc_dummy; }; diff --git a/src/rc/start-stop-daemon.c b/src/rc/start-stop-daemon.c index bfa8852e..5576d49d 100644 --- a/src/rc/start-stop-daemon.c +++ b/src/rc/start-stop-daemon.c @@ -110,6 +110,7 @@ extern char **environ; #if !defined(SYS_ioprio_set) && defined(__NR_ioprio_set) # define SYS_ioprio_set __NR_ioprio_set #endif +#if !defined(__DragonFly__) static inline int ioprio_set(int which, int who, int ioprio) { #ifdef SYS_ioprio_set @@ -118,6 +119,7 @@ static inline int ioprio_set(int which, int who, int ioprio) return 0; #endif } +#endif static void free_schedulelist(void)