stick this in your utmp and run it...

Eliot Lear lear at NET.BIO.NET
Sat Aug 5 17:56:12 AEST 1989


Written for SunOS 4.0.  Should run under most 4.2 and 4.3 systems.
Probably not under System V.  Run this when you are hungary and
looking for fellow hackers.  Use -S in case of emergancy!


static char *Id="$Header: /bionet/bio0/staff/lear/src/RCS/foodp.c,v 1.2 89/08/05 00:48:46 lear Exp $";

/* Foodp!  A program made out of necessity!
 *
 * Usage: foodp [ -sSf ]
 *	  to turn on, use no arguments, to turn off use the -s, which
 *	  stands for SATIATED.  Use -S for starving, and -f for full
 *	  (same as -s).
 *
 */

/*
 * $Log:	foodp.c,v $
 * Revision 1.2  89/08/05  00:48:46  lear
 * added -f and -S options.
 * 
 * Revision 1.1  89/08/04  10:29:17  lear
 * Initial revision
 * 
 */

#include <stdio.h>
#include <sys/types.h>
#include <sys/file.h>
#include <fcntl.h>
#include <utmp.h>
#include <lastlog.h>

main(argc,argv)
     int argc;
     char *argv[];
{
    struct utmp u;
    char *myname;
    int c;
    int ufd;
    int k=0;
    int sflag=0;
    int Sflag=0;

    while ((c = getopt(argc,argv,"sSf")) != -1)
      if ( c == 's' || c == 'f' )
	sflag++;
      else
	{
	    if ( c == 'S' )
	      Sflag++;
	    else
	      {
		  fprintf(stderr,"Usage: %s [ -s ]\n",argv[0]);
		  exit(1);
	      }
	}
    
    if ( (myname=getlogin()) == NULL )
      {
	  fprintf(stderr,"No name found in utmp file.\n");
	  exit(0);
      }

    if ( (ufd= open("/etc/utmp",O_RDWR)) == -1 )
      {
	  perror("open");
	  exit(1);
      }
    
    while ( read(ufd,&u,sizeof(struct utmp)) == sizeof(struct utmp) )
      {
	  if ( ! strncmp(u.ut_name,myname,8))
	    {
		lseek(ufd,-sizeof(struct utmp),L_INCR);
		if ( sflag )
		  strcpy(u.ut_host,"Not hungry");
		else
		  {
		      if ( ! Sflag )
			strcpy(u.ut_host,"FOODP!");
		      else
			strcpy(u.ut_host,"STARVING!");
		  }
		
		write(ufd,&u,sizeof(struct utmp));
	    }
      }

    close(ufd);
}



More information about the Alt.sources mailing list