// Copyright (c) 2004 David Muse
// See the COPYING file for more information
#include <rudiments/process.h>
#ifndef __USE_XOPEN_EXTENDED
// for getsid()
#define __USE_XOPEN_EXTENDED
#endif
#ifdef RUDIMENTS_HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef MINGW32
#include <process.h>
#endif
#ifdef RUDIMENTS_NAMESPACE
namespace rudiments {
#endif
pid_t process::getProcessId() {
#ifndef MINGW32
return getpid();
#else
return _getpid();
#endif
}
pid_t process::getParentProcessId() {
#ifndef MINGW32
return getppid();
#else
return -1;
#endif
}
pid_t process::getProcessGroupId() {
return getProcessGroupId(0);
}
pid_t process::getProcessGroupId(pid_t pid) {
#ifndef MINGW32
return getpgid(pid);
#else
return -1;
#endif
}
bool process::setProcessGroupId() {
return setProcessGroupId(0);
}
bool process::setProcessGroupId(pid_t pgid) {
return setProcessGroupId(0,pgid);
}
bool process::setProcessGroupId(pid_t pid, pid_t pgid) {
#ifndef MINGW32
return !setpgid(pid,pgid);
#else
return true;
#endif
}
pid_t process::getSessionId() {
return getSessionId(0);
}
pid_t process::getSessionId(pid_t pid) {
#ifndef MINGW32
return getsid(pid);
#else
return -1;
#endif
}
uid_t process::getRealUserId() {
#ifndef MINGW32
return getuid();
#else
return -1;
#endif
}
uid_t process::getEffectiveUserId() {
#ifndef MINGW32
return geteuid();
#else
return -1;
#endif
}
bool process::setUserId(uid_t uid) {
#ifdef RUDIMENTS_HAVE_SETUID
return !setuid(uid);
#else
return true;
#endif
}
bool process::setEffectiveUserId(uid_t uid) {
#ifndef MINGW32
return !seteuid(uid);
#else
return true;
#endif
}
bool process::setRealAndEffectiveUserId(uid_t uid, uid_t euid) {
#ifndef MINGW32
return !setreuid(uid,euid);
#else
return true;
#endif
}
gid_t process::getRealGroupId() {
#ifndef MINGW32
return getgid();
#else
return -1;
#endif
}
gid_t process::getEffectiveGroupId() {
#ifndef MINGW32
return getegid();
#else
return -1;
#endif
}
bool process::setGroupId(gid_t gid) {
#ifdef RUDIMENTS_HAVE_SETGID
return !setgid(gid);
#else
return true;
#endif
}
bool process::setEffectiveGroupId(gid_t gid) {
#ifndef MINGW32
return !setegid(gid);
#else
return true;
#endif
}
bool process::setRealAndEffectiveGroupId(gid_t gid, gid_t egid) {
#ifndef MINGW32
return !setregid(gid,egid);
#else
return true;
#endif
}
#ifdef RUDIMENTS_NAMESPACE
}
#endif
syntax highlighted by Code2HTML, v. 0.9.1