]>
Commit | Line | Data |
---|---|---|
d832c38e | 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) */ |