|
|
1.1 ! root 1: #include "uucp.h" ! 2: #include <pwd.h> ! 3: ! 4: ! 5: /******* ! 6: * sdmail(file, uid) ! 7: * char *file, *uid; ! 8: * ! 9: * sdmail - this routine will determine the owner ! 10: * of the file (file), create a message string and ! 11: * call "mailst" to send the cleanup message. ! 12: * This is only implemented for local system ! 13: * mail at this time. ! 14: */ ! 15: ! 16: sdmail(file, uid) ! 17: char *file, *uid; ! 18: { ! 19: static struct passwd *pwd; ! 20: struct passwd *getpwuid(); ! 21: char mstr[40]; ! 22: ! 23: sprintf(mstr, "uuclean deleted file %s\n", file); ! 24: if (pwd->pw_uid == uid) { ! 25: mailst(pwd->pw_name, mstr); ! 26: return(0); ! 27: } ! 28: ! 29: setpwent(); ! 30: if ((pwd = getpwuid(uid)) != NULL) { ! 31: mailst(pwd->pw_name, mstr); ! 32: } ! 33: return(0); ! 34: } ! 35: ! 36: ! 37: /*** ! 38: * mailst(user, str) ! 39: * char *user, *str; ! 40: * ! 41: * mailst - this routine will fork and execute ! 42: * a mail command sending string (str) to user (user). ! 43: */ ! 44: ! 45: mailst(user, str) ! 46: char *user, *str; ! 47: { ! 48: FILE *fp; ! 49: extern FILE *popen(), *pclose(); ! 50: char cmd[100]; ! 51: ! 52: sprintf(cmd, "mail %s", user); ! 53: if ((fp = popen(cmd, "w")) == NULL) ! 54: return; ! 55: fprintf(fp, "%s", str); ! 56: pclose(fp); ! 57: return; ! 58: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.