Here's my stab
Code:
#include <stdio.h>
#include <time.h>
#include <unistd.h> // sleep()
void wait_for_alarm ( time_t alarm ) {
time_t now = time(NULL);
while ( difftime(alarm,now) > 0 ) {
sleep( 1 );
now = time(NULL);
}
printf( "Alarm!!!\n" );
}
int main ( ) {
time_t now, alarm;
char buff[BUFSIZ];
struct tm tm = { 0 };
printf( "Enter time in yyyy/mm/dd hh:mm:ss format > " );
fflush( stdout );
if ( fgets( buff, BUFSIZ, stdin ) != NULL ) {
int yr, mon, day, hr, min, sec;
if ( sscanf( buff, "%d/%d/%d %d:%d:%d",
&yr, &mon, &day, &hr, &min, &sec ) == 6 ) {
tm.tm_sec = sec;
tm.tm_min = min;
tm.tm_hour= hr;
tm.tm_mday= day;
tm.tm_mon = mon-1;
tm.tm_year= yr-1900;
alarm = mktime( &tm );
now = time( NULL );
if ( difftime(alarm,now) < 0 ) {
printf( "Alarm time passed\n" );
} else {
wait_for_alarm( alarm );
}
}
}
return 0;
}