00001
00005 #include <gtk/gtk.h>
00006 #include <stdio.h>
00007 #include <stdlib.h>
00008 #include <string.h>
00009 #include <unistd.h>
00010 #include <sys/stat.h>
00011 #include <mysql/mysql.h>
00012
00017 void daemon_init()
00018 {
00019 int i;
00020 pid_t pid;
00021 char path[512];
00022 if((pid=fork())!=0)
00023 {
00024 exit(0);
00025 }
00026 setsid();
00027 signal(SIGHUP,SIG_IGN);
00028 if((pid=fork())!=0)
00029 {
00030 exit(0);
00031 }
00032 getcwd(path,512);
00033 chdir(path);
00034 umask(0);
00035 for(i=0;i<64;i++)
00036 {
00037 close(i);
00038 }
00039 }
00040
00041 MYSQL *connection1;
00042 MYSQL_RES *result;
00043 MYSQL_ROW sqlrow;
00044
00051 void ret_any_day_more(char mod_date[15],char dat[15],int no)
00052 {
00053 int return_value;
00054 char qry[100];
00055 sprintf(qry,"select DATE_ADD('%s',INTERVAL %d DAY)",mod_date,no);
00056 return_value = mysql_query (connection1,qry);
00057
00058 if (return_value)
00059 {
00060 printf ("select failed as : %s\n", mysql_error (connection1));
00061 }
00062 else
00063 {
00064 result = mysql_use_result(connection1);
00065 if (result)
00066 {
00067 while ((sqlrow = mysql_fetch_row (result)))
00068 {
00069 strcpy(dat,sqlrow[0]);
00070 }
00071 }
00072 mysql_free_result(result);
00073 }
00074 }
00075
00083 void conv_date_integer(char dt[15],int *dat,int *mnt,int *yr)
00084 {
00085 *dat=atoi(dt+8);
00086 *mnt=atoi(dt+5);
00087 *yr=atoi(dt);
00088 printf("\nconv_date_integer():database date:<%d/%d/%d>\n",*dat,*mnt,*yr);
00089 }
00090
00098 void get_new_date(char dt[15],int d,int m,int y)
00099 {
00100 if(d<10 && m<10)
00101 sprintf(dt,"%d-0%d-0%d",y,m,d);
00102 else if(d<10 && m>9)
00103 sprintf(dt,"%d-%d-0%d",y,m,d);
00104 else if(d>9 && m<10)
00105 sprintf(dt,"%d-0%d-%d",y,m,d);
00106 else
00107 sprintf(dt,"%d-%d-%d",y,m,d);
00108 }
00109
00114 gint delete_event( GtkWidget *widget,GdkEvent *event,gpointer data )
00115 {
00116 gtk_main_quit ();
00117 return(FALSE);
00118 }
00119
00125 int main( int argc,char *argv[])
00126 {
00127 daemon_init();
00128
00129 GtkWidget *window;
00130 GtkWidget *table;
00131 GtkWidget *label_question;
00132 char server[30],dbuser[30],dbpassword[30],dbname[30],lbl[100],qry[300];
00133 char g_dt[15],g_day[5],g_ed[15],g_ew[15],g_currdate[15],g_curday[5],temp[100],tm[15],tag[5],dat[15],t[10];
00134 int i,result,g_hour,g_min,g_o,g_d,g_w,g_m,g_y,g_eo,g_em,g_ey,g_curmnth,g_curyr,type,dd,mm,yy;
00135
00136 strcpy(server,"localhost");
00137 strcpy(dbuser,"alarm_user");
00138 strcpy(dbpassword,"alarm_password");
00139 strcpy(dbname,"alarm");
00140
00141 connection1 = mysql_init (NULL);
00142 if (!connection1)
00143 {
00144 fprintf (stderr, "MySQL initialization failed\n");
00145 exit(EXIT_FAILURE);
00146 }
00147
00148 connection1=mysql_real_connect (connection1, server,dbuser,dbpassword,dbname, 0, NULL, 0);
00149
00150 if (connection1)
00151 {
00152 printf ("Connection successful\n");
00153 }
00154 else
00155 {
00156 printf ("Connection failed\n");
00157 return -1;
00158 }
00159
00160
00161 gtk_init (&argc, &argv);
00162 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
00163
00164 strcpy(g_dt,argv[1]);
00165 strcpy(g_day,argv[2]);
00166 g_hour=atoi(argv[3]);
00167 g_min=atoi(argv[4]);
00168 g_o=atoi(argv[5]);
00169 g_d=atoi(argv[6]);
00170 g_w=atoi(argv[7]);
00171 g_m=atoi(argv[8]);
00172 g_y=atoi(argv[9]);
00173 g_eo=atoi(argv[10]);
00174 strcpy(g_ed,argv[11]);
00175 strcpy(g_ew,argv[12]);
00176 g_em=atoi(argv[13]);
00177 g_ey=atoi(argv[14]);
00178 strcpy(g_currdate,argv[15]);
00179 g_curmnth=atoi(argv[16]);
00180 g_curyr=atoi(argv[17]);
00181 strcpy(g_curday,argv[18]);
00182 type=atoi(argv[19]);
00183
00184 strcpy(lbl,"");
00185
00186 for(i=20;i<argc;i++)
00187 {
00188 strcat(lbl,argv[i]);
00189 strcat(lbl," ");
00190
00191 }
00192 lbl[strlen(lbl)-1]='\0';
00193
00194
00195 if(g_o==1)
00196 {
00197 sprintf(qry,"delete from ers where hour=%d and min=%d and event='%s' and dt='%s'",g_hour,g_min,lbl,g_dt);
00198 strcpy(t,"Once");
00199 printf("The QUERY %s",qry);
00200 result=mysql_query(connection1,qry);
00201 if(result)
00202 printf("g_o failed\n");
00203 }
00204 else if(g_d==1)
00205 {
00206 sprintf(qry,"update ers set ed='%s' where hour=%d and min=%d and event='%s' and dt='%s'",g_currdate,g_hour,g_min,lbl,g_dt);
00207 strcpy(t,"Daily");
00208 printf("The QUERY %s",qry);
00209 result=mysql_query(connection1,qry);
00210 if(result)
00211 printf("g_d failed\n");
00212 }
00213 else if(g_w==1)
00214 {
00215 ret_any_day_more(g_dt,dat,7);
00216 sprintf(qry,"update ers set dt='%s', ew='%s' where hour=%d and min=%d and event='%s' and day='%s' and dt='%s'",dat,g_currdate,g_hour,g_min,lbl,g_curday,g_dt);
00217 strcpy(t,"Weekly");
00218 printf("The QUERY %s",qry);
00219 result=mysql_query(connection1,qry);
00220 if(result)
00221 printf("g_w failed\n");
00222 }
00223 else if(g_m==1)
00224 {
00225 conv_date_integer(g_dt,&dd,&mm,&yy);
00226 if((g_curmnth+1)>12)
00227 get_new_date(dat,dd,1,yy+1);
00228 else
00229 get_new_date(dat,dd,g_curmnth+1,yy);
00230
00231 if(g_curmnth==12)
00232 g_curmnth=0;
00233
00234 sprintf(qry,"update ers set dt='%s', em=%d where hour=%d and min=%d and event='%s' and dt='%s'",dat,g_curmnth,g_hour,g_min,lbl,g_dt);
00235 strcpy(t,"Monthly");
00236 printf("The QUERY %s",qry);
00237 result=mysql_query(connection1,qry);
00238 if(result)
00239 printf("g_m failed\n");
00240 }
00241 else if(g_y==1)
00242 {
00243 conv_date_integer(g_dt,&dd,&mm,&yy);
00244 get_new_date(dat,dd,mm,g_curyr+1);
00245
00246 sprintf(qry,"update ers set dt='%s', ey=%d where hour=%d and min=%d and event='%s' and dt='%s'",dat,g_curyr,g_hour,g_min,lbl,g_dt);
00247 strcpy(t,"Yearly");
00248 printf("The QUERY %s",qry);
00249 result=mysql_query(connection1,qry);
00250 if(result)
00251 printf("g_y failed\n");
00252 }
00253
00254 strcpy(tag,"AM");
00255
00256 if(g_hour>=13)
00257 {
00258 g_hour-=12;
00259 strcpy(tag,"PM");
00260 }
00261 else if(g_hour==0)
00262 g_hour+=12;
00263
00264 if(g_hour<10 && g_min<10)
00265 sprintf(tm,"0%d:0%d %s",g_hour,g_min,tag);
00266 else if(g_hour<10 && g_min>9)
00267 sprintf(tm,"0%d:%d %s",g_hour,g_min,tag);
00268 else if(g_hour>9 && g_min<10)
00269 sprintf(tm,"%d:0%d %s",g_hour,g_min,tag);
00270 else
00271 sprintf(tm,"%d:%d %s",g_hour,g_min,tag);
00272
00273
00274 if(type==1)
00275 sprintf(temp,"You Have Missed Event: '%s' \nScheduled for: '%s' \nAt: %s\nEvent type: %s",lbl,g_dt,tm,t);
00276 else if(type==2)
00277 sprintf(temp,"You Have Event: '%s' \nScheduled for: '%s' \nAt: %s\nEvent type: %s",lbl,g_dt,tm,t);
00278
00279 label_question=gtk_label_new(temp);
00280 gtk_window_set_title (GTK_WINDOW (window), "Event Reminder");
00281 gtk_window_set_default_size(GTK_WINDOW(window),120,80);
00282 gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER_ALWAYS);
00283 gtk_signal_connect (GTK_OBJECT (window), "delete_event",GTK_SIGNAL_FUNC (delete_event), NULL);
00284 gtk_container_set_border_width (GTK_CONTAINER (window), 20);
00285 table = gtk_table_new (1, 1, TRUE);
00286 gtk_container_add (GTK_CONTAINER (window), table);
00287 gtk_table_attach_defaults (GTK_TABLE(table), label_question, 0, 1, 0, 1);
00288 gtk_widget_show (label_question);
00289 gtk_widget_show (table);
00290 gtk_widget_show (window);
00291
00292
00293 gtk_main ();
00294 mysql_close(connection1);
00295
00296 return 0;
00297 }