/* File: rec4.c
   Passing records by reference.
*/

typedef struct tag {
   int hour ;
   int minute ;
} time_t ;


time_t add75(time_t *p) {
   time_t result ;
   int min ;

   /* Correct for bogus minutes */

   if ( (*p).minute > 59 ) {
      min = p->minute ;
      p->minute = min % 60 ;
      p->hour += min / 60 ;
   }

   min = p->minute + 15 ;
   result.minute = min % 60 ;
   result.hour = p->hour + 1 + (min/60) ;

   return result ;
}


main() {
  time_t start, stop ;

  printf("First Run ...\n") ;
  start.hour = 10 ;
  start.minute = 0 ;

  stop = add75(&start) ;

  printf ("Start at %d:%02d, stop at %d:%02d\n", 
     start.hour, start.minute, stop.hour, stop.minute) ;

  printf("Second Run ...\n") ;
  start.hour = 2 ;
  start.minute = 30 ;

  stop = add75(&start) ;

  printf ("Start at %d:%02d, stop at %d:%02d\n", 
     start.hour, start.minute, stop.hour, stop.minute) ;

  printf("Third Run ...\n") ;
  start.hour = 4 ;
  start.minute = 45 ;

  stop = add75(&start) ;

  printf ("Start at %d:%02d, stop at %d:%02d\n", 
     start.hour, start.minute, stop.hour, stop.minute) ;

  printf("Fourth Run ...\n") ;
  start.hour = 4 ;
  start.minute = 90 ;

  stop = add75(&start) ;

  printf ("Start at %d:%02d, stop at %d:%02d\n", 
     start.hour, start.minute, stop.hour, stop.minute) ;
}
