Package: gqcam
Version: 0.9.1-5
Severity: important
Tags: patch

A patch is attached which prevents gqcam to overwrite ~/.gqcamrc if
it detects that the structure is not the correct one in the memory.
This is only a workaround and not the right solution of this bug.
diff -upr gqcam-0.9.1.orig/color.c gqcam-0.9.1/color.c
--- gqcam-0.9.1.orig/color.c	2008-10-19 12:35:45.000000000 +0200
+++ gqcam-0.9.1/color.c	2008-10-19 15:51:42.000000000 +0200
@@ -38,6 +38,7 @@ void create_controls_color(struct Camera
   GSList *camera->controls.radiogroup;
 */
 
+  GQCAM_CHECK_MAGIC(camera);
   /* Create new outerbox */
   camera->controltop = gtk_hbox_new (FALSE, 0);
 
diff -upr gqcam-0.9.1.orig/filters.c gqcam-0.9.1/filters.c
--- gqcam-0.9.1.orig/filters.c	2008-10-19 12:35:45.000000000 +0200
+++ gqcam-0.9.1/filters.c	2008-10-19 15:43:30.000000000 +0200
@@ -44,6 +44,7 @@ void swap_rgb24(struct Camera *camera)
   int   i = camera->vid_win.width*camera->vid_win.height;
   int bytes_per_rgb = 3;
   
+  GQCAM_CHECK_MAGIC(camera);
   //  printf("Swapping...\n");
   if(!camera->greyscale){
     while (--i) {
@@ -61,6 +62,7 @@ void auto_bright(struct Camera *camera)
   long total = 0;
   int size = camera->vid_win.height * camera->vid_win.width;
 
+  GQCAM_CHECK_MAGIC(camera);
   if (camera->greyscale)
     num_components = 1;
   else
diff -upr gqcam-0.9.1.orig/frontend.c gqcam-0.9.1/frontend.c
--- gqcam-0.9.1.orig/frontend.c	2008-10-19 12:35:45.000000000 +0200
+++ gqcam-0.9.1/frontend.c	2008-10-19 16:26:49.000000000 +0200
@@ -87,6 +87,7 @@ void errordialog(char *message)
 
 void setbrightness(GtkAdjustment *adj, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock(&camera->pref_mutex);
   camera->vid_pic.brightness = (adj->value)*256;
   camera->update_camera = 1;
@@ -95,6 +96,7 @@ void setbrightness(GtkAdjustment *adj, s
 
 void setwhite(GtkAdjustment *adj, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock(&camera->pref_mutex);
   camera->vid_pic.whiteness = (adj->value)*256;
   camera->update_camera = 1;
@@ -103,6 +105,7 @@ void setwhite(GtkAdjustment *adj, struct
 
 void setcontrast(GtkAdjustment *adj, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock(&camera->pref_mutex);
   camera->vid_pic.contrast = (adj->value)*256;
   camera->update_camera = 1;
@@ -111,6 +114,7 @@ void setcontrast(GtkAdjustment *adj, str
 
 void sethue(GtkAdjustment *adj, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock(&camera->pref_mutex);
   camera->vid_pic.hue = (adj->value)*256;
   camera->update_camera = 1;
@@ -119,6 +123,7 @@ void sethue(GtkAdjustment *adj, struct C
 
 void setcolor(GtkAdjustment *adj, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock(&camera->pref_mutex);
   camera->vid_pic.colour = (adj->value)*256;
   camera->update_camera = 1;
@@ -127,6 +132,7 @@ void setcolor(GtkAdjustment *adj, struct
 
 void setsizefull(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock(&camera->pref_mutex);
   camera->vid_win.width = camera->vid_caps.maxwidth;
   camera->vid_win.height = camera->vid_caps.maxheight;
@@ -136,6 +142,7 @@ void setsizefull(GtkWidget *widget, stru
 
 void setsizehalf(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock(&camera->pref_mutex);
   camera->vid_win.width = (camera->vid_caps.maxwidth)/2;
   camera->vid_win.height = (camera->vid_caps.maxheight)/2;
@@ -146,6 +153,7 @@ void setsizehalf(GtkWidget *widget, stru
 
 void setsizequarter(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock(&camera->pref_mutex);
   camera->vid_win.width = (camera->vid_caps.maxwidth)/4;
   camera->vid_win.height = (camera->vid_caps.maxheight)/4;
@@ -156,6 +164,7 @@ void setsizequarter(GtkWidget *widget, s
 
 void setdepth4(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock(&camera->pref_mutex);
   camera->vid_pic.depth = 4;
   camera->update_camera = 1;
@@ -164,6 +173,7 @@ void setdepth4(GtkWidget *widget, struct
 
 void setdepth6(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock(&camera->pref_mutex);
   camera->vid_pic.depth = 6;
   camera->update_camera = 1;
@@ -172,6 +182,7 @@ void setdepth6(GtkWidget *widget, struct
 
 void stop_capture(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock( &camera->pref_mutex );
   if( camera->dev ) {
     camera->capture = 0;
@@ -182,6 +193,7 @@ void stop_capture(GtkWidget *widget, str
 
 void start_capture(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   pthread_mutex_lock( &camera->pref_mutex );
   open_cam(camera);
   get_cam_info(camera);
@@ -223,6 +235,7 @@ void camera_info(GtkWidget *widget, stru
   GtkWidget *vscrollbar;
   char buff[80];
   
+  GQCAM_CHECK_MAGIC(camera);
   dialog = gtk_dialog_new();
   gtk_window_set_title(GTK_WINDOW (dialog),"Gqcam - Camera Info");
   textbox = gtk_text_new(NULL, NULL);
@@ -348,6 +361,7 @@ void about_dialog(GtkWidget *widget, str
   GtkWidget *dialog, *label, *button;
   char buff[80];
 
+  GQCAM_CHECK_MAGIC(camera);
   dialog = gtk_dialog_new();
   sprintf(buff, "gqcam %s\n\n(C)2000 Cory Lueninghoener\n(C)2005 Giansalvo Gusinu", VERSION);
   
@@ -370,6 +384,7 @@ void about_dialog(GtkWidget *widget, str
 /*
 void pref_dialog(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   errordialog("Preferences dialog is not implemented yet...", camera);
 
 }
@@ -377,6 +392,8 @@ void pref_dialog(GtkWidget *widget, stru
 
 void open_dialog_ok(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   stop_capture( NULL, camera );
   usleep(1);
   clearimg(camera);
@@ -390,6 +407,8 @@ void open_dialog(GtkWidget *widget, stru
 {
   GtkWidget *opendialog;
   
+  GQCAM_CHECK_MAGIC(camera);
+
   opendialog = gtk_file_selection_new ("Open Device");
 
   gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (opendialog)->ok_button),
@@ -404,6 +423,7 @@ void open_dialog(GtkWidget *widget, stru
 
 /* void close_dialog(GtkWidget *widget, struct Camera *camera)
    {
+   GQCAM_CHECK_MAGIC(camera);
    fprintf( stderr, "close_dialog calling stop_capture\n" );
    stop_capture( NULL, camera );
    usleep(1);
@@ -412,8 +432,8 @@ void open_dialog(GtkWidget *widget, stru
 
 void update_controls(struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   gtk_widget_destroy(camera->controltop);
-
   if (camera->greyscale)
     create_controls_greyscale(camera);
   else
@@ -426,12 +446,16 @@ void update_controls(struct Camera *came
 
 void close_controls(GtkWidget *widget, GdkEvent *event, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   dock_controls(widget, camera);
 }
 
 
 void dock_controls(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   if (camera->docked){
     //    printf("Floating(%d)\n", camera->docked);
     camera->docked = 0;
@@ -443,6 +467,7 @@ void dock_controls(GtkWidget *widget, st
     camera->controlwindow = gtk_window_new(GTK_WINDOW_DIALOG);
     gtk_container_add (GTK_CONTAINER(camera->controlwindow), camera->controltop);
     gtk_window_set_title(GTK_WINDOW (camera->controlwindow), "Gqcam - Control Panel");
+
     gtk_signal_connect (GTK_OBJECT (camera->controlwindow), "delete_event",
 			GTK_SIGNAL_FUNC (close_controls), camera);
     gtk_widget_show(camera->controlwindow);
@@ -465,6 +490,7 @@ void clearimg(struct Camera *camera)
 {
   GdkRectangle update_rec;
 
+  GQCAM_CHECK_MAGIC(camera);
   configure_event(GTK_WIDGET (camera->drawing_area),NULL, camera);
 
   update_rec.x = 0;
@@ -477,6 +503,7 @@ void clearimg(struct Camera *camera)
 
 static gint configure_event (GtkWidget *widget, GdkEventConfigure *event, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   if (camera->pixmap)
     gdk_pixmap_unref(camera->pixmap);
 
@@ -495,6 +522,7 @@ static gint configure_event (GtkWidget *
 
 static gint expose_event (GtkWidget *widget, GdkEventExpose *event, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   //  display(camera);
   gdk_draw_pixmap(widget->window,
 		  widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
@@ -507,6 +535,7 @@ static gint expose_event (GtkWidget *wid
 
 void freeze(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   /* correct our state */
   if( !camera->frozen && ( GTK_TOGGLE_BUTTON (widget)->active ) ) {
     GTK_TOGGLE_BUTTON (widget)->active = FALSE;
@@ -580,6 +609,7 @@ int create_frontend(struct Camera *camer
   int ib=130, ic=30, iw=150, i, count=32;
 */
 
+  GQCAM_CHECK_MAGIC(camera);
   strcat(title, camera->vid_caps.name);
 /*
   for (i = 0; i < count; i++) {
@@ -599,6 +629,7 @@ int create_frontend(struct Camera *camer
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title (GTK_WINDOW (window), title);
   gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE);
+
   gtk_signal_connect (GTK_OBJECT (window), "delete_event",
 		      GTK_SIGNAL_FUNC (delete_event), camera);
 
@@ -645,6 +676,7 @@ int create_frontend(struct Camera *camer
 
   quititem = gtk_menu_item_new_with_label("Quit");
   gtk_menu_append(GTK_MENU(filemenu), quititem);
+
   gtk_signal_connect(GTK_OBJECT (quititem), "activate",
 		     GTK_SIGNAL_FUNC (delete_event),
 		     camera);
diff -upr gqcam-0.9.1.orig/gqcam.c gqcam-0.9.1/gqcam.c
--- gqcam-0.9.1.orig/gqcam.c	2008-10-19 12:35:45.000000000 +0200
+++ gqcam-0.9.1/gqcam.c	2008-10-19 16:24:47.000000000 +0200
@@ -48,6 +48,8 @@ char version[] = VERSION;
 void init_cam(struct Camera *camera)
 {
   memset(camera, 0, sizeof(*camera));
+  GQCAM_INIT_MAGIC(camera);
+  GQCAM_CHECK_MAGIC(camera);
 
   camera->greyscale = 0;
   camera->pic = NULL;
@@ -85,6 +87,8 @@ int y_frames = 0;
 
 void set_cam_info(struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   if (ioctl (camera->dev, VIDIOCSPICT, &camera->vid_pic) == -1) {
     perror ("ioctl (VIDIOCSPICT)");
   }
@@ -98,6 +102,8 @@ void get_cam_info(struct Camera *camera)
   int i;
   struct video_clip vid_clips[32];
 
+  GQCAM_CHECK_MAGIC(camera);
+
   if (ioctl(camera->dev, VIDIOCGCAP, &camera->vid_caps) == -1) {
     perror("ioctl(VIDIOCGCAP)");
   }
@@ -134,6 +140,7 @@ void get_cam_info(struct Camera *camera)
 /*
 void print_cam_info(struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
   printf("Name: %s\n", camera->vid_caps.name);
   printf("Type: %i\n", camera->vid_caps.type);
   if (camera->vid_caps.type & VID_TYPE_CAPTURE) {
@@ -193,6 +200,8 @@ void print_cam_info(struct Camera *camer
 
 void open_cam(struct Camera *camera) 
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   if((camera->dev<=0)){
     camera->dev = open(camera->devname, O_RDWR);
     //    printf("Opening: %d\n", camera->dev);
@@ -206,6 +215,8 @@ void open_cam(struct Camera *camera) 
 
 void close_cam(struct Camera *camera, int quiting)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   pthread_mutex_lock( &camera->iscam_mutex );
   if(camera->dev > 0){
     close(camera->dev);
@@ -222,6 +233,8 @@ void display(struct Camera *camera) 
   char tbuff[1024];
   static int frameno = 0;
 
+  GQCAM_CHECK_MAGIC(camera);
+
   while( !plsquit ) {
     if( !sem_wait( &s_draw ) ) {
       unsigned char *tmp;
@@ -277,6 +290,7 @@ void grab_image(struct Camera *camera)
   struct ov511_frame temp;
   size_t read_size;
 
+  GQCAM_CHECK_MAGIC(camera);
   get_cam_info(camera);
 
   update_rec.x = 0;
@@ -356,6 +370,7 @@ void grab_image(struct Camera *camera)
       if (camera->img_size <= 0)
 	fprintf(stderr, "Error reading image...\n");      
     }
+
     pthread_mutex_unlock( &camera->freeze_mutex );
     pthread_mutex_unlock( &camera->iscam_mutex );
     if( camera->dump ) {
@@ -395,6 +410,8 @@ void delete_event(GtkWidget *widget, str
   char * savefile;
   char * path = "/.gqcamrc";
 
+  GQCAM_CHECK_MAGIC(camera);
+
   if((home = getenv("HOME")) != NULL && (savefile = malloc(strlen(home)
 				  + strlen(path) + 1)) != NULL)
   {
@@ -417,6 +434,8 @@ void delete_event(GtkWidget *widget, str
 int next_frame(struct Camera *camera) {
   int val;
   
+  GQCAM_CHECK_MAGIC(camera);
+
   sem_getvalue( &s_grab2, &val );
   if( !val )
      sem_post( &s_grab2 );
@@ -427,6 +446,8 @@ gboolean increment_second_counter(gpoint
   struct Camera *camera = (struct Camera*)data;
   static int x_seconds = 0;
   
+  GQCAM_CHECK_MAGIC(camera);
+
   x_seconds++;
   // the following just prevents integer wrap
   if( ( x_seconds % 512 ) == 0 ) {
@@ -452,6 +473,7 @@ int main(int argc, char *argv[])
   FILE *preffile;
 
   init_cam(&camera);
+  GQCAM_CHECK_MAGIC(&camera);
 /*
   g_thread_init(NULL);
   gtk_init (&argc, &argv);
@@ -628,6 +650,8 @@ void print_usage() {
 
 int dump_pict( struct Camera *camera, char *filename, int brightness, int contrast, int whiteness )
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   if( filename != NULL ){
     strcpy(camera->savefile, filename);
     strcpy(camera->savefileclean, filename);
diff -upr gqcam-0.9.1.orig/gqcam.h gqcam-0.9.1/gqcam.h
--- gqcam-0.9.1.orig/gqcam.h	2008-10-19 12:35:45.000000000 +0200
+++ gqcam-0.9.1/gqcam.h	2008-10-19 16:19:28.000000000 +0200
@@ -19,6 +19,9 @@
 #ifndef _GQCAM_H
 #define _GQCAM_H
 
+#define GQCAM_CONSISTENCY_CHECK  1
+
+
 enum Input_Types {
   INPUT_NOT_FORCED = 0,
   INPUT_JPEG       = 1,
@@ -158,8 +161,31 @@ struct Controls
   GtkWidget *scalecolor;
 };
 
+#ifdef GQCAM_CONSISTENCY_CHECK
+
+/* just a ranom number to check the validity of struct Camera */
+#define GQCAM_CAMERA_MAGIC1   0x3885FD09UL
+#define GQCAM_CAMERA_MAGIC2   0x26600C29UL
+#define GQCAM_CHECK_MAGIC(camera) \
+    if ((camera)->magic_start != GQCAM_CAMERA_MAGIC1 || \
+        (camera)->magic_end != GQCAM_CAMERA_MAGIC2) { \
+	fprintf(stderr, "%s:%u: FATAL: struct Camera is not valid\n", __FILE__, __LINE__); \
+	exit(-1); \
+    }
+#define GQCAM_INIT_MAGIC(camera) \
+    (camera)->magic_start = GQCAM_CAMERA_MAGIC1; \
+    (camera)->magic_end = GQCAM_CAMERA_MAGIC2;
+
+#else
+#define GQCAM_CHECK_MAGIC(camera)
+#define GQCAM_INIT_MAGIC(camera)
+#endif
+
 struct Camera
 {
+#ifdef GQCAM_CONSISTENCY_CHECK
+  unsigned int magic_start;
+#endif
   int dev;
   int greyscale;
   int draw;
@@ -210,6 +236,9 @@ struct Camera
    * FIXME probably this could be local to grab_image()
    */
   unsigned char rawbuffer[1280*1024*3];
+#ifdef GQCAM_CONSISTENCY_CHECK
+  unsigned int magic_end;
+#endif
 };
 
 
diff -upr gqcam-0.9.1.orig/greyscale.c gqcam-0.9.1/greyscale.c
--- gqcam-0.9.1.orig/greyscale.c	2005-04-04 03:25:09.000000000 +0200
+++ gqcam-0.9.1/greyscale.c	2008-10-19 15:52:35.000000000 +0200
@@ -54,6 +54,7 @@ void create_controls_greyscale(struct Ca
   GtkWidget *scalecontrast;
   */
 
+  GQCAM_CHECK_MAGIC(camera);
   /* Create new outerbox */
   camera->controltop = gtk_hbox_new (FALSE, 0);
 
diff -upr gqcam-0.9.1.orig/preferences.c gqcam-0.9.1/preferences.c
--- gqcam-0.9.1.orig/preferences.c	2005-04-04 03:25:09.000000000 +0200
+++ gqcam-0.9.1/preferences.c	2008-10-19 16:11:48.000000000 +0200
@@ -65,6 +65,8 @@ void pref_dialog(GtkWidget *widget, stru
   GtkWidget *label;
   */
 
+  GQCAM_CHECK_MAGIC(camera);
+
   camera->pref_dialog.prefdialog = gtk_dialog_new();
 
   camera->pref_dialog.prefnotebook = gtk_notebook_new();
@@ -180,6 +182,8 @@ void read_pref_file(FILE *input, struct 
   char buff[1024], command[1024];  
   int val=0;
   
+  GQCAM_CHECK_MAGIC(camera);
+
   while(fgets(buff, sizeof(buff), input) != NULL){
     if((buff[0] != '#') && (buff[0] != '\n'))
       {
@@ -200,6 +204,8 @@ void read_pref_file(FILE *input, struct 
 
 void save_pref_file(FILE *output, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   fprintf(output, "autobrightness %d\n", camera->autobright);
   fprintf(output, "swaprgb %d\n", camera->swapcolors);
   fprintf(output, "inputtype %d\n", camera->inputtype);
@@ -207,6 +213,8 @@ void save_pref_file(FILE *output, struct
 
 void ok_prefs(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   apply_prefs(widget, camera);
   closedialog(widget, camera->pref_dialog.prefdialog);
 }
@@ -214,6 +222,8 @@ void ok_prefs(GtkWidget *widget, struct 
 
 void apply_prefs(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(camera->pref_dialog.rgbswap)))
     camera->swapcolors = 1;
   else
diff -upr gqcam-0.9.1.orig/save.c gqcam-0.9.1/save.c
--- gqcam-0.9.1.orig/save.c	2008-10-19 12:35:45.000000000 +0200
+++ gqcam-0.9.1/save.c	2008-10-19 15:59:12.000000000 +0200
@@ -51,6 +51,8 @@ static struct symbolic_list fname_postfi
 
 void select_ok(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   gtk_entry_set_text(GTK_ENTRY(camera->save_struct.textbox), gtk_file_selection_get_filename(GTK_FILE_SELECTION (camera->save_struct.fileselect)));
   gtk_widget_destroy(camera->save_struct.fileselect);
   return;
@@ -64,6 +66,7 @@ void select_cancel(GtkWidget *widget, Gd
 
 void file_select(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
 
   //  camera->saving = 1;
   camera->save_struct.fileselect = gtk_file_selection_new("Save Image");
@@ -80,6 +83,7 @@ void file_select(GtkWidget *widget, stru
 
 void save_ok(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
 
   if(strlen(gtk_entry_get_text(GTK_ENTRY(camera->save_struct.textbox))) > 255){
     errordialog("File name too long...\n");
@@ -161,6 +165,8 @@ void png_save(struct Camera *camera)
   png_uint_32 k;
   png_bytep row_pointers[camera->vid_win.height];
 
+  GQCAM_CHECK_MAGIC(camera);
+
   /* open the file */
   if (camera->savefile != NULL && strcmp(camera->savefile, "") != 0)
     fp = fopen(camera->savefile, "w");
@@ -361,6 +367,8 @@ void ppm_save(struct Camera *camera)
   unsigned char buff[3];
   int i;
 
+  GQCAM_CHECK_MAGIC(camera);
+
   if (camera->savefile != NULL && strcmp(camera->savefile, "") != 0)
     outfile = fopen(camera->savefile, "w");
   
@@ -413,6 +421,8 @@ void jpeg_save(struct Camera *camera)
   JSAMPROW row_pointer[1];     // pointer to JSAMPLE row(s)
   int row_stride;              // physical row width in image buffer
 
+  GQCAM_CHECK_MAGIC(camera);
+
   if (camera->savefile != NULL && strcmp(camera->savefile, "") != 0)
     outfile = fopen(camera->savefile, "w");
 
@@ -461,6 +471,8 @@ void raw_save(struct Camera *camera)
 {
   FILE *outfile = stdout;
 
+  GQCAM_CHECK_MAGIC(camera);
+
   if (camera->savefile != NULL && strcmp(camera->savefile, "") != 0)
     outfile = fopen(camera->savefile, "w");
 
@@ -481,6 +493,8 @@ void raw_save(struct Camera *camera)
 
 void save_cancel(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   gtk_widget_destroy(widget->parent->parent->parent);
   camera->saving = 0;
   if( !camera->frozen )
@@ -496,6 +510,8 @@ void destroy( GtkWidget *widget,
 
 void switch_page_png(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   gtk_widget_hide(camera->currentsavepage);
   gtk_widget_show(camera->page_png.frame_png);
   camera->currentsavepage = camera->page_png.frame_png;
@@ -504,6 +520,8 @@ void switch_page_png(GtkWidget *widget, 
 
 void switch_page_jpeg(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   gtk_widget_hide(camera->currentsavepage);
   gtk_widget_show(camera->page_jpeg.frame_jpeg);
   camera->currentsavepage = camera->page_jpeg.frame_jpeg;
@@ -512,6 +530,8 @@ void switch_page_jpeg(GtkWidget *widget,
 
 void switch_page_raw(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   gtk_widget_hide(camera->currentsavepage);
   camera->savetype = SAVE_RAW;
 }
@@ -782,6 +802,8 @@ void savefile_append_time(struct Camera 
   char prefix[255+11], curtime[10];
   int length;
 
+  GQCAM_CHECK_MAGIC(camera);
+
   dotlocation = strrchr(camera->savefileclean, '.');
   if(dotlocation == NULL)
     length = strlen(camera->savefileclean);
diff -upr gqcam-0.9.1.orig/timer.c gqcam-0.9.1/timer.c
--- gqcam-0.9.1.orig/timer.c	2008-10-19 12:35:45.000000000 +0200
+++ gqcam-0.9.1/timer.c	2008-10-19 16:07:08.000000000 +0200
@@ -39,21 +39,29 @@
 
 void set_timer_seconds(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   camera->timer_struct.unit = SECONDS;
 }
 
 void set_timer_minutes(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   camera->timer_struct.unit = MINUTES;
 }
 
 void timer_snap_now(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   next_frame(camera);
 }
 
 void timer_stop_timer(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   camera->on_timer = 0;
   gtk_timeout_remove(camera->timeoutid);
   if(!camera->timeout)
@@ -75,6 +83,8 @@ void timer_ok(GtkWidget *widget, struct 
   int timeout;
   char snaplabeltext[30];
   
+  GQCAM_CHECK_MAGIC(camera);
+
   if(strlen(gtk_entry_get_text(GTK_ENTRY(camera->timer_struct.commandentry))) > 255){
     printf("Command too long...\n");
     return;
@@ -140,6 +150,8 @@ void timer_ok(GtkWidget *widget, struct 
 
 void timer_cancel(GtkWidget *widget, struct Camera *camera)
 {
+  GQCAM_CHECK_MAGIC(camera);
+
   //camera->on_timer = 0;
   gtk_widget_destroy(camera->timer_struct.timerdialog);
 }
@@ -163,6 +175,8 @@ void set_timer(GtkWidget *widget, struct
   GtkWidget *okbutton;
   GtkWidget *cancelbutton;
 */
+  GQCAM_CHECK_MAGIC(camera);
+
   //  camera->on_timer = 1;
   
   camera->timer_struct.timerdialog = gtk_dialog_new();

Reply via email to