diff --git a/lib/lmdb/mdb.c b/lib/lmdb/mdb.c index a90d7d5..e73bbd5 100644 --- a/lib/lmdb/mdb.c +++ b/lib/lmdb/mdb.c @@ -237,7 +237,11 @@ mdb_sem_wait(sem_t *sem) * Otherwise compile with the less efficient -DMDB_DSYNC=O_SYNC. */ #ifndef MDB_DSYNC +#ifdef O_DSYNC # define MDB_DSYNC O_DSYNC +#else +# define MDB_DSYNC O_SYNC +#endif #endif #endif diff --git a/src/server/command_list.c b/src/server/command_list.c index 4dc78e9..c12c44e 100644 --- a/src/server/command_list.c +++ b/src/server/command_list.c @@ -1,5 +1,6 @@ #include #include +#include #include #include "nanomsg/nn.h" #include "snappy.h" diff --git a/src/server/self_path.c b/src/server/self_path.c index 2f2647d..238701b 100644 --- a/src/server/self_path.c +++ b/src/server/self_path.c @@ -53,4 +53,26 @@ const char *get_self_path() { return (path); } +#elif defined __FreeBSD__ + +# include +# include +# include + +const char *get_self_path() { + static char path[PATH_MAX] = { '\0' }; + + if ( path[0] == '\0' ) { + int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 }; + size_t size = sizeof(path); + char *pt; + + sysctl(mib, sizeof(mib)/sizeof(*mib), path, &size, NULL, 0); + if ((pt = strrchr(path, '/')) != NULL) + *pt = '\0'; + return path; + } + return path; +} + #endif diff --git a/src/server/server.c b/src/server/server.c index 081d9cf..ac79f71 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -1,4 +1,6 @@ +#ifdef __linux__ #include +#endif #include #include #include