|
|
1.1 ! root 1: # ! 2: ! 3: /* ! 4: * Mail -- a mail program ! 5: * ! 6: * EECS Cory 11/70 Version 7.0 ! 7: * ! 8: * Local routines that are installation dependent. ! 9: * All fiddlers please note: if you make careful note of ! 10: * what you change here, I will incorporate your changes and ! 11: * you won't have to remake them each release. ! 12: */ ! 13: ! 14: #include "rcv.h" ! 15: #include <pwd.h> ! 16: ! 17: /* ! 18: * Locate the user's mailbox file (ie, the place where new, unread ! 19: * mail is queued). At Cory, it is in /usr/spool/mail/name. ! 20: */ ! 21: ! 22: findmail() ! 23: { ! 24: register char *cp; ! 25: ! 26: cp = copy("/usr/spool/mail/", mailname); ! 27: copy(myname, cp); ! 28: } ! 29: ! 30: /* ! 31: * Get rid of the queued mail. ! 32: */ ! 33: ! 34: demail() ! 35: { ! 36: register int p; ! 37: ! 38: close(creat(mailname, 0666)); ! 39: alter(mailname); ! 40: } ! 41: ! 42: /* ! 43: * Mail file lock / unlock. ! 44: * Insignificant on Cory version 7, since /usr/spool/mail not ! 45: * generally writable. ! 46: */ ! 47: ! 48: lock(name) ! 49: char *name; ! 50: { ! 51: ! 52: return(0); ! 53: } ! 54: ! 55: unlock() ! 56: { ! 57: ! 58: return(0); ! 59: } ! 60: ! 61: /* ! 62: * Discover user login name. ! 63: */ ! 64: ! 65: username(uid, namebuf) ! 66: char namebuf[]; ! 67: { ! 68: register char *np; ! 69: ! 70: if (uid == getuid() && (np = getenv("USER")) != NOSTR) { ! 71: strncpy(namebuf, np, 9); ! 72: return(0); ! 73: } ! 74: return(getname(uid, namebuf)); ! 75: } ! 76: ! 77: /* ! 78: * Discover user name from uid. Uses the fancy hashed passwd ! 79: * data base available only on Cory Unix. ! 80: */ ! 81: ! 82: getname(uid, namebuf) ! 83: char namebuf[]; ! 84: { ! 85: struct passwd *gp; ! 86: struct passwd *getpwuid(); ! 87: ! 88: gp = getpwuid(uid); ! 89: if (gp == (struct passwd *) 0) ! 90: return(-1); ! 91: strcpy(namebuf, gp->pw_name); ! 92: return(0); ! 93: } ! 94: ! 95: /* ! 96: * Cory hall getuserid ! 97: */ ! 98: ! 99: getuserid(name) ! 100: char name[]; ! 101: { ! 102: struct passwd *gp; ! 103: struct passwd *getpwnam(); ! 104: ! 105: if ((gp = getpwnam(name)) == (struct passwd *) 0) ! 106: return(-1); ! 107: return(gp->pw_uid); ! 108: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.