Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!sunybcs!mesches From: mesches@sunybcs.UUCP (Scott Mesches) Newsgroups: net.sources Subject: checkmail (a cute little mailchecking utility) Message-ID: <561@sunybcs.UUCP> Date: Sun, 3-Aug-86 20:50:43 EDT Article-I.D.: sunybcs.561 Posted: Sun Aug 3 20:50:43 1986 Date-Received: Mon, 4-Aug-86 04:16:48 EDT Organization: SUNY/Buffalo Computer Science Lines: 197 Keywords: C and man page source. Nroff'd man page for description. CHECKMAIL(1) Local UNIX Programmer's Manual CHECKMAIL(1) NAME checkmail - check the status of your and others mail SYNOPSIS checkmail [ -q ] [ user ... ] DESCRIPTION checkmail tells whether you have, mail (old mail), new mail, no mail, or no mailbox on the machine it is executed on. By default, checkmail only reports the status of your mail- box, it returns a status of one if you have new mail and zero otherwise. If you specify a list of users, it tells you the state of their mailbox(s). If you have a .hushlogin file, it defeats mail checking on login. This program can then be used to re-instate this. It can also check your mail on login, and if you have new mail start up a mail job in the background with the following in your .login file. checkmail if ($status != 0) then mail & endif with the -q option, checkmail is quiet, has no output but still sets the status flag. BUGS biff if the user is logged in and they have biff set to y, the status returned will be that of old mail. from If the user executes the command "from" it will also appear as old mail. SEE ALSO chtim(1), stat(2), biff(1), from(1) AUTHOR Scott Mesches # This is a shell archive. Remove anything before this line, then # unpack it by saving it in a file and typing "sh file". (Files # unpacked will be owned by you and have default permissions.) # # This archive contains: # checkmail.1 checkmail.c echo x - checkmail.1 sed -e 's/^X//' > "checkmail.1" << '//E*O*F checkmail.1//' X.TH CHECKMAIL 1 "15 July 1986" "" "Local UNIX Programmer's Manual" X.SH NAME Xcheckmail \- check the status of your and others mail X.SH SYNOPSIS X.B checkmail X[ X-q X] [ Xuser ... X] X.SH DESCRIPTION Xcheckmail tells whether you have, mail (old mail), new mail, no mail, Xor no mailbox on the machine it is executed on. X.PP XBy default, X.I checkmail Xonly reports the status of your mailbox, it returns a status of one Xif you have X.I "new mail" Xand zero otherwise. XIf you specify a list of users, it tells you Xthe state of their mailbox(s). X.PP XIf you have a .hushlogin file, it defeats mail checking on login. XThis program can then be used to re-instate this. It can also check Xyour mail on login, and if you have new mail start up a mail job Xin the background with the following in your X.I .login Xfile. X X.nf X checkmail X if ($status != 0) then X mail & X endif X.fi X.PP Xwith the -q option, checkmail is quiet, has no output but still Xsets the status flag. X.SH BUGS X.I biff Xif the user is logged in and they have biff set to y, the status Xreturned will be that of old mail. X.PP X.I from XIf the user executes the command "from" it will also appear as old mail. X.SH "SEE ALSO" Xchtim(1), stat(2), biff(1), from(1) X.SH AUTHOR XScott Mesches //E*O*F checkmail.1// echo x - checkmail.c sed -e 's/^X//' > "checkmail.c" << '//E*O*F checkmail.c//' X#ifndef lint Xstatic char *sccsid = "@(#)checkmail.c 1.4 (Scott Mesches) 7/18/86"; X#endif X X/* X * checkmail -- Mail checker for me and other folks. X * Returns a status of one for new mail, zero otherwise. X * -q option supresses output and only affects status. X * Usage: checkmail [ -q ] [ name... ] X */ X X#include X#include X#include X#include X X#define MAILDIR "/usr/spool/mail" X#define TRUE 1 X#define FALSE 0 X Xmain (argc, argv) Xint argc; Xchar *argv[]; X{ X int i, qflag = FALSE; X struct passwd *getpwuid (), *pwd; X X if (argc == 1) { X if ((pwd = getpwuid (getuid ())) == NULL) { X perror (*argv); X exit (1); X } X printf ("You have "); X exit (status (pwd -> pw_name,qflag)); X } X else { X if (*argv[1] == '-') { X if (!strcmp("-q",argv[1])) { X qflag = TRUE; X if ((pwd = getpwuid (getuid ())) == NULL) { X perror (*argv); X exit (1); X } X (void)status (pwd -> pw_name,qflag); X } X else X fprintf(stderr,"Usage: %s [ -q ] [ user ... ]\n", argv[0]); X } X else X for (i = 1; i < argc; i++) { X printf ("%s has ", argv[i]); X (void)status (argv[i],qflag); X } X } X} X Xstatus (name,flag) Xchar *name; Xint flag; X{ X char path[1024]; X struct stat st; X X (void) sprintf (path, "%s/%s", MAILDIR, name); X if (stat (path, &st)) { X if (flag == FALSE) X printf ("no mailbox.\n"); X return (0); X } X if (st.st_size == 0) { X if (flag == FALSE) X printf ("no mail.\n"); X } X else X if (st.st_mtime > st.st_atime) { X if (flag == FALSE) X printf ("new mail.\n"); X return (1); X } X else X if (flag == FALSE) X printf ("mail.\n"); X return(0); X} //E*O*F checkmail.c// exit 0