cam (1.05-8) sounds.c

Summary

 sounds.c |   40 ++++++++++++++++++++++++++++++----------
 1 file changed, 30 insertions(+), 10 deletions(-)

    
download this patch

Patch contents

--- cam-1.05.orig/sounds.c
+++ cam-1.05/sounds.c
@@ -144,6 +144,27 @@
     return 99;
 }
 
+/* determine default save file name. caller must free the space allocated. */
+
+#define DEFAULT_RCFILE "/.camrc"
+#define NO_HOME_FILE "/dev/null"
+
+char *
+get_default_filename (void)
+{
+  char *q, *SAVE_FILE;
+  q = getenv ("HOME");
+  if (q) {
+    SAVE_FILE = malloc (strlen (q) + strlen(DEFAULT_RCFILE) + 1);
+    strcpy (SAVE_FILE, q);
+    strcat (SAVE_FILE, DEFAULT_RCFILE);
+  } else {
+    SAVE_FILE = malloc (strlen (NO_HOME_FILE) + 1);
+    strcpy (SAVE_FILE, NO_HOME_FILE);
+  }
+  return SAVE_FILE;
+}
+
 /* sets sound given from command line */
 void
 set_sound (int argc, char *argv[])
@@ -151,14 +172,11 @@
   int ii, vol_left, vol_right, dummy, pos;
   int argc_count = 1, arg_code;
   FILE *save_file;
-  char *SAVE_FILE, *q;
+  char *SAVE_FILE;
   int device;
   int left, right;
 
-  q = getenv ("HOME");
-  SAVE_FILE = malloc (strlen (q) + 8);
-  strcpy (SAVE_FILE, q);
-  strcat (SAVE_FILE, "/.camrc");
+  SAVE_FILE = get_default_filename();
 
   init_sound ();
   do
@@ -483,7 +501,7 @@
   int locked = FALSE;
   FILE *save_file;
   int dev_nr = 0;
-  char *SAVE_FILE, *q;
+  char *SAVE_FILE;
   int *volume;
   int X_rest = LPOS;
   int dev_nrs;
@@ -491,10 +509,7 @@
   int vol_left, vol_right;
   int dev_nr_tmp;
 
-  q = getenv ("HOME");
-  SAVE_FILE = malloc (strlen (q) + 8);
-  strcpy (SAVE_FILE, q);
-  strcat (SAVE_FILE, "/.camrc");
+  SAVE_FILE = get_default_filename();
 
   init_sound ();
   init_sliders ();
@@ -913,6 +928,11 @@
 	  endwin ();
 	  dev_count = 0;
 	  longjmp (env, 2);
+	  break;
+	case 12:
+	  endwin ();
+      refresh ();
+	  break;
 	}
       if ((ch != 27) && (ch != 'Q') && (ch != 'q'))
 	{