src/protocols/zephyr/ZGetSender.c

changeset 10867
b39f9b646d6c
parent 10038
3589c2eed81c
child 11105
842fa517e08c
equal deleted inserted replaced
10866:40eab743e22b 10867:b39f9b646d6c
2 * It contains source for the ZGetSender.c function. 2 * It contains source for the ZGetSender.c function.
3 * 3 *
4 * Created by: Robert French 4 * Created by: Robert French
5 * 5 *
6 * $Source$ 6 * $Source$
7 * $Author: lschiere $ 7 * $Author: thekingant $
8 * 8 *
9 * Copyright (c) 1987, 1991 by the Massachusetts Institute of Technology. 9 * Copyright (c) 1987, 1991 by the Massachusetts Institute of Technology.
10 * For copying and distribution information, see the file 10 * For copying and distribution information, see the file
11 * "mit-copyright.h". 11 * "mit-copyright.h".
12 */ 12 */
14 14
15 #include "internal.h" 15 #include "internal.h"
16 16
17 #ifndef lint 17 #ifndef lint
18 static const char rcsid_ZGetSender_c[] = 18 static const char rcsid_ZGetSender_c[] =
19 "$Id: ZGetSender.c 10997 2004-09-18 22:25:12Z lschiere $"; 19 "$Id: ZGetSender.c 12553 2005-04-25 01:53:01Z thekingant $";
20 #endif 20 #endif
21 21
22 #ifndef WIN32
22 #include <pwd.h> 23 #include <pwd.h>
24 #endif
23 25
24 char *ZGetSender() 26 char *ZGetSender()
25 { 27 {
26 struct passwd *pw; 28 struct passwd *pw;
27 #ifdef ZEPHYR_USES_KERBEROS 29 #ifdef ZEPHYR_USES_KERBEROS
28 char pname[ANAME_SZ], pinst[INST_SZ], prealm[REALM_SZ]; 30 char pname[ANAME_SZ], pinst[INST_SZ], prealm[REALM_SZ];
29 static char sender[ANAME_SZ+INST_SZ+REALM_SZ+3] = ""; 31 static char sender[ANAME_SZ+INST_SZ+REALM_SZ+3] = "";
32 long int kerror;
30 #else 33 #else
31 static char sender[128] = ""; 34 static char sender[128] = "";
35 #endif
36
37 #ifdef WIN32
38 unsigned long sender_size = 127;
32 #endif 39 #endif
33 40
34 /* Return it if already cached */ 41 /* Return it if already cached */
35 42
36 /* if (*sender) 43 /* if (*sender)
37 return (sender); 44 return (sender);
38 */ 45 */
39 46
40 #ifdef ZEPHYR_USES_KERBEROS 47 #ifdef ZEPHYR_USES_KERBEROS
41 if (krb_get_tf_fullname((char *)TKT_FILE, pname, pinst, prealm) == KSUCCESS) 48 if ((kerror = krb_get_tf_fullname((char *)TKT_FILE, pname, pinst, prealm)) == KSUCCESS)
42 { 49 {
43 (void) sprintf(sender, "%s%s%s@%s", pname, (pinst[0]?".":""), 50 (void) sprintf(sender, "%s%s%s@%s", pname, (pinst[0]?".":""),
44 pinst, prealm); 51 pinst, prealm);
52 return (sender);
53 } else {
54 sprintf(sender,"%s@%s",(username?username:"unknown"),__Zephyr_realm);
45 return (sender); 55 return (sender);
46 } 56 }
47 #endif 57 #endif
48 58
49 /* XXX a uid_t is a u_short (now), but getpwuid 59 /* XXX a uid_t is a u_short (now), but getpwuid
50 * wants an int. AARGH! */ 60 * wants an int. AARGH! */
61 #ifdef WIN32
62 GetUserName(sender, &sender_size);
63 #else
51 pw = getpwuid((int) getuid()); 64 pw = getpwuid((int) getuid());
52 if (!pw) 65 if (!pw)
53 return ("unknown"); 66 return ("unknown");
54 (void) sprintf(sender, "%s@%s", pw->pw_name, __Zephyr_realm); 67 (void) sprintf(sender, "%s@%s", pw->pw_name, __Zephyr_realm);
68 #endif
55 return (sender); 69 return (sender);
56 } 70 }

mercurial