void print_calendar (FILE * f, int y, astro_system * asys) { tib_day *td; long int prev_month = 0; // to record last month's number unsigned char prev_month_type = NORMAL; // to record last month's type td = get_tib_day_from_tib_date (y, 1, 1, asys, FIRST, FIRST); get_day_astro_data (td, asys, 0); // to initialize the astrological data print_year_info (f, td->month->year); while (td->month->year->year == y) { // if we changed month (it also prints the first month if (prev_month != td->month->month || td->month->type != prev_month_type) { print_month_info (f, td->month); prev_month = td->month->month; prev_month_type = td->month->type; } print_day_info (f, td, asys); // automaticall updated td->month, td->year, etc. tib_day_next (td, asys); // will change td->month->year->year } }
int main(int argc, char **argv, char **env) { printf("Content-type: text/html\n\n"); //default value year=2016; month=5; timez_off=-540; //lang=T_Korean; lang=T_English; //system time time_t ltime; struct tm *today,*gmt_time; int tzoffset; time(<ime); today=localtime(<ime); year=today->tm_year+1900; month=today->tm_mon+1; cur_time.year=today->tm_year + 1900; cur_time.month=today->tm_mon + 1; cur_time.day=today->tm_mday; cur_time.hour=today->tm_hour; cur_time.min=today->tm_min; cur_time_sec=today->tm_sec; gmt_time=gmtime(<ime); timez_off=getminbytime(gmt_time->tm_year+1900,gmt_time->tm_mon+1,gmt_time->tm_mday ,gmt_time->tm_hour,gmt_time->tm_min, cur_time.year,cur_time.month,cur_time.day ,cur_time.hour,cur_time.min); int i,in_st_no ; int cnt; char *buf; char *tmp; char *d[20]; int time_year_system=1; //commandline if (argc!=1) { for(i=1;i<argc;i++) { printf("argc[%d]=%s ",i,argv[i]); in_st_no=atoi(argv[i]); if (i==1) { if ((in_st_no<10000)&&(in_st_no>-10000)) { year=in_st_no; time_year_system=0; } } if (i==2) { if ((in_st_no<13)&&(in_st_no>0)) { month=in_st_no; time_year_system=0; } } if (i==3) { printf(" timaezone in_st_no=%d",in_st_no); if ((in_st_no<781)&&(in_st_no>-751)) { timez_off=in_st_no; } } if (i==4) { if (in_st_no==0) { lang=T_Korean; } else lang=T_English; } } } //cgi cnt=0; buf=getenv("QUERY_STRING"); tmp = buf!=NULL ? strtok(buf,"&=") : NULL; if(tmp != NULL) { d[cnt]=tmp; while(tmp){ tmp = strtok(NULL,"&="); cnt++; d[cnt]= tmp; } } for(i=0 ; i<cnt ; i=i+2) { in_st_no=atoi(d[i+1]); if (strcmp( d[i],"year")==0) { if (in_st_no!=0) { if ((in_st_no<10000)&&(in_st_no>-10000)) { year=in_st_no; time_year_system=0; } } else { if (*d[i+1]==0x30) { year=0; time_year_system=0; } } } if (strcmp( d[i],"month")==0) { if (in_st_no!=0) { if ((in_st_no<13)&&(in_st_no>0)) { month=in_st_no; time_year_system=0; } } } if (strcmp( d[i],"timez_off")==0) { if (in_st_no!=0) { if ((in_st_no<781)&&(in_st_no>-751)) timez_off=in_st_no; } else { if (*d[i+1]==0x30) timez_off=0; } } if (strcmp( d[i],"lang")==0) { if (*d[i+1]==0x31) lang=T_English; else lang=T_Korean; if (strcmp( d[i+1],"eng")==0) lang=T_English; if (strcmp( d[i+1],"kor")==0) lang=T_English; } } cur_time_tz=getdatebymin(timez_off+540,cur_time); if (time_year_system==1) { year=cur_time_tz.year; month=cur_time_tz.month; } lang_mode=lang; print_head(); print_body_first(); print_month_table(); print_month_info(); print_body_last(); return 0; }