~ubuntu-branches/ubuntu/karmic/openafs/karmic-updates

« back to all changes in this revision

Viewing changes to src/sys/pagsh.c

  • Committer: Bazaar Package Importer
  • Author(s): Russ Allbery
  • Date: 2008-09-22 19:07:02 UTC
  • mfrom: (12.1.14 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080922190702-59m13d7kn6gkw32d
Tags: 1.4.7.dfsg1-6
* Apply upstream patch to free /proc entries in the correct order.
  Thanks, Marc Dionne.  (Closes: #493914)
* Apply upstream deltas to support 2.6.27 kernels and to stop using
  COMMON_KERN_CFLAGS for all 2.6 kernels uniformly, which fixes
  problems on amd64 with newer kernels.  Thanks, Björn Torkelsson.
  (LP: #267504)
* Translation updates:
  - Swedish, thanks Martin Bagge.  (Closes: #493120)

Show diffs side-by-side

added added

removed removed

Lines of Context:
11
11
#include <afs/param.h>
12
12
 
13
13
RCSID
14
 
    ("$Header: /cvs/openafs/src/sys/pagsh.c,v 1.9.2.3 2006/10/06 12:44:43 shadow Exp $");
 
14
    ("$Header: /cvs/openafs/src/sys/pagsh.c,v 1.9.2.8 2007/12/13 21:23:42 shadow Exp $");
15
15
 
16
16
#ifdef  AFS_AIX32_ENV
17
17
#include <signal.h>
 
18
#ifdef AFS_AIX51_ENV
 
19
#include <sys/cred.h>
 
20
#include <sys/pag.h>
 
21
#include <errno.h>
 
22
#endif
18
23
#endif
19
24
#include <stdio.h>
20
25
#include <stdlib.h>
22
27
#ifndef AFS_NT40_ENV
23
28
#include <unistd.h>
24
29
#endif
25
 
#ifdef HAVE_STRING_H
26
30
#include <string.h>
27
 
#endif
28
31
#include <pwd.h>
29
32
#ifdef AFS_KERBEROS_ENV
30
33
#include <sys/types.h>
86
89
static afs_uint32
87
90
curpag(void)
88
91
{
 
92
#if defined(AFS_AIX51_ENV)
 
93
    int code = getpagvalue("afs");
 
94
    if (code < 0 && errno == EINVAL)
 
95
        code = 0;
 
96
    return code;
 
97
#else
89
98
    afs_uint32 groups[NGROUPS_MAX];
90
99
    afs_uint32 g0, g1;
91
100
    afs_uint32 h, l, ret;
109
118
            return -1;
110
119
    }
111
120
    return -1;
 
121
#endif
112
122
}
113
123
 
114
124
int
119
129
    afs_uint32 pag;
120
130
    struct stat sbuf;
121
131
    char fname[256], *prefix = "/ticket/";
 
132
    char fname5[256], *prefix5 = "FILE:/ticket/krb5cc_";
122
133
    int numenv;
123
134
    char **newenv, **senv, **denv;
124
135
 
125
136
    if (stat("/ticket", &sbuf) == -1) {
126
137
        prefix = "/tmp/tkt";
 
138
        prefix5 = "FILE:/tmp/krb5cc_";
127
139
    }
128
140
 
129
141
    pag = curpag() & 0xffffffff;
130
142
    if (pag == -1) {
131
143
        sprintf(fname, "%s%d", prefix, getuid());
 
144
        sprintf(fname5, "%s%d", prefix5, getuid());
132
145
    } else {
133
146
        sprintf(fname, "%sp%ld", prefix, pag);
 
147
        sprintf(fname5, "%sp%ld", prefix5, pag);
134
148
    }
135
149
/*    ktc_set_tkt_string(fname); */
136
150
 
139
153
    newenv = (char **)malloc((numenv + 2) * sizeof(char *));
140
154
 
141
155
    for (senv = environ, denv = newenv; *senv; *senv++) {
142
 
        if (strncmp(*senv, "KRBTKFILE=", 10) != 0)
 
156
        if (strncmp(*senv, "KRBTKFILE=", 10) != 0 &&
 
157
                strncmp(*senv, "KRB5CCNAME=", 11) != 0)
143
158
            *denv++ = *senv;
144
159
    }
145
160
 
146
 
    *denv = malloc(10 + strlen(fname) + 1);
 
161
    *denv = malloc(10+11 + strlen(fname) + strlen(fname5) + 2);
147
162
    strcpy(*denv, "KRBTKFILE=");
148
163
    strcat(*denv, fname);
 
164
    *(denv+1) = *denv + strlen(*denv) + 1;
 
165
    denv++;
 
166
    strcpy(*denv, "KRB5CCNAME=");
 
167
    strcat(*denv, fname5);
149
168
    *++denv = 0;
150
169
    environ = newenv;
 
170
    return 0;
151
171
}
152
172
 
153
173
#endif