mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
r516: On GNU/Linux distributions which allow to use both 2.4 and 2.6 kernels
there is SYS_utimes syscall defined at compile time in glibc-kernheaders but it is available on 2.6 kernels only. Therefore, we can't rely on syscall at compile time but have to check that behaviour during program execution. An easy workaround is to have replacement for utimes() implemented within our wrapper and do not rely on syscall at all. Thus, if REPLACE_UTIME is defined already (by packager), skip these syscall shortcuts. (This used to be commit e278e2e6e095b1c01eab307d55edf2cde48dcba2)
This commit is contained in:
parent
7cb9ca16f6
commit
5afd47147d
@ -250,14 +250,27 @@
|
||||
#define real_rmdir(fn) (syscall(SYS_rmdir, (fn)))
|
||||
#define real_mkdir(fn, mode) (syscall(SYS_mkdir, (fn), (mode)))
|
||||
|
||||
/*
|
||||
* On GNU/Linux distributions which allow to use both 2.4 and 2.6 kernels
|
||||
* there is SYS_utimes syscall defined at compile time in glibc-kernheaders but
|
||||
* it is available on 2.6 kernels only. Therefore, we can't rely on syscall at
|
||||
* compile time but have to check that behaviour during program execution. An easy
|
||||
* workaround is to have replacement for utimes() implemented within our wrapper and
|
||||
* do not rely on syscall at all. Thus, if REPLACE_UTIME is defined already (by packager),
|
||||
* skip these syscall shortcuts.
|
||||
*/
|
||||
#ifndef REPLACE_UTIME
|
||||
#ifdef SYS_utime
|
||||
#define real_utime(fn, buf) (syscall(SYS_utime, (fn), (buf)))
|
||||
#else
|
||||
#define REPLACE_UTIME 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef REPLACE_UTIMES
|
||||
#ifdef SYS_utimes
|
||||
#define real_utimes(fn, buf) (syscall(SYS_utimes, (fn), (buf)))
|
||||
#else
|
||||
#define REPLACE_UTIMES 1
|
||||
#endif
|
||||
#endif
|
||||
|
@ -1624,6 +1624,12 @@ static void squid_stream(enum stdio_helper_mode stdio_mode, stdio_helper_functio
|
||||
/* initialize FDescs */
|
||||
x_setbuf(x_stdout, NULL);
|
||||
x_setbuf(x_stderr, NULL);
|
||||
{
|
||||
struct passwd *pass = getpwuid(getuid());
|
||||
if (initgroups (pass->pw_name, pass->pw_gid)) {
|
||||
DEBUG(0,("Unable to initgroups. Error was %s\n", strerror(errno) ));
|
||||
}
|
||||
}
|
||||
while(1) {
|
||||
manage_squid_request(stdio_mode, fn);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user