Admin Panel
/*
* :ts=8
*
* 'Roadshow' -- Amiga TCP/IP stack; "usergroup.library" API
* Copyright � 2001-2017 by Olaf Barthel.
* All Rights Reserved.
*
* Amiga specific TCP/IP 'C' header files;
* Freely Distributable
*
* WARNING: The "usergroup.library" API must be considered obsolete and
* should not be used in new software. It is provided solely
* for backwards compatibility and legacy application software.
*/
/*
* This file was created with fd2pragma V2.164 using the following options:
*
* fd2pragma usergroup_lib.sfd to RAM:inline-46 special 46
*/
#ifndef _INLINE_USERGROUP_H
#define _INLINE_USERGROUP_H
#ifndef CLIB_USERGROUP_PROTOS_H
#define CLIB_USERGROUP_PROTOS_H
#endif
#ifndef LIBRARIES_USERGROUP_H
#include <libraries/usergroup.h>
#endif
#ifndef PWD_H
#include <pwd.h>
#endif
#ifndef GRP_H
#include <grp.h>
#endif
#ifndef USERGROUP_BASE_NAME
#define USERGROUP_BASE_NAME UserGroupBase
#endif
#define ug_SetupContextTagList(name, tags) ({ \
STRPTR _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 *) (USERGROUP_BASE_NAME);\
register LONG __ug_SetupContextTagList__re __asm("d0"); \
register STRPTR __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; \
})
#ifndef NO_INLINE_VARARGS
#define ug_SetupContextTags(name, ...) \
({_sfdc_vararg _args[] = { __VA_ARGS__ }; ug_SetupContextTagList(name, (struct TagItem *) _args); })
#endif /* !NO_INLINE_VARARGS */
#define ug_GetErr() ({ \
LONG _ug_GetErr__re = \
({ \
register struct Library * const __ug_GetErr__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
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); \
STRPTR _ug_StrError__re = \
({ \
register struct Library * const __ug_StrError__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register STRPTR __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 *) (USERGROUP_BASE_NAME);\
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 *) (USERGROUP_BASE_NAME);\
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 *) (USERGROUP_BASE_NAME);\
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; \
}); \
_setreuid__re; \
})
#define setuid(uid) ({ \
LONG _setuid_uid = (uid); \
LONG _setuid__re = \
({ \
register struct Library * const __setuid__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __setuid__re __asm("d0"); \
register LONG __setuid_uid __asm("d0") = (_setuid_uid); \
__asm volatile ("jsr a6@(-66:W)" \
: "=r"(__setuid__re) \
: "r"(__setuid__bn), "r"(__setuid_uid) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__setuid__re; \
}); \
_setuid__re; \
})
#define getgid() ({ \
LONG _getgid__re = \
({ \
register struct Library * const __getgid__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __getgid__re __asm("d0"); \
__asm volatile ("jsr a6@(-72:W)" \
: "=r"(__getgid__re) \
: "r"(__getgid__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getgid__re; \
}); \
_getgid__re; \
})
#define getegid() ({ \
LONG _getegid__re = \
({ \
register struct Library * const __getegid__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __getegid__re __asm("d0"); \
__asm volatile ("jsr a6@(-78:W)" \
: "=r"(__getegid__re) \
: "r"(__getegid__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getegid__re; \
}); \
_getegid__re; \
})
#define setregid(real, effective) ({ \
LONG _setregid_real = (real); \
LONG _setregid_effective = (effective); \
LONG _setregid__re = \
({ \
register struct Library * const __setregid__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __setregid__re __asm("d0"); \
register LONG __setregid_real __asm("d0") = (_setregid_real); \
register LONG __setregid_effective __asm("d1") = (_setregid_effective); \
__asm volatile ("jsr a6@(-84:W)" \
: "=r"(__setregid__re) \
: "r"(__setregid__bn), "r"(__setregid_real), "r"(__setregid_effective) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__setregid__re; \
}); \
_setregid__re; \
})
#define setgid(gid) ({ \
LONG _setgid_gid = (gid); \
LONG _setgid__re = \
({ \
register struct Library * const __setgid__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __setgid__re __asm("d0"); \
register LONG __setgid_gid __asm("d0") = (_setgid_gid); \
__asm volatile ("jsr a6@(-90:W)" \
: "=r"(__setgid__re) \
: "r"(__setgid__bn), "r"(__setgid_gid) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__setgid__re; \
}); \
_setgid__re; \
})
#define getgroups(gidsetlen, gidset) ({ \
LONG _getgroups_gidsetlen = (gidsetlen); \
LONG * _getgroups_gidset = (gidset); \
LONG _getgroups__re = \
({ \
register struct Library * const __getgroups__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __getgroups__re __asm("d0"); \
register LONG __getgroups_gidsetlen __asm("d0") = (_getgroups_gidsetlen); \
register LONG * __getgroups_gidset __asm("a1") = (_getgroups_gidset); \
__asm volatile ("jsr a6@(-96:W)" \
: "=r"(__getgroups__re) \
: "r"(__getgroups__bn), "r"(__getgroups_gidsetlen), "r"(__getgroups_gidset) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getgroups__re; \
}); \
_getgroups__re; \
})
#define setgroups(gidsetlen, gidset) ({ \
LONG _setgroups_gidsetlen = (gidsetlen); \
LONG * _setgroups_gidset = (gidset); \
LONG _setgroups__re = \
({ \
register struct Library * const __setgroups__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __setgroups__re __asm("d0"); \
register LONG __setgroups_gidsetlen __asm("d0") = (_setgroups_gidsetlen); \
register LONG * __setgroups_gidset __asm("a1") = (_setgroups_gidset); \
__asm volatile ("jsr a6@(-102:W)" \
: "=r"(__setgroups__re) \
: "r"(__setgroups__bn), "r"(__setgroups_gidsetlen), "r"(__setgroups_gidset) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__setgroups__re; \
}); \
_setgroups__re; \
})
#define initgroups(name, basegid) ({ \
STRPTR _initgroups_name = (name); \
LONG _initgroups_basegid = (basegid); \
LONG _initgroups__re = \
({ \
register struct Library * const __initgroups__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __initgroups__re __asm("d0"); \
register STRPTR __initgroups_name __asm("a1") = (_initgroups_name); \
register LONG __initgroups_basegid __asm("d0") = (_initgroups_basegid); \
__asm volatile ("jsr a6@(-108:W)" \
: "=r"(__initgroups__re) \
: "r"(__initgroups__bn), "r"(__initgroups_name), "r"(__initgroups_basegid) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__initgroups__re; \
}); \
_initgroups__re; \
})
#define getpwnam(login) ({ \
STRPTR _getpwnam_login = (login); \
struct passwd * _getpwnam__re = \
({ \
register struct Library * const __getpwnam__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register struct passwd * __getpwnam__re __asm("d0"); \
register STRPTR __getpwnam_login __asm("a1") = (_getpwnam_login); \
__asm volatile ("jsr a6@(-114:W)" \
: "=r"(__getpwnam__re) \
: "r"(__getpwnam__bn), "r"(__getpwnam_login) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getpwnam__re; \
}); \
_getpwnam__re; \
})
#define getpwuid(uid) ({ \
LONG _getpwuid_uid = (uid); \
struct passwd * _getpwuid__re = \
({ \
register struct Library * const __getpwuid__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register struct passwd * __getpwuid__re __asm("d0"); \
register LONG __getpwuid_uid __asm("d0") = (_getpwuid_uid); \
__asm volatile ("jsr a6@(-120:W)" \
: "=r"(__getpwuid__re) \
: "r"(__getpwuid__bn), "r"(__getpwuid_uid) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getpwuid__re; \
}); \
_getpwuid__re; \
})
#define setpwent() ({ \
register struct Library * const __setpwent__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
__asm volatile ("jsr a6@(-126:W)" \
: \
: "r"(__setpwent__bn) \
: "d0", "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
})
#define getpwent() ({ \
struct passwd * _getpwent__re = \
({ \
register struct Library * const __getpwent__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register struct passwd * __getpwent__re __asm("d0"); \
__asm volatile ("jsr a6@(-132:W)" \
: "=r"(__getpwent__re) \
: "r"(__getpwent__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getpwent__re; \
}); \
_getpwent__re; \
})
#define endpwent() ({ \
register struct Library * const __endpwent__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
__asm volatile ("jsr a6@(-138:W)" \
: \
: "r"(__endpwent__bn) \
: "d0", "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
})
#define getgrnam(name) ({ \
STRPTR _getgrnam_name = (name); \
struct group * _getgrnam__re = \
({ \
register struct Library * const __getgrnam__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register struct group * __getgrnam__re __asm("d0"); \
register STRPTR __getgrnam_name __asm("a1") = (_getgrnam_name); \
__asm volatile ("jsr a6@(-144:W)" \
: "=r"(__getgrnam__re) \
: "r"(__getgrnam__bn), "r"(__getgrnam_name) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getgrnam__re; \
}); \
_getgrnam__re; \
})
#define getgrgid(gid) ({ \
LONG _getgrgid_gid = (gid); \
struct group * _getgrgid__re = \
({ \
register struct Library * const __getgrgid__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register struct group * __getgrgid__re __asm("d0"); \
register LONG __getgrgid_gid __asm("d0") = (_getgrgid_gid); \
__asm volatile ("jsr a6@(-150:W)" \
: "=r"(__getgrgid__re) \
: "r"(__getgrgid__bn), "r"(__getgrgid_gid) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getgrgid__re; \
}); \
_getgrgid__re; \
})
#define setgrent() ({ \
register struct Library * const __setgrent__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
__asm volatile ("jsr a6@(-156:W)" \
: \
: "r"(__setgrent__bn) \
: "d0", "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
})
#define getgrent() ({ \
struct group * _getgrent__re = \
({ \
register struct Library * const __getgrent__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register struct group * __getgrent__re __asm("d0"); \
__asm volatile ("jsr a6@(-162:W)" \
: "=r"(__getgrent__re) \
: "r"(__getgrent__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getgrent__re; \
}); \
_getgrent__re; \
})
#define endgrent() ({ \
register struct Library * const __endgrent__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
__asm volatile ("jsr a6@(-168:W)" \
: \
: "r"(__endgrent__bn) \
: "d0", "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
})
#define crypt(key, set) ({ \
UBYTE * _crypt_key = (key); \
UBYTE * _crypt_set = (set); \
UBYTE * _crypt__re = \
({ \
register struct Library * const __crypt__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register UBYTE * __crypt__re __asm("d0"); \
register UBYTE * __crypt_key __asm("a0") = (_crypt_key); \
register UBYTE * __crypt_set __asm("a1") = (_crypt_set); \
__asm volatile ("jsr a6@(-174:W)" \
: "=r"(__crypt__re) \
: "r"(__crypt__bn), "r"(__crypt_key), "r"(__crypt_set) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__crypt__re; \
}); \
_crypt__re; \
})
#define ug_GetSalt(user, buf, size) ({ \
struct passwd * _ug_GetSalt_user = (user); \
UBYTE * _ug_GetSalt_buf = (buf); \
ULONG _ug_GetSalt_size = (size); \
UBYTE * _ug_GetSalt__re = \
({ \
register struct Library * const __ug_GetSalt__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register UBYTE * __ug_GetSalt__re __asm("d0"); \
register struct passwd * __ug_GetSalt_user __asm("a0") = (_ug_GetSalt_user); \
register UBYTE * __ug_GetSalt_buf __asm("a1") = (_ug_GetSalt_buf); \
register ULONG __ug_GetSalt_size __asm("d0") = (_ug_GetSalt_size); \
__asm volatile ("jsr a6@(-180:W)" \
: "=r"(__ug_GetSalt__re) \
: "r"(__ug_GetSalt__bn), "r"(__ug_GetSalt_user), "r"(__ug_GetSalt_buf), "r"(__ug_GetSalt_size) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__ug_GetSalt__re; \
}); \
_ug_GetSalt__re; \
})
#define getpass(prompt) ({ \
STRPTR _getpass_prompt = (prompt); \
STRPTR _getpass__re = \
({ \
register struct Library * const __getpass__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register STRPTR __getpass__re __asm("d0"); \
register STRPTR __getpass_prompt __asm("a1") = (_getpass_prompt); \
__asm volatile ("jsr a6@(-186:W)" \
: "=r"(__getpass__re) \
: "r"(__getpass__bn), "r"(__getpass_prompt) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getpass__re; \
}); \
_getpass__re; \
})
#define umask(mask) ({ \
ULONG _umask_mask = (mask); \
ULONG _umask__re = \
({ \
register struct Library * const __umask__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register ULONG __umask__re __asm("d0"); \
register ULONG __umask_mask __asm("d0") = (_umask_mask); \
__asm volatile ("jsr a6@(-192:W)" \
: "=r"(__umask__re) \
: "r"(__umask__bn), "r"(__umask_mask) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__umask__re; \
}); \
_umask__re; \
})
#define getumask() ({ \
ULONG _getumask__re = \
({ \
register struct Library * const __getumask__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register ULONG __getumask__re __asm("d0"); \
__asm volatile ("jsr a6@(-198:W)" \
: "=r"(__getumask__re) \
: "r"(__getumask__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getumask__re; \
}); \
_getumask__re; \
})
#define setsid() ({ \
LONG _setsid__re = \
({ \
register struct Library * const __setsid__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __setsid__re __asm("d0"); \
__asm volatile ("jsr a6@(-204:W)" \
: "=r"(__setsid__re) \
: "r"(__setsid__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__setsid__re; \
}); \
_setsid__re; \
})
#define getpgrp() ({ \
LONG _getpgrp__re = \
({ \
register struct Library * const __getpgrp__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __getpgrp__re __asm("d0"); \
__asm volatile ("jsr a6@(-210:W)" \
: "=r"(__getpgrp__re) \
: "r"(__getpgrp__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getpgrp__re; \
}); \
_getpgrp__re; \
})
#define getlogin() ({ \
STRPTR _getlogin__re = \
({ \
register struct Library * const __getlogin__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register STRPTR __getlogin__re __asm("d0"); \
__asm volatile ("jsr a6@(-216:W)" \
: "=r"(__getlogin__re) \
: "r"(__getlogin__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getlogin__re; \
}); \
_getlogin__re; \
})
#define setlogin(name) ({ \
STRPTR _setlogin_name = (name); \
LONG _setlogin__re = \
({ \
register struct Library * const __setlogin__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __setlogin__re __asm("d0"); \
register STRPTR __setlogin_name __asm("a1") = (_setlogin_name); \
__asm volatile ("jsr a6@(-222:W)" \
: "=r"(__setlogin__re) \
: "r"(__setlogin__bn), "r"(__setlogin_name) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__setlogin__re; \
}); \
_setlogin__re; \
})
#define setutent() ({ \
register struct Library * const __setutent__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
__asm volatile ("jsr a6@(-228:W)" \
: \
: "r"(__setutent__bn) \
: "d0", "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
})
#define getutent() ({ \
struct utmp * _getutent__re = \
({ \
register struct Library * const __getutent__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register struct utmp * __getutent__re __asm("d0"); \
__asm volatile ("jsr a6@(-234:W)" \
: "=r"(__getutent__re) \
: "r"(__getutent__bn) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getutent__re; \
}); \
_getutent__re; \
})
#define endutent() ({ \
register struct Library * const __endutent__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
__asm volatile ("jsr a6@(-240:W)" \
: \
: "r"(__endutent__bn) \
: "d0", "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
})
#define getlastlog(uid) ({ \
LONG _getlastlog_uid = (uid); \
struct lastlog * _getlastlog__re = \
({ \
register struct Library * const __getlastlog__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register struct lastlog * __getlastlog__re __asm("d0"); \
register LONG __getlastlog_uid __asm("d0") = (_getlastlog_uid); \
__asm volatile ("jsr a6@(-246:W)" \
: "=r"(__getlastlog__re) \
: "r"(__getlastlog__bn), "r"(__getlastlog_uid) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getlastlog__re; \
}); \
_getlastlog__re; \
})
#define setlastlog(uid, name, host) ({ \
LONG _setlastlog_uid = (uid); \
STRPTR _setlastlog_name = (name); \
STRPTR _setlastlog_host = (host); \
LONG _setlastlog__re = \
({ \
register struct Library * const __setlastlog__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register LONG __setlastlog__re __asm("d0"); \
register LONG __setlastlog_uid __asm("d0") = (_setlastlog_uid); \
register STRPTR __setlastlog_name __asm("a0") = (_setlastlog_name); \
register STRPTR __setlastlog_host __asm("a1") = (_setlastlog_host); \
__asm volatile ("jsr a6@(-252:W)" \
: "=r"(__setlastlog__re) \
: "r"(__setlastlog__bn), "r"(__setlastlog_uid), "r"(__setlastlog_name), "r"(__setlastlog_host) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__setlastlog__re; \
}); \
_setlastlog__re; \
})
#define getcredentials(task) ({ \
struct Task * _getcredentials_task = (task); \
struct UserGroupCredentials * _getcredentials__re = \
({ \
register struct Library * const __getcredentials__bn __asm("a6") = (struct Library *) (USERGROUP_BASE_NAME);\
register struct UserGroupCredentials * __getcredentials__re __asm("d0"); \
register struct Task * __getcredentials_task __asm("a0") = (_getcredentials_task); \
__asm volatile ("jsr a6@(-258:W)" \
: "=r"(__getcredentials__re) \
: "r"(__getcredentials__bn), "r"(__getcredentials_task) \
: "d1", "a0", "a1", "fp0", "fp1", "cc", "memory"); \
__getcredentials__re; \
}); \
_getcredentials__re; \
})
#endif /* _INLINE_USERGROUP_H */