libpurple/protocols/zephyr/ZGetSender.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 15435
4b933b06d75e
child 16238
33bf2fd32108
child 18068
b6554e3c8224
child 20478
46933dc62880
child 31294
73607ab89c6f
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

/* 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;
}

mercurial