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