X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=lib%2Fdropin.c;h=773fe4882f2bbbf6cc2190f74c7dba717158c097;hb=f02d3ed3e135b5326003e7f69f8331ff6a3cc219;hp=0a8ae6ef35a77511a33dc08f36db95a635855153;hpb=c1e8152f4fe5e4557784d8411e50006d461b8786;p=tinc diff --git a/lib/dropin.c b/lib/dropin.c index 0a8ae6ef..773fe488 100644 --- a/lib/dropin.c +++ b/lib/dropin.c @@ -1,7 +1,7 @@ /* dropin.c -- a set of drop-in replacements for libc functions - Copyright (C) 2000-2003 Ivo Timmermans , - 2000-2003 Guus Sliepen + Copyright (C) 2000-2005 Ivo Timmermans, + 2000-2006 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,7 +17,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: dropin.c,v 1.1.2.16 2003/07/21 13:14:02 guus Exp $ + $Id$ */ #include "system.h" @@ -38,8 +38,8 @@ Unless the argument noclose is non-zero, daemon() will redirect standard input, standard output and standard error to /dev/null. */ -int daemon(int nochdir, int noclose) -{ +int daemon(int nochdir, int noclose) { +#ifdef HAVE_FORK pid_t pid; int fd; @@ -82,6 +82,9 @@ int daemon(int nochdir, int noclose) } return 0; +#else + return -1; +#endif } #endif @@ -93,8 +96,7 @@ int daemon(int nochdir, int noclose) current directory name. If the environment variable PWD is set, and its value is correct, then that value will be returned. */ -char *get_current_dir_name(void) -{ +char *get_current_dir_name(void) { size_t size; char *buf; char *r; @@ -121,8 +123,7 @@ char *get_current_dir_name(void) #endif #ifndef HAVE_ASPRINTF -int asprintf(char **buf, const char *fmt, ...) -{ +int asprintf(char **buf, const char *fmt, ...) { int status; va_list ap; int len; @@ -135,7 +136,7 @@ int asprintf(char **buf, const char *fmt, ...) va_end(ap); if(status >= 0) - *buf = xrealloc(*buf, status); + *buf = xrealloc(*buf, status + 1); if(status > len - 1) { len = status; @@ -147,3 +148,23 @@ int asprintf(char **buf, const char *fmt, ...) return status; } #endif + +#ifndef HAVE_GETTIMEOFDAY +int gettimeofday(struct timeval *tv, void *tz) { + tv->tv_sec = time(NULL); + tv->tv_usec = 0; + return 0; +} +#endif + +#ifndef HAVE_RANDOM +#include + +long int random(void) { + long int x; + + RAND_pseudo_bytes((unsigned char *)&x, sizeof(x)); + + return x; +} +#endif