/* This file contains the UNIX-specific parts of the "elvprsv" program. */
extern struct passwd
*getpwuid();
/* This variable is used to add extra error messages for mail sent to root */
/* This function returns the login name of the owner of a file */
char *ownername(filename
)
char *filename
; /* name of a file */
/* stat the file, to get its uid */
if (stat(filename
, &st
) < 0)
/* get the /etc/passwd entry for that user */
pw
= getpwuid(st
.st_uid
);
ps
= "uid not found in password file";
/* return the user's name */
/* This function sends a mail message to a given user, saying that a file
void mail(user
, file
, when
)
char *user
; /* name of user who should receive the mail */
char *file
; /* name of original text file that was preserved */
char *when
; /* description of why the file was preserved */
char cmd
[80];/* buffer used for constructing a "mail" command */
FILE *m
, *popen(); /* stream used for giving text to the "mail" program */
char *base
; /* basename of the file */
/* separate the directory name from the basename. */
for (base
= file
+ strlen(file
); --base
> file
&& *base
!= SLASH
; )
/* for anonymous buffers, pretend the name was "foo" */
/* open a pipe to the "mail" program */
sprintf(cmd
, "mail \"-s=%s preserved!\" %s", base
, user
);
sprintf(cmd
, "mail %s >/dev/null 2>/dev/null", user
);
/* Can't send mail! Hope the user figures it out. */
/* Tell the user that the file was preserved */
fprintf(m
, "A version of your file \"%s%c%s\"\n", file
, SLASH
, base
);
fprintf(m
, "was preserved when %s.\n", when
);
fprintf(m
, "To recover this file, do the following:\n");
fprintf(m
, " chd %s\n", file
);
fprintf(m
, " cd %s\n", file
);
fprintf(m
, " elvisrecover %s\n", base
);
fprintf(m
, "With fond wishes for a speedy recovery,\n");
fprintf(m
, "\nP.S. %s\n", ps
);