Mercurial > pidgin
diff libpurple/protocols/zephyr/ZGetSender.c @ 15373:5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Sat, 20 Jan 2007 02:32:10 +0000 |
parents | |
children | a8cc50c2279f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/protocols/zephyr/ZGetSender.c Sat Jan 20 02:32:10 2007 +0000 @@ -0,0 +1,53 @@ +/* This file is part of the Project Athena Zephyr Notification System. + * It contains source for the ZGetSender.c function. + * + * Created by: Robert French + * + * Copyright (c) 1987, 1991 by the Massachusetts Institute of Technology. + * For copying and distribution information, see the file + * "mit-copyright.h". + */ + +#include "internal.h" + +#ifndef WIN32 +#include <pwd.h> +#endif + +char *ZGetSender() +{ + struct passwd *pw; +#ifdef ZEPHYR_USES_KERBEROS + char pname[ANAME_SZ]; + char pinst[INST_SZ]; + char prealm[REALM_SZ]; + static char sender[ANAME_SZ+INST_SZ+REALM_SZ+3] = ""; + long int kerror; +#else + static char sender[128] = ""; +#endif + +#ifdef WIN32 + unsigned long sender_size = sizeof(sender) - 1; +#endif + +#ifdef ZEPHYR_USES_KERBEROS + if ((kerror = krb_get_tf_fullname((char *)TKT_FILE, pname, pinst, prealm)) == KSUCCESS) + { + sprintf(sender, "%s%s%s@%s", pname, (pinst[0] ? "." : ""), pinst, prealm); + return sender; + } +#endif + +#ifdef WIN32 + GetUserName(sender, &sender_size); +#else + /* XXX a uid_t is a u_short (now), but getpwuid + * wants an int. AARGH! */ + pw = getpwuid((int) getuid()); + if (!pw) + return ("unknown"); + sprintf(sender, "%s@%s", pw->pw_name, __Zephyr_realm); +#endif + return sender; +}