From 7e0cdcbbf780fd3edbbbb9fd084e49eb5b68d434 Mon Sep 17 00:00:00 2001 From: "Robert S. French" Date: Thu, 25 Jun 1987 23:35:17 +0000 Subject: Initial revision --- lib/ZGetSender.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 lib/ZGetSender.c (limited to 'lib/ZGetSender.c') diff --git a/lib/ZGetSender.c b/lib/ZGetSender.c new file mode 100644 index 0000000..bee171a --- /dev/null +++ b/lib/ZGetSender.c @@ -0,0 +1,61 @@ +/* This file is part of the Project Athena Zephyr Notification System. + * It contains source for the ZGetSender.c function. + * + * Created by: Robert French + * + * $Source$ + * $Author$ + * + * Copyright (c) 1987 by the Massachusetts Institute of Technology. + * For copying and distribution information, see the file + * "mit-copyright.h". + */ +/* $Header$ */ + +#include + +#include + +#include + +char *ZGetSender() +{ + char *tktfile; + static char sender[128] = ""; + char pname[ANAME_SZ],pinst[INST_SZ]; + FILE *fp; + struct passwd *pw; + + if (*sender) + return (sender); + + tktfile = (char *)TKT_FILE; + if (!(fp = fopen(tktfile,"r"))) { + pw = getpwuid(getuid()); + if (!pw) + return ("unauth"); + sprintf(sender,"%s@UNAUTH",pw->pw_name); + return (sender); + } + getst(fp,pname,ANAME_SZ); + getst(fp,pinst,INST_SZ); + sprintf(sender,"%s%s%s@%s",pname,(pinst[0]?".":""),pinst, + __Zephyr_realm); + + return (sender); +} + +static getst(fp,s,n) + FILE *fp; + char *s; + int n; +{ + int count; + + count = n; + while (fread(s,1,1,fp) && --count) + if (!*(s++)) + return; + *(s++) = '\0'; + return; +} -- cgit v1.2.3