Bugs in monthd for BSD4.3 (+Fix)

Steve Lademann steve at gec-mi-at.co.uk
Tue Nov 22 22:42:41 AEST 1988


Problem: The monthd program distributed as part of the calendar/appointment
         reminder system, month, has a couple of problems when used with
         BSD4.3. First, it doesn't print the reminder message on the
         terminal, and second, it doesn't exit when you log out.

Fix:     Apply the following patches:-

*** monthd.c.old	Mon Nov 21 15:32:18 1988
--- monthd.c	Tue Nov 22 12:33:34 1988
***************
*** 24,32 ****
--- 24,36 ----
  struct event_rec events = {{0, 0, 0}, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0},
  0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0}, 0, 0, 0, 0, 0, {0, 0, 0}, 0};
  
+ /* Place to store original login */
+ char ologin[20];
+ 
  extern char *get_home_dir();
  extern alarm_t alarm();
  extern unsigned short getuid();
+ extern char *getlogin();
  
  main(argc, argv)
  int argc;
***************
*** 34,39 ****
--- 38,44 ----
  {
  	int sig_terminate();
  
+ 	strcpy(ologin, getlogin());
  	prog_name = argv[0];
  	user_id = (int) getuid();
  	parent_pid = getppid();
***************
*** 45,51 ****
  	*/
  	month_dir = get_home_dir(user_id);
  	check_args(argc, argv);
! 	close(0); close(1); close(2);	/* close stdin, stdout, stderr */
  	if (fork() == 0) {
  	    signal(SIGHUP, sig_terminate);	/* child process */
  	    signal(SIGTERM, sig_terminate);
--- 50,56 ----
  	*/
  	month_dir = get_home_dir(user_id);
  	check_args(argc, argv);
! /*	close(0); close(1); close(2);	/* close stdin, stdout, stderr */
  	if (fork() == 0) {
  	    signal(SIGHUP, sig_terminate);	/* child process */
  	    signal(SIGTERM, sig_terminate);
***************
*** 212,217 ****
--- 217,223 ----
  	}
  
  	fprintf(tty, ".   \r\n\007");
+ 	fflush(tty);
  }
  
  logged_out()
***************
*** 222,228 ****
  #if SYS5
  	return(getpgrp() == 0);	/* pgrp is 0 after logout */
  #else
! 	return(getpgrp(0) == 0);/* pgrp is 0 after logout */
  #endif
  }
  
--- 228,237 ----
  #if SYS5
  	return(getpgrp() == 0);	/* pgrp is 0 after logout */
  #else
! /*	return(getpgrp(0) == 0);/* pgrp is 0 after logout */
! /* OH NO IT ISN'T - at least not on BSD4.3 steve at gec-mi-at.co.uk */
! 	return(strcmp(ologin, getlogin())); /* Compare current and old login */
! 	
  #endif
  }

Steve Lademann          |Phone: 44 727 59292 x4326
Marconi Instruments Ltd |UUCP : ...mcvax!ukc!hrc63!miduet!steve
St. Albans    AL4 0JN   |     : ...mcvax!ukc!root44!miduet!steve
Herts.   UK             |NRS  : steve at uk.co.gec-mi-at



More information about the Comp.sources.bugs mailing list