1 #include "includes.h"
   2 
   3 #if defined(WITH_IRIX_PROJECT) || defined(WITH_IRIX_JOBS) || defined(WITH_IRIX_ARRAY)
   4 
   5 #ifdef WITH_IRIX_PROJECT
   6 #include <proj.h>
   7 #endif /* WITH_IRIX_PROJECT */
   8 #ifdef WITH_IRIX_JOBS
   9 #include <sys/resource.h>
  10 #endif
  11 #ifdef WITH_IRIX_AUDIT
  12 #include <sat.h>
  13 #endif /* WITH_IRIX_AUDIT */
  14 
  15 void
  16 irix_setusercontext(struct passwd *pw)
  17 {
  18 #ifdef WITH_IRIX_PROJECT
  19         prid_t projid;
  20 #endif /* WITH_IRIX_PROJECT */
  21 #ifdef WITH_IRIX_JOBS
  22         jid_t jid = 0;
  23 #else
  24 # ifdef WITH_IRIX_ARRAY
  25         int jid = 0;
  26 # endif /* WITH_IRIX_ARRAY */
  27 #endif /* WITH_IRIX_JOBS */
  28 
  29 #ifdef WITH_IRIX_JOBS
  30         jid = jlimit_startjob(pw->pw_name, pw->pw_uid, "interactive");
  31         if (jid == -1)
  32                 fatal("Failed to create job container: %.100s",
  33                     strerror(errno));
  34 #endif /* WITH_IRIX_JOBS */
  35 #ifdef WITH_IRIX_ARRAY
  36         /* initialize array session */
  37         if (jid == 0  && newarraysess() != 0)
  38                 fatal("Failed to set up new array session: %.100s",
  39                     strerror(errno));
  40 #endif /* WITH_IRIX_ARRAY */
  41 #ifdef WITH_IRIX_PROJECT
  42         /* initialize irix project info */
  43         if ((projid = getdfltprojuser(pw->pw_name)) == -1) {
  44                 debug("Failed to get project id, using projid 0");
  45                 projid = 0;
  46         }
  47         if (setprid(projid))
  48                 fatal("Failed to initialize project %d for %s: %.100s",
  49                     (int)projid, pw->pw_name, strerror(errno));
  50 #endif /* WITH_IRIX_PROJECT */
  51 #ifdef WITH_IRIX_AUDIT
  52         if (sysconf(_SC_AUDIT)) {
  53                 debug("Setting sat id to %d", (int) pw->pw_uid);
  54                 if (satsetid(pw->pw_uid))
  55                         debug("error setting satid: %.100s", strerror(errno));
  56         }
  57 #endif /* WITH_IRIX_AUDIT */
  58 }
  59 
  60 
  61 #endif /* defined(WITH_IRIX_PROJECT) || defined(WITH_IRIX_JOBS) || defined(WITH_IRIX_ARRAY) */
  62 
  63 #pragma ident   "%Z%%M% %I%     %E% SMI"