Update of /cvsroot/morphix/datetimeconf/src
In directory sc8-pr-cvs1:/tmp/cvs-serv18289
Modified Files:
callbacks.c callbacks.h interface.c libdatetime.c
libdatetime.h main.c
Log Message:
added UTC handling
Index: callbacks.c
===================================================================
RCS file: /cvsroot/morphix/datetimeconf/src/callbacks.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** callbacks.c 25 Oct 2003 19:40:34 -0000 1.1.1.1
--- callbacks.c 26 Oct 2003 00:00:15 -0000 1.2
***************
*** 15,18 ****
--- 15,19 ----
gboolean time_changed;
gboolean ntp_changed;
+ gboolean utc_changed;
tz_struct *nearest_timezone;
tz_struct *selected_timezone;
***************
*** 39,42 ****
--- 40,44 ----
{
GtkWidget *ntpcheck = lookup_widget(MainWindow,"checkbutton1");
+ GtkWidget *utccheck = lookup_widget(MainWindow,"checkbutton2");
GtkWidget *combo = lookup_widget(MainWindow,"combo1");
***************
*** 44,50 ****
if (time_changed == TRUE) {
write_date_time(&dt);
! }
if (ntp_changed == TRUE) {
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ntpcheck))) {
--- 46,58 ----
if (time_changed == TRUE) {
+ debug("Time has changed, setting and syncing hardware clock\n");
write_date_time(&dt);
! sync_hardware_clock(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(utccheck)));
+ }
+ if (utc_changed == TRUE) {
+ debug("UTC has been changed, writing to bootscript defaults\n"); sync_hardware_clock(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(utccheck)));
+ set_system_utc(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(utccheck)));
+ }
if (ntp_changed == TRUE) {
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ntpcheck))) {
***************
*** 158,161 ****
--- 166,176 ----
}
+ void set_utc_changed() {
+ if (realised == TRUE) {
+ debug("UTC has been changed\n");
+ utc_changed = TRUE;
+ }
+ }
+
void
on_calendar1_day_selected (GtkCalendar *calendar,
***************
*** 219,222 ****
--- 234,245 ----
{
set_time_changed();
+ }
+
+
+ void
+ on_checkbutton2_toggled (GtkToggleButton *togglebutton,
+ gpointer user_data)
+ {
+ set_utc_changed();
}
Index: callbacks.h
===================================================================
RCS file: /cvsroot/morphix/datetimeconf/src/callbacks.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** callbacks.h 25 Oct 2003 19:40:34 -0000 1.1.1.1
--- callbacks.h 26 Oct 2003 00:00:15 -0000 1.2
***************
*** 70,71 ****
--- 70,75 ----
on_spinbutton3_changed (GtkEditable *editable,
gpointer user_data);
+
+ void
+ on_checkbutton2_toggled (GtkToggleButton *togglebutton,
+ gpointer user_data);
Index: interface.c
===================================================================
RCS file: /cvsroot/morphix/datetimeconf/src/interface.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** interface.c 25 Oct 2003 19:40:32 -0000 1.1.1.1
--- interface.c 26 Oct 2003 00:00:15 -0000 1.2
***************
*** 283,287 ****
gtk_widget_show (checkbutton2);
gtk_box_pack_start (GTK_BOX (vbox3), checkbutton2, FALSE, FALSE, 0);
- gtk_widget_set_sensitive (checkbutton2, FALSE);
label2 = gtk_label_new (_("Timezone"));
--- 283,286 ----
***************
*** 344,347 ****
--- 343,349 ----
g_signal_connect ((gpointer) drawingarea1, "expose_event",
G_CALLBACK (on_drawingarea1_expose_event),
+ NULL);
+ g_signal_connect ((gpointer) checkbutton2, "toggled",
+ G_CALLBACK (on_checkbutton2_toggled),
NULL);
g_signal_connect ((gpointer) helpbutton1, "clicked",
Index: libdatetime.c
===================================================================
RCS file: /cvsroot/morphix/datetimeconf/src/libdatetime.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** libdatetime.c 25 Oct 2003 19:40:34 -0000 1.1.1.1
--- libdatetime.c 26 Oct 2003 00:00:15 -0000 1.2
***************
*** 143,147 ****
if (!g_file_get_contents(ZONETAB,&zones,&zones_len,NULL)) {
! /* error */
}
--- 143,147 ----
if (!g_file_get_contents(ZONETAB,&zones,&zones_len,NULL)) {
! return FALSE;
}
***************
*** 196,200 ****
}
g_strfreev(zone_array);
! // free(zones);
return TRUE;
}
--- 196,200 ----
}
g_strfreev(zone_array);
! // free(zones); /* think something of zones isn't copied, segfaults when uncommented, need to run splint on this... */
return TRUE;
}
***************
*** 237,246 ****
*/
! gboolean sync_hardware_clock() {
gchar cmdline[256];
! sprintf(cmdline,"/sbin/hwclock --systohc");
exec_command(cmdline);
}
void restart_ntp_client() {
--- 237,326 ----
*/
! gboolean sync_hardware_clock(gboolean utc) {
gchar cmdline[256];
! debug("Sycing hardware clock, utc: %d\n",utc);
! if (utc == TRUE) {
! sprintf(cmdline,"/sbin/hwclock --systohc --utc");
! }
! else {
! sprintf(cmdline,"/sbin/hwclock --systohc");
! }
exec_command(cmdline);
+
+ return TRUE;
+ }
+
+ gboolean check_system_utc() {
+ gchar **utc_array = NULL;
+ gchar *utc_string = NULL;
+ gint utc_len, i;
+ gboolean utc = FALSE;
+
+ if (!g_file_get_contents(BOOT_SCRIPT_DEFAULTS,&utc_string,&utc_len,NULL)) {
+ return FALSE;
+ }
+
+ /* generate a modules script */
+ utc_array = g_strsplit(utc_string,"\n",0);
+ if (utc_array == NULL || utc_string == NULL) {
+ debug("Error: unable to read default bootscript info\n");
+ return FALSE;
+ }
+ for (i = 0; utc_array[i] != NULL; i++) {
+ if (strcmp(utc_array[i],"UTC=no") == 0) {
+ utc = FALSE;
+ break;
+ }
+ if (strcmp(utc_array[i],"UTC=yes") == 0) {
+ utc = TRUE;
+ break;
+ }
+ }
+ g_strfreev(utc_array);
+ free(utc_string);
+
+ debug("parsed bootscript defaults, utc: %d\n",utc);
+
+ return utc;
}
+ gboolean set_system_utc(gboolean utc) {
+ gchar **utc_array = NULL;
+ gchar *utc_string = NULL;
+ gint utc_len, i;
+
+ FILE *fp = NULL;
+ if (!g_file_get_contents(BOOT_SCRIPT_DEFAULTS,&utc_string,&utc_len,NULL)) {
+ return FALSE;
+ }
+
+ /* generate a modules script */
+ utc_array = g_strsplit(utc_string,"\n",0);
+ if (utc_array == NULL || utc_string == NULL) {
+ debug("Error: unable to read default bootscript info\n");
+ return FALSE;
+ }
+ fp = fopen(BOOT_SCRIPT_DEFAULTS,"w");
+ for (i = 0; utc_array[i] != NULL; i++) {
+ if (strncmp(utc_array[i],"UTC=",4) == 0) {
+ if (utc == TRUE) {
+ debug("Setting UTC to yes\n");
+ fprintf(fp,"UTC=yes\n");
+ }
+ else {
+ debug("Setting UTC to no\n");
+ fprintf(fp,"UTC=no\n");
+ }
+ }
+ else {
+ fprintf(fp,"%s\n",utc_array[i]);
+ }
+ }
+ fclose(fp);
+ g_strfreev(utc_array);
+ free(utc_string);
+ return TRUE;
+ }
+
void restart_ntp_client() {
Index: libdatetime.h
===================================================================
RCS file: /cvsroot/morphix/datetimeconf/src/libdatetime.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** libdatetime.h 25 Oct 2003 19:40:34 -0000 1.1.1.1
--- libdatetime.h 26 Oct 2003 00:00:15 -0000 1.2
***************
*** 7,10 ****
--- 7,11 ----
#define NTPCONF "/etc/ntp.conf"
#define TIMEZONE_FILE "/etc/timezone"
+ #define BOOT_SCRIPT_DEFAULTS "/etc/default/rcS"
#define DEBUG
***************
*** 38,42 ****
gboolean write_date_time(struct tm *dm);
struct tm* get_current_date_time();
! gboolean sync_hardware_clock();
void restart_ntp_client();
gboolean read_current_timezone();
--- 39,44 ----
gboolean write_date_time(struct tm *dm);
struct tm* get_current_date_time();
! gboolean sync_hardware_clock(gboolean utc);
! gboolean set_system_utc(gboolean utc);
void restart_ntp_client();
gboolean read_current_timezone();
Index: main.c
===================================================================
RCS file: /cvsroot/morphix/datetimeconf/src/main.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** main.c 25 Oct 2003 19:40:34 -0000 1.1.1.1
--- main.c 26 Oct 2003 00:00:15 -0000 1.2
***************
*** 19,22 ****
--- 19,23 ----
extern gboolean ntp_changed;
extern gboolean time_changed;
+ extern gboolean utc_changed;
extern tz_struct *nearest_timezone;
extern tz_struct *selected_timezone;
***************
*** 45,51 ****
--- 46,55 ----
time_changed = FALSE;
ntp_changed = FALSE;
+ utc_changed = FALSE;
}
void setup_dtconf() {
+ GtkWidget *utccheckbutton = lookup_widget(MainWindow,"checkbutton2");
+
if (!read_zone_info()) {
debug("Error: Can't read zone info, exitting\n");
***************
*** 53,57 ****
}
struct tm *dt = get_current_date_time();
! set_date_time(*dt);
debug("Set date/time\n");
do_ntp_server();
--- 57,62 ----
}
struct tm *dt = get_current_date_time();
! set_date_time(*dt);
! gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(utccheckbutton),check_system_utc());
debug("Set date/time\n");
do_ntp_server();
|