1
0
mirror of https://github.com/adtools/clib2.git synced 2025-12-08 14:59:05 +00:00
Files
amiga-clib2/library/usergroup_headers.h
Olaf Barthel b2bc0096dc - Updated the copyright text.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15079 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2006-01-08 12:06:14 +00:00

805 lines
28 KiB
C

/*
* $Id: usergroup_headers.h,v 1.8 2006-01-08 12:04:27 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of Olaf Barthel nor the names of contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _USERGROUP_HEADERS_H
#define _USERGROUP_HEADERS_H
/****************************************************************************/
#ifndef _STDIO_HEADERS_H
#include "stdio_headers.h"
#endif /* _STDIO_HEADERS_H */
/****************************************************************************/
#ifndef _STDLIB_HEADERS_H
#include "stdlib_headers.h"
#endif /* _STDLIB_HEADERS_H */
/****************************************************************************/
#ifndef _STDLIB_PROFILE_H
#include "stdlib_profile.h"
#endif /* _STDLIB_PROFILE_H */
/****************************************************************************/
#ifndef _PWD_H
#include <pwd.h>
#endif /* _PWD_H */
#ifndef _GRP_H
#include <grp.h>
#endif /* _GRP_H */
/****************************************************************************/
extern struct Library * NOCOMMON __UserGroupBase;
/****************************************************************************/
#if defined(__amigaos4__)
extern struct UserGroupIFace * NOCOMMON __IUserGroup;
#endif /* __amigaos4__ */
/****************************************************************************/
extern BOOL NOCOMMON __root_mode;
/****************************************************************************/
extern int NOCOMMON __root_uid;
extern int NOCOMMON __root_gid;
extern int NOCOMMON __root_euid;
extern int NOCOMMON __root_egid;
/****************************************************************************/
#if defined(__GNUC__)
#if defined(__amigaos4__)
#include <interfaces/usergroup.h>
#define __ug_SetupContextTagList(name, tags) __IUserGroup->ug_SetupContextTagList(name, tags)
#define __ug_GetErr() __IUserGroup->ug_GetErr()
#define __ug_StrError(err) __IUserGroup->ug_StrError(err)
#define __getuid() __IUserGroup->getuid()
#define __geteuid() __IUserGroup->geteuid()
#define __setreuid(real, effective) __IUserGroup->setreuid(real, effective)
#define __setuid(uid) __IUserGroup->setuid(uid)
#define __getgid() __IUserGroup->getgid()
#define __getegid() __IUserGroup->getegid()
#define __setregid(real, effective) __IUserGroup->setregid(real, effective)
#define __setgid(gid) __IUserGroup->setgid(gid)
#define __getgroups(gidsetlen, gidset) __IUserGroup->getgroups(gidsetlen, gidset)
#define __setgroups(gidsetlen, gidset) __IUserGroup->setgroups(gidsetlen, gidset)
#define __initgroups(name, basegid) __IUserGroup->initgroups(name, basegid)
#define __getpwnam(login) __IUserGroup->getpwnam(login)
#define __getpwuid(uid) __IUserGroup->getpwuid(uid)
#define __setpwent() __IUserGroup->setpwent()
#define __getpwent() __IUserGroup->getpwent()
#define __endpwent() __IUserGroup->endpwent()
#define __getgrnam(name) __IUserGroup->getgrnam(name)
#define __getgrgid(gid) __IUserGroup->getgrgid(gid)
#define __setgrent() __IUserGroup->setgrent()
#define __getgrent() __IUserGroup->getgrent()
#define __endgrent() __IUserGroup->endgrent()
#define __crypt(key, set) __IUserGroup->crypt(key, set)
#define __ug_GetSalt(user, buf, size) __IUserGroup->ug_GetSalt(user, buf, size)
#define __getpass(prompt) __IUserGroup->getpass(prompt)
#define __umask(mask) __IUserGroup->umask(mask)
#define __getumask() __IUserGroup->getumask()
#define __setsid() __IUserGroup->setsid()
#define __getpgrp() __IUserGroup->getpgrp()
#define __getlogin() __IUserGroup->getlogin()
#define __setlogin(name) __IUserGroup->setlogin(name)
#define __setutent() __IUserGroup->setutent()
#define __getutent() __IUserGroup->getutent()
#define __endutent() __IUserGroup->endutent()
#define __getlastlog(uid) __IUserGroup->getlastlog(uid)
#define __setlastlog(uid, name, host) __IUserGroup->setlastlog(uid, name, host)
#define __getcredentials(task) __IUserGroup->getcredentials(task)
#else
#define __ug_SetupContextTagList(name, tags) ({ \
UBYTE * _ug_SetupContextTagList_name = (name); \
struct TagItem * _ug_SetupContextTagList_tags = (tags); \
LONG _ug_SetupContextTagList__re = \
({ \
register struct Library * const __ug_SetupContextTagList__bn __asm("a6") = (struct Library *) (__UserGroupBase);\
register LONG __ug_SetupContextTagList__re __asm("d0"); \
register UBYTE * __ug_SetupContextTagList_name __asm("a0") = (_ug_SetupContextTagList_name); \
register struct TagItem * __ug_SetupContextTagList_tags __asm("a1") = (_ug_SetupContextTagList_tags); \
__asm volatile ("jsr a6@(-30:W)" \
: "=r"(__ug_SetupContextTagList__re) \
: "r"(__ug_SetupContextTagList__bn), "r"(__ug_SetupContextTagList_name), "r"(__ug_SetupContextTagList_tags) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__ug_SetupContextTagList__re; \
}); \
_ug_SetupContextTagList__re; \
})
#define __ug_GetErr() ({ \
LONG _ug_GetErr__re = \
({ \
register struct Library * const __ug_GetErr__bn __asm("a6") = (struct Library *) (__UserGroupBase);\
register LONG __ug_GetErr__re __asm("d0"); \
__asm volatile ("jsr a6@(-36:W)" \
: "=r"(__ug_GetErr__re) \
: "r"(__ug_GetErr__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__ug_GetErr__re; \
}); \
_ug_GetErr__re; \
})
#define __ug_StrError(err) ({ \
LONG _ug_StrError_err = (err); \
UBYTE * _ug_StrError__re = \
({ \
register struct Library * const __ug_StrError__bn __asm("a6") = (struct Library *) (__UserGroupBase);\
register UBYTE * __ug_StrError__re __asm("d0"); \
register LONG __ug_StrError_err __asm("d1") = (_ug_StrError_err); \
__asm volatile ("jsr a6@(-42:W)" \
: "=r"(__ug_StrError__re) \
: "r"(__ug_StrError__bn), "r"(__ug_StrError_err) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__ug_StrError__re; \
}); \
_ug_StrError__re; \
})
#define __getuid() ({ \
LONG _getuid__re = \
({ \
register struct Library * const __getuid__bn __asm("a6") = (struct Library *) (__UserGroupBase);\
register LONG __getuid__re __asm("d0"); \
__asm volatile ("jsr a6@(-48:W)" \
: "=r"(__getuid__re) \
: "r"(__getuid__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getuid__re; \
}); \
_getuid__re; \
})
#define __geteuid() ({ \
LONG _geteuid__re = \
({ \
register struct Library * const __geteuid__bn __asm("a6") = (struct Library *) (__UserGroupBase);\
register LONG __geteuid__re __asm("d0"); \
__asm volatile ("jsr a6@(-54:W)" \
: "=r"(__geteuid__re) \
: "r"(__geteuid__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__geteuid__re; \
}); \
_geteuid__re; \
})
#define __setreuid(real, effective) ({ \
LONG _setreuid_real = (real); \
LONG _setreuid_effective = (effective); \
LONG _setreuid__re = \
({ \
register struct Library * const __setreuid__bn __asm("a6") = (struct Library *) (__UserGroupBase);\
register LONG __setreuid__re __asm("d0"); \
register LONG __setreuid_real __asm("d0") = (_setreuid_real); \
register LONG __setreuid_effective __asm("d1") = (_setreuid_effective); \
__asm volatile ("jsr a6@(-60:W)" \
: "=r"(__setreuid__re) \
: "r"(__setreuid__bn), "r"(__setreuid_real), "r"(__setreuid_effective) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__setreuid__re; \
}); \