port-irix.c revision 98937
198937Sdes#include "includes.h" 298937Sdes 398937Sdes#if defined(WITH_IRIX_PROJECT) || defined(WITH_IRIX_JOBS) || defined(WITH_IRIX_ARRAY) 498937Sdes 598937Sdes#ifdef WITH_IRIX_PROJECT 698937Sdes#include <proj.h> 798937Sdes#endif /* WITH_IRIX_PROJECT */ 898937Sdes#ifdef WITH_IRIX_JOBS 998937Sdes#include <sys/resource.h> 1098937Sdes#endif 1198937Sdes#ifdef WITH_IRIX_AUDIT 1298937Sdes#include <sat.h> 1398937Sdes#endif /* WITH_IRIX_AUDIT */ 1498937Sdes 1598937Sdesvoid 1698937Sdesirix_setusercontext(struct passwd *pw) 1798937Sdes{ 1898937Sdes#ifdef WITH_IRIX_PROJECT 1998937Sdes prid_t projid; 2098937Sdes#endif /* WITH_IRIX_PROJECT */ 2198937Sdes#ifdef WITH_IRIX_JOBS 2298937Sdes jid_t jid = 0; 2398937Sdes#else 2498937Sdes# ifdef WITH_IRIX_ARRAY 2598937Sdes int jid = 0; 2698937Sdes# endif /* WITH_IRIX_ARRAY */ 2798937Sdes#endif /* WITH_IRIX_JOBS */ 2898937Sdes 2998937Sdes#ifdef WITH_IRIX_JOBS 3098937Sdes jid = jlimit_startjob(pw->pw_name, pw->pw_uid, "interactive"); 3198937Sdes if (jid == -1) 3298937Sdes fatal("Failed to create job container: %.100s", 3398937Sdes strerror(errno)); 3498937Sdes#endif /* WITH_IRIX_JOBS */ 3598937Sdes#ifdef WITH_IRIX_ARRAY 3698937Sdes /* initialize array session */ 3798937Sdes if (jid == 0 && newarraysess() != 0) 3898937Sdes fatal("Failed to set up new array session: %.100s", 3998937Sdes strerror(errno)); 4098937Sdes#endif /* WITH_IRIX_ARRAY */ 4198937Sdes#ifdef WITH_IRIX_PROJECT 4298937Sdes /* initialize irix project info */ 4398937Sdes if ((projid = getdfltprojuser(pw->pw_name)) == -1) { 4498937Sdes debug("Failed to get project id, using projid 0"); 4598937Sdes projid = 0; 4698937Sdes } 4798937Sdes if (setprid(projid)) 4898937Sdes fatal("Failed to initialize project %d for %s: %.100s", 4998937Sdes (int)projid, pw->pw_name, strerror(errno)); 5098937Sdes#endif /* WITH_IRIX_PROJECT */ 5198937Sdes#ifdef WITH_IRIX_AUDIT 5298937Sdes if (sysconf(_SC_AUDIT)) { 5398937Sdes debug("Setting sat id to %d", (int) pw->pw_uid); 5498937Sdes if (satsetid(pw->pw_uid)) 5598937Sdes debug("error setting satid: %.100s", strerror(errno)); 5698937Sdes } 5798937Sdes#endif /* WITH_IRIX_AUDIT */ 5898937Sdes} 5998937Sdes 6098937Sdes 6198937Sdes#endif /* defined(WITH_IRIX_PROJECT) || defined(WITH_IRIX_JOBS) || defined(WITH_IRIX_ARRAY) */ 62