diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2005-09-23 16:32:52 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:38:48 -0500 |
commit | 4be0ae794e4af2354d678fddd7bf1e822ffa9148 (patch) | |
tree | 128989d970334e4a896329992e827c4f09b8c035 /source4/lib/replace | |
parent | da46c9252ee887602b3e629065ca87b9ed11466f (diff) | |
download | samba-4be0ae794e4af2354d678fddd7bf1e822ffa9148.tar.gz samba-4be0ae794e4af2354d678fddd7bf1e822ffa9148.tar.bz2 samba-4be0ae794e4af2354d678fddd7bf1e822ffa9148.zip |
r10456: More SCons fixes:
- Add framework for fallback generating code
- Move pread / pwrite replacement functions to libreplace
- Support pidl builds correctly
- Support asn1 builds correctly
- Move OS-specific checks to lib/replace/SConscript
(This used to be commit fbbfad0a1f7dedbf48e835a864f8285f283d72f3)
Diffstat (limited to 'source4/lib/replace')
-rw-r--r-- | source4/lib/replace/README | 2 | ||||
-rw-r--r-- | source4/lib/replace/SConscript | 28 | ||||
-rw-r--r-- | source4/lib/replace/config.m4 | 1 | ||||
-rw-r--r-- | source4/lib/replace/replace.c | 22 |
4 files changed, 49 insertions, 4 deletions
diff --git a/source4/lib/replace/README b/source4/lib/replace/README index 6575112eff..eb3360b74a 100644 --- a/source4/lib/replace/README +++ b/source4/lib/replace/README @@ -46,6 +46,8 @@ bzero strerror errno mkstemp (a secure one!) +pread +pwrite Types: socklen_t diff --git a/source4/lib/replace/SConscript b/source4/lib/replace/SConscript index 982120e1bf..a2b3a30e10 100644 --- a/source4/lib/replace/SConscript +++ b/source4/lib/replace/SConscript @@ -1,11 +1,31 @@ -Import('hostenv') +#!/usr/bin/env python +Import('hostenv defines') if hostenv['configure']: conf = Configure(hostenv) - #FIXME: conf.CheckBrokenInetNtoa() + for f in ['memset','syslog','setnetgrent','getnetgrent','endnetgrent', \ + 'mktemp']: + if not conf.CheckFunc(f,'c'): + print "Required function `%s' not found" % f + exit(1) + for f in ['strtoull','__strtoull','strtouq','strtoll','__strtoll','strtoq', - 'seteuid','setresuid','setegid','setresgid']: - conf.CheckFunc(f,'c') + 'seteuid','setresuid','setegid','setresgid','dlsym','dlopen', + 'dlerror','dlclose','waitpid','getcwd','strdup','strndup', + 'strnlen','strerror','bzero','chroot','strlcpy','strlcat', + 'memmove','vsnprintf','asprintf','snprintf','vasprintf', + 'innetgr','mktime','rename','ftruncate','chsize','setlinebuf', + 'setenv','vsyslog','pread','pwrite']: + if conf.CheckFunc(f,'c'): + defines['HAVE_' + f.upper()] = 1 + + for h in ['dlfcn.h']: + if conf.CheckCHeader('dlfcn.h'): + defines['HAVE_' + h.upper().replace('.','_').replace('/','_')] = 1 + + if not conf.CheckType('socklen_t'): + defines['socklen_t'] = 'int' + conf.Finish() hostenv.StaticLibrary('repdir', ['repdir/repdir.c']) diff --git a/source4/lib/replace/config.m4 b/source4/lib/replace/config.m4 index ac4db9ed5b..07fbed9d91 100644 --- a/source4/lib/replace/config.m4 +++ b/source4/lib/replace/config.m4 @@ -22,6 +22,7 @@ AC_CHECK_FUNCS(strtoull __strtoull strtouq strtoll __strtoll strtoq) AC_CHECK_FUNCS(seteuid setresuid setegid setresgid chroot bzero strerror) AC_CHECK_FUNCS(timegm setenv vsyslog setlinebuf mktime ftruncate chsize rename) AC_CHECK_FUNCS(waitpid strnlen strlcpy strlcat innetgr initgroups memmove strdup) +AC_CHECK_FUNCS(pread pwrite) AC_HAVE_DECL(setresuid, [#include <unistd.h>]) AC_HAVE_DECL(setresgid, [#include <unistd.h>]) AC_HAVE_DECL(errno, [#include <errno.h>]) diff --git a/source4/lib/replace/replace.c b/source4/lib/replace/replace.c index aa79f23fd0..c53b5a5727 100644 --- a/source4/lib/replace/replace.c +++ b/source4/lib/replace/replace.c @@ -523,3 +523,25 @@ int rep_mkstemp(char *template) return open(p, O_CREAT|O_EXCL|O_RDWR, 0600); } #endif + +#ifndef HAVE_PREAD +static ssize_t pread(int __fd, void *__buf, size_t __nbytes, off_t __offset) +{ + if (lseek(__fd, __offset, SEEK_SET) != __offset) { + return -1; + } + return read(__fd, __buf, __nbytes); +} +#endif + +#ifndef HAVE_PWRITE +static ssize_t pwrite(int __fd, const void *__buf, size_t __nbytes, off_t __offset) +{ + if (lseek(__fd, __offset, SEEK_SET) != __offset) { + return -1; + } + return write(__fd, __buf, __nbytes); +} +#endif + + |