home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 9 / FreshFishVol9-CD2.bin / bbs / comm / amitcp-sdk-4.0.lha / AmiTCP-SDK / netinclude / inline / usergroup.h < prev   
Encoding:
C/C++ Source or Header  |  1994-10-06  |  15.6 KB  |  576 lines

  1. #ifndef INLINE_USERGROUP_H
  2. #define INLINE_USERGROUP_H \
  3.        "$Id: usergroup.h,v 4.1 1994/10/05 23:18:36 ppessi Exp $"
  4. /*
  5.  *      Gcc inlines for usergroup.library. 
  6.  *
  7.  *      Copyright © 1994 AmiTCP/IP Group,
  8.  *                       Network Solutions Development, Inc.
  9.  *                       All rights reserved.
  10.  */
  11.  
  12. #include <sys/cdefs.h>
  13. #include <inline/stubs.h>
  14.  
  15. __BEGIN_DECLS
  16.  
  17. #ifdef BASE_EXT_DECL
  18. #error BASE_EXT_DECL etc declarations not allowed
  19. #endif
  20.  
  21. #ifndef USERGROUPBASE_IN_CONTEXT
  22. #define BASE_EXT_DECL
  23. #define BASE_EXT_DECL0 extern struct Library * UserGroupBase;
  24. #define BASE_PAR_DECL
  25. #define BASE_PAR_DECL0 void
  26. #else
  27. #define BASE_EXT_DECL
  28. #define BASE_EXT_DECL0
  29. #define BASE_PAR_DECL struct Library * UserGroupBase,
  30. #define BASE_PAR_DECL0 struct Library * UserGroupBase
  31. #endif
  32. #define BASE_NAME UserGroupBase
  33.  
  34. BASE_EXT_DECL0
  35.   
  36. static __inline char *
  37. crypt (BASE_PAR_DECL const char *key,const char * salt)
  38. {
  39.   BASE_EXT_DECL
  40.   register char * _res  __asm("d0");
  41.   register struct Library * a6 __asm("a6") = BASE_NAME;
  42.   register const char *a0 __asm("a0") = key;
  43.   register const char *a1 __asm("a1") =  salt;
  44.   __asm __volatile ("jsr a6@(-0xae)"
  45.   : "=r" (_res)
  46.   : "r" (a6), "r" (a0), "r" (a1)
  47.   : "a0","a1","d0","d1", "memory");
  48.   return _res;
  49. }
  50. static __inline void 
  51. endgrent (BASE_PAR_DECL0)
  52. {
  53.   BASE_EXT_DECL
  54.   register struct Library * a6 __asm("a6") = BASE_NAME;
  55.   __asm __volatile ("jsr a6@(-0xa8)"
  56.   : /* no output */
  57.   : "r" (a6)
  58.   : "a0","a1","d0","d1", "memory");
  59. }
  60. static __inline void 
  61. endpwent (BASE_PAR_DECL0)
  62. {
  63.   BASE_EXT_DECL
  64.   register struct Library * a6 __asm("a6") = BASE_NAME;
  65.   __asm __volatile ("jsr a6@(-0x8a)"
  66.   : /* no output */
  67.   : "r" (a6)
  68.   : "a0","a1","d0","d1", "memory");
  69. }
  70. static __inline void 
  71. endutent (BASE_PAR_DECL0)
  72. {
  73.   BASE_EXT_DECL
  74.   register struct Library * a6 __asm("a6") = BASE_NAME;
  75.   __asm __volatile ("jsr a6@(-0xf0)"
  76.   : /* no output */
  77.   : "r" (a6)
  78.   : "a0","a1","d0","d1", "memory");
  79. }
  80. static __inline gid_t 
  81. getegid (BASE_PAR_DECL0)
  82. {
  83.   BASE_EXT_DECL
  84.   register gid_t  _res  __asm("d0");
  85.   register struct Library * a6 __asm("a6") = BASE_NAME;
  86.   __asm __volatile ("jsr a6@(-0x4e)"
  87.   : "=r" (_res)
  88.   : "r" (a6)
  89.   : "a0","a1","d0","d1", "memory");
  90.   return _res;
  91. }
  92. static __inline uid_t 
  93. geteuid (BASE_PAR_DECL0)
  94. {
  95.   BASE_EXT_DECL
  96.   register uid_t  _res  __asm("d0");
  97.   register struct Library * a6 __asm("a6") = BASE_NAME;
  98.   __asm __volatile ("jsr a6@(-0x36)"
  99.   : "=r" (_res)
  100.   : "r" (a6)
  101.   : "a0","a1","d0","d1", "memory");
  102.   return _res;
  103. }
  104. static __inline gid_t 
  105. getgid (BASE_PAR_DECL0)
  106. {
  107.   BASE_EXT_DECL
  108.   register gid_t  _res  __asm("d0");
  109.   register struct Library * a6 __asm("a6") = BASE_NAME;
  110.   __asm __volatile ("jsr a6@(-0x48)"
  111.   : "=r" (_res)
  112.   : "r" (a6)
  113.   : "a0","a1","d0","d1", "memory");
  114.   return _res;
  115. }
  116. static __inline struct group *
  117. getgrent (BASE_PAR_DECL0)
  118. {
  119.   BASE_EXT_DECL
  120.   register struct group * _res  __asm("d0");
  121.   register struct Library * a6 __asm("a6") = BASE_NAME;
  122.   __asm __volatile ("jsr a6@(-0xa2)"
  123.   : "=r" (_res)
  124.   : "r" (a6)
  125.   : "a0","a1","d0","d1", "memory");
  126.   return _res;
  127. }
  128. static __inline struct group *
  129. getgrgid (BASE_PAR_DECL gid_t gid)
  130. {
  131.   BASE_EXT_DECL
  132.   register struct group * _res  __asm("d0");
  133.   register struct Library * a6 __asm("a6") = BASE_NAME;
  134.   register gid_t d0 __asm("d0") = gid;
  135.   __asm __volatile ("jsr a6@(-0x96)"
  136.   : "=r" (_res)
  137.   : "r" (a6), "r" (d0)
  138.   : "a0","a1","d0","d1", "memory");
  139.   return _res;
  140. }
  141. static __inline struct group *
  142. getgrnam (BASE_PAR_DECL const char * name)
  143. {
  144.   BASE_EXT_DECL
  145.   register struct group * _res  __asm("d0");
  146.   register struct Library * a6 __asm("a6") = BASE_NAME;
  147.   register const char * a1 __asm("a1") = name;
  148.   __asm __volatile ("jsr a6@(-0x90)"
  149.   : "=r" (_res)
  150.   : "r" (a6), "r" (a1)
  151.   : "a0","a1","d0","d1", "memory");
  152.   return _res;
  153. }
  154. static __inline int 
  155. getgroups (BASE_PAR_DECL int ngroups,gid_t * groups)
  156. {
  157.   BASE_EXT_DECL
  158.   register int  _res  __asm("d0");
  159.   register struct Library * a6 __asm("a6") = BASE_NAME;
  160.   register int d0 __asm("d0") = ngroups;
  161.   register gid_t *a1 __asm("a1") =  groups;
  162.   __asm __volatile ("jsr a6@(-0x60)"
  163.   : "=r" (_res)
  164.   : "r" (a6), "r" (d0), "r" (a1)
  165.   : "a0","a1","d0","d1", "memory");
  166.   return _res;
  167. }
  168. static __inline struct lastlog *
  169. getlastlog (BASE_PAR_DECL uid_t uid)
  170. {
  171.   BASE_EXT_DECL
  172.   register struct lastlog * _res  __asm("d0");
  173.   register struct Library * a6 __asm("a6") = BASE_NAME;
  174.   register uid_t d0 __asm("d0") = uid;
  175.   __asm __volatile ("jsr a6@(-0xf6)"
  176.   : "=r" (_res)
  177.   : "r" (a6), "r" (d0)
  178.   : "a0","a1","d0","d1", "memory");
  179.   return _res;
  180. }
  181. static __inline char *
  182. getlogin (BASE_PAR_DECL0)
  183. {
  184.   BASE_EXT_DECL
  185.   register char * _res  __asm("d0");
  186.   register struct Library * a6 __asm("a6") = BASE_NAME;
  187.   __asm __volatile ("jsr a6@(-0xd8)"
  188.   : "=r" (_res)
  189.   : "r" (a6)
  190.   : "a0","a1","d0","d1", "memory");
  191.   return _res;
  192. }
  193. static __inline char *
  194. getpass (BASE_PAR_DECL const char *prompt)
  195. {
  196.   BASE_EXT_DECL
  197.   register char * _res  __asm("d0");
  198.   register struct Library * a6 __asm("a6") = BASE_NAME;
  199.   register const char *a1 __asm("a1") = prompt;
  200.   __asm __volatile ("jsr a6@(-0xba)"
  201.   : "=r" (_res)
  202.   : "r" (a6), "r" (a1)
  203.   : "a0","a1","d0","d1", "memory");
  204.   return _res;
  205. }
  206. static __inline pid_t 
  207. getpgrp (BASE_PAR_DECL0)
  208. {
  209.   BASE_EXT_DECL
  210.   register pid_t  _res  __asm("d0");
  211.   register struct Library * a6 __asm("a6") = BASE_NAME;
  212.   __asm __volatile ("jsr a6@(-0xd2)"
  213.   : "=r" (_res)
  214.   : "r" (a6)
  215.   : "a0","a1","d0","d1", "memory");
  216.   return _res;
  217. }
  218. static __inline struct passwd *
  219. getpwent (BASE_PAR_DECL0)
  220. {
  221.   BASE_EXT_DECL
  222.   register struct passwd * _res  __asm("d0");
  223.   register struct Library * a6 __asm("a6") = BASE_NAME;
  224.   __asm __volatile ("jsr a6@(-0x84)"
  225.   : "=r" (_res)
  226.   : "r" (a6)
  227.   : "a0","a1","d0","d1", "memory");
  228.   return _res;
  229. }
  230. static __inline struct passwd *
  231. getpwnam (BASE_PAR_DECL const char *name)
  232. {
  233.   BASE_EXT_DECL
  234.   register struct passwd * _res  __asm("d0");
  235.   register struct Library * a6 __asm("a6") = BASE_NAME;
  236.   register const char *a1 __asm("a1") = name;
  237.   __asm __volatile ("jsr a6@(-0x72)"
  238.   : "=r" (_res)
  239.   : "r" (a6), "r" (a1)
  240.   : "a0","a1","d0","d1", "memory");
  241.   return _res;
  242. }
  243. static __inline struct passwd *
  244. getpwuid (BASE_PAR_DECL uid_t uid)
  245. {
  246.   BASE_EXT_DECL
  247.   register struct passwd * _res  __asm("d0");
  248.   register struct Library * a6 __asm("a6") = BASE_NAME;
  249.   register uid_t d0 __asm("d0") = uid;
  250.   __asm __volatile ("jsr a6@(-0x78)"
  251.   : "=r" (_res)
  252.   : "r" (a6), "r" (d0)
  253.   : "a0","a1","d0","d1", "memory");
  254.   return _res;
  255. }
  256. static __inline uid_t 
  257. getuid (BASE_PAR_DECL0)
  258. {
  259.   BASE_EXT_DECL
  260.   register uid_t  _res  __asm("d0");
  261.   register struct Library * a6 __asm("a6") = BASE_NAME;
  262.   __asm __volatile ("jsr a6@(-0x30)"
  263.   : "=r" (_res)
  264.   : "r" (a6)
  265.   : "a0","a1","d0","d1", "memory");
  266.   return _res;
  267. }
  268. static __inline mode_t 
  269. getumask (BASE_PAR_DECL0)
  270. {
  271.   BASE_EXT_DECL
  272.   register mode_t  _res  __asm("d0");
  273.   register struct Library * a6 __asm("a6") = BASE_NAME;
  274.   __asm __volatile ("jsr a6@(-0xc6)"
  275.   : "=r" (_res)
  276.   : "r" (a6)
  277.   : "a0","a1","d0","d1", "memory");
  278.   return _res;
  279. }
  280. static __inline struct utmp *
  281. getutent (BASE_PAR_DECL0)
  282. {
  283.   BASE_EXT_DECL
  284.   register struct utmp * _res  __asm("d0");
  285.   register struct Library * a6 __asm("a6") = BASE_NAME;
  286.   __asm __volatile ("jsr a6@(-0xea)"
  287.   : "=r" (_res)
  288.   : "r" (a6)
  289.   : "a0","a1","d0","d1", "memory");
  290.   return _res;
  291. }
  292. static __inline int 
  293. initgroups (BASE_PAR_DECL const char *name,gid_t  basegroup)
  294. {
  295.   BASE_EXT_DECL
  296.   register int  _res  __asm("d0");
  297.   register struct Library * a6 __asm("a6") = BASE_NAME;
  298.   register const char *a1 __asm("a1") = name;
  299.   register gid_t d0 __asm("d0") =  basegroup;
  300.   __asm __volatile ("jsr a6@(-0x6c)"
  301.   : "=r" (_res)
  302.   : "r" (a6), "r" (a1), "r" (d0)
  303.   : "a0","a1","d0","d1", "memory");
  304.   return _res;
  305. }
  306. static __inline int 
  307. setgid (BASE_PAR_DECL gid_t id)
  308. {
  309.   BASE_EXT_DECL
  310.   register int  _res  __asm("d0");
  311.   register struct Library * a6 __asm("a6") = BASE_NAME;
  312.   register gid_t d0 __asm("d0") = id;
  313.   __asm __volatile ("jsr a6@(-0x5a)"
  314.   : "=r" (_res)
  315.   : "r" (a6), "r" (d0)
  316.   : "a0","a1","d0","d1", "memory");
  317.   return _res;
  318. }
  319. static __inline void 
  320. setgrent (BASE_PAR_DECL0)
  321. {
  322.   BASE_EXT_DECL
  323.   register struct Library * a6 __asm("a6") = BASE_NAME;
  324.   __asm __volatile ("jsr a6@(-0x9c)"
  325.   : /* no output */
  326.   : "r" (a6)
  327.   : "a0","a1","d0","d1", "memory");
  328. }
  329. static __inline int 
  330. setgroups (BASE_PAR_DECL int ngroups,const gid_t * groups)
  331. {
  332.   BASE_EXT_DECL
  333.   register int  _res  __asm("d0");
  334.   register struct Library * a6 __asm("a6") = BASE_NAME;
  335.   register int d0 __asm("d0") = ngroups;
  336.   register const gid_t *a1 __asm("a1") =  groups;
  337.   __asm __volatile ("jsr a6@(-0x66)"
  338.   : "=r" (_res)
  339.   : "r" (a6), "r" (d0), "r" (a1)
  340.   : "a0","a1","d0","d1", "memory");
  341.   return _res;
  342. }
  343. static __inline int 
  344. setlastlog (BASE_PAR_DECL uid_t uid,char * name,char * host)
  345. {
  346.   BASE_EXT_DECL
  347.   register int  _res  __asm("d0");
  348.   register struct Library * a6 __asm("a6") = BASE_NAME;
  349.   register uid_t d0 __asm("d0") = uid;
  350.   register char *a0 __asm("a0") =  name;
  351.   register char *a1 __asm("a1") =  host;
  352.   __asm __volatile ("jsr a6@(-0xfc)"
  353.   : "=r" (_res)
  354.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  355.   : "a0","a1","d0","d1", "memory");
  356.   return _res;
  357. }
  358. static __inline int 
  359. setlogin (BASE_PAR_DECL const char *buffer)
  360. {
  361.   BASE_EXT_DECL
  362.   register int  _res  __asm("d0");
  363.   register struct Library * a6 __asm("a6") = BASE_NAME;
  364.   register const char *a1 __asm("a1") = buffer;
  365.   __asm __volatile ("jsr a6@(-0xde)"
  366.   : "=r" (_res)
  367.   : "r" (a6), "r" (a1)
  368.   : "a0","a1","d0","d1", "memory");
  369.   return _res;
  370. }
  371. static __inline void 
  372. setpwent (BASE_PAR_DECL0)
  373. {
  374.   BASE_EXT_DECL
  375.   register struct Library * a6 __asm("a6") = BASE_NAME;
  376.   __asm __volatile ("jsr a6@(-0x7e)"
  377.   : /* no output */
  378.   : "r" (a6)
  379.   : "a0","a1","d0","d1", "memory");
  380. }
  381. static __inline int 
  382. setregid (BASE_PAR_DECL gid_t real,gid_t  eff)
  383. {
  384.   BASE_EXT_DECL
  385.   register int  _res  __asm("d0");
  386.   register struct Library * a6 __asm("a6") = BASE_NAME;
  387.   register gid_t d0 __asm("d0") = real;
  388.   register gid_t d1 __asm("d1") =  eff;
  389.   __asm __volatile ("jsr a6@(-0x54)"
  390.   : "=r" (_res)
  391.   : "r" (a6), "r" (d0), "r" (d1)
  392.   : "a0","a1","d0","d1", "memory");
  393.   return _res;
  394. }
  395. static __inline int 
  396. setreuid (BASE_PAR_DECL uid_t real,uid_t  eff)
  397. {
  398.   BASE_EXT_DECL
  399.   register int  _res  __asm("d0");
  400.   register struct Library * a6 __asm("a6") = BASE_NAME;
  401.   register uid_t d0 __asm("d0") = real;
  402.   register uid_t d1 __asm("d1") =  eff;
  403.   __asm __volatile ("jsr a6@(-0x3c)"
  404.   : "=r" (_res)
  405.   : "r" (a6), "r" (d0), "r" (d1)
  406.   : "a0","a1","d0","d1", "memory");
  407.   return _res;
  408. }
  409. static __inline pid_t 
  410. setsid (BASE_PAR_DECL0)
  411. {
  412.   BASE_EXT_DECL
  413.   register pid_t  _res  __asm("d0");
  414.   register struct Library * a6 __asm("a6") = BASE_NAME;
  415.   __asm __volatile ("jsr a6@(-0xcc)"
  416.   : "=r" (_res)
  417.   : "r" (a6)
  418.   : "a0","a1","d0","d1", "memory");
  419.   return _res;
  420. }
  421. static __inline int 
  422. setuid (BASE_PAR_DECL uid_t id)
  423. {
  424.   BASE_EXT_DECL
  425.   register int  _res  __asm("d0");
  426.   register struct Library * a6 __asm("a6") = BASE_NAME;
  427.   register uid_t d0 __asm("d0") = id;
  428.   __asm __volatile ("jsr a6@(-0x42)"
  429.   : "=r" (_res)
  430.   : "r" (a6), "r" (d0)
  431.   : "a0","a1","d0","d1", "memory");
  432.   return _res;
  433. }
  434. static __inline void 
  435. setutent (BASE_PAR_DECL0)
  436. {
  437.   BASE_EXT_DECL
  438.   register struct Library * a6 __asm("a6") = BASE_NAME;
  439.   __asm __volatile ("jsr a6@(-0xe4)"
  440.   : /* no output */
  441.   : "r" (a6)
  442.   : "a0","a1","d0","d1", "memory");
  443. }
  444. static __inline int 
  445. ug_GetErr (BASE_PAR_DECL0)
  446. {
  447.   BASE_EXT_DECL
  448.   register int  _res  __asm("d0");
  449.   register struct Library * a6 __asm("a6") = BASE_NAME;
  450.   __asm __volatile ("jsr a6@(-0x24)"
  451.   : "=r" (_res)
  452.   : "r" (a6)
  453.   : "a0","a1","d0","d1", "memory");
  454.   return _res;
  455. }
  456. static __inline char *
  457. ug_GetSalt (BASE_PAR_DECL const struct passwd *user,char * buffer,ULONG  size)
  458. {
  459.   BASE_EXT_DECL
  460.   register char * _res  __asm("d0");
  461.   register struct Library * a6 __asm("a6") = BASE_NAME;
  462.   register const struct passwd *a0 __asm("a0") = user;
  463.   register char *a1 __asm("a1") =  buffer;
  464.   register ULONG d0 __asm("d0") =  size;
  465.   __asm __volatile ("jsr a6@(-0xb4)"
  466.   : "=r" (_res)
  467.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  468.   : "a0","a1","d0","d1", "memory");
  469.   return _res;
  470. }
  471. static __inline int 
  472. ug_SetupContextTagList (BASE_PAR_DECL const UBYTE* pname,struct TagItem * taglist)
  473. {
  474.   BASE_EXT_DECL
  475.   register int  _res  __asm("d0");
  476.   register struct Library * a6 __asm("a6") = BASE_NAME;
  477.   register const UBYTE* a0 __asm("a0") = pname;
  478.   register struct TagItem *a1 __asm("a1") =  taglist;
  479.   __asm __volatile ("jsr a6@(-0x1e)"
  480.   : "=r" (_res)
  481.   : "r" (a6), "r" (a0), "r" (a1)
  482.   : "a0","a1","d0","d1", "memory");
  483.   return _res;
  484. }
  485. #ifndef NO_INLINE_STDARG
  486. #define ug_SetupContextTags(const UBYTE * pname, tags...) \
  487.     ({ ULONG _tags[] = { tags }; ug_SetupContextTagList(pname, _tags); })
  488. #endif
  489. static __inline const char *
  490. ug_StrError (BASE_PAR_DECL LONG code)
  491. {
  492.   BASE_EXT_DECL
  493.   register const char * _res  __asm("d0");
  494.   register struct Library * a6 __asm("a6") = BASE_NAME;
  495.   register LONG d1 __asm("d1") = code;
  496.   __asm __volatile ("jsr a6@(-0x2a)"
  497.   : "=r" (_res)
  498.   : "r" (a6), "r" (d1)
  499.   : "a0","a1","d0","d1", "memory");
  500.   return _res;
  501. }
  502. static __inline mode_t 
  503. umask (BASE_PAR_DECL mode_t mask)
  504. {
  505.   BASE_EXT_DECL
  506.   register mode_t  _res  __asm("d0");
  507.   register struct Library * a6 __asm("a6") = BASE_NAME;
  508.   register mode_t d0 __asm("d0") = mask;
  509.   __asm __volatile ("jsr a6@(-0xc0)"
  510.   : "=r" (_res)
  511.   : "r" (a6), "r" (d0)
  512.   : "a0","a1","d0","d1", "memory");
  513.   return _res;
  514. }
  515.  
  516. #ifdef USERGROUPBASE_IN_CONTEXT
  517.  
  518. /* Setup functions */
  519. #define ug_SetupContextTagList(r...) ug_SetupContextTagList(UserGroupBase, r)
  520. #define             ug_GetErr(r)    ug_GetErr(UserGroupBase)
  521. #define           ug_StrError(r...) ug_StrError(UserGroupBase, r)
  522. /* User identification */
  523. #define            getuid(r)    getuid(UserGroupBase)
  524. #define               geteuid(r)    geteuid(UserGroupBase)
  525. #define              setreuid(r...) setreuid(UserGroupBase, r)
  526. #define            setuid(r...) setuid(UserGroupBase, r)
  527. /* Group membership */
  528. #define            getgid(r)    getgid(UserGroupBase)
  529. #define               getegid(r)    getegid(UserGroupBase)
  530. #define              setregid(r...) setregid(UserGroupBase, r)
  531. #define            setgid(r...) setgid(UserGroupBase, r)
  532. #define             getgroups(r...) getgroups(UserGroupBase, r)
  533. #define             setgroups(r...) setgroups(UserGroupBase, r)
  534. #define            initgroups(r...) initgroups(UserGroupBase, r)
  535. /* User database */
  536. #define              getpwnam(r...) getpwnam(UserGroupBase, r)
  537. #define              getpwuid(r...) getpwuid(UserGroupBase, r)
  538. #define              setpwent(r)    setpwent(UserGroupBase)
  539. #define              getpwent(r)    getpwent(UserGroupBase)
  540. #define              endpwent(r)    endpwent(UserGroupBase)
  541. /* Group database */
  542. #define              getgrnam(r...) getgrnam(UserGroupBase, r)
  543. #define              getgrgid(r...) getgrgid(UserGroupBase, r)
  544. #define              setgrent(r)    setgrent(UserGroupBase)
  545. #define              getgrent(r)    getgrent(UserGroupBase)
  546. #define              endgrent(r)    endgrent(UserGroupBase)
  547. /* Password handling */
  548. #define             crypt(r...) crypt(UserGroupBase, r)
  549. #define            ug_GetSalt(r...) ug_GetSalt(UserGroupBase, r)
  550. #define               getpass(r...) getpass(UserGroupBase, r)
  551. /* Default protections */
  552. #define             umask(r...) umask(UserGroupBase, r)
  553. #define              getumask(r)    getumask(UserGroupBas)
  554. /* Sessions */
  555. #define            setsid(r)    setsid(UserGroupBase)
  556. #define               getpgrp(r)    getpgrp(UserGroupBase)
  557. #define              getlogin(r)    getlogin(UserGroupBase)
  558. #define              setlogin(r...) setlogin(UserGroupBase, r)
  559. /* Sessions, user login database (utmp) */
  560. #define              setutent(r)    setutent(UserGroupBase)
  561. #define              getutent(r)    getutent(UserGroupBase)
  562. #define              endutent(r)    endutent(UserGroupBase)
  563. #define            getlastlog(r...) getlastlog(UserGroupBase, r)
  564. #define            setlastlog(r...) setlastlog(UserGroupBase, r)
  565.  
  566. #endif /* USERGROUPBASE_IN_CONTEXT */
  567.  
  568. #undef BASE_EXT_DECL
  569. #undef BASE_PAR_DECL
  570. #undef BASE_PAR_DECL0
  571. #undef BASE_NAME
  572.  
  573. __END_DECLS
  574.  
  575. #endif /* _INLINE_USERGROUP_H */
  576.