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
irix_setusercontext(struct passwd * pw)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"
64