diff -urN -X xdiff ../denemo/ChangeLog ./ChangeLog --- ../denemo/ChangeLog 2007-02-01 07:13:46.000000000 +1100 +++ ./ChangeLog 2007-02-05 15:51:37.000000000 +1100 @@ -1,3 +1,7 @@ +2007-02-05 + * external.c: fix exception when .denemo does not exist + * main.c: better messages when .denemo does not exist + 2007-01-31 * denemo_types.h: DenemoObjType PARTIAL added * frogparser.y lyparser.y: PARTIAL renamed to avoid conflict diff -urN -X xdiff ../denemo/src/external.c ./src/external.c --- ../denemo/src/external.c 2007-02-05 10:59:56.000000000 +1100 +++ ./src/external.c 2007-02-05 13:16:27.000000000 +1100 @@ -135,7 +135,12 @@ { pidpath = get_temp_filename (ext_pidfiles[i]); - fp = fopen (pidpath, "wb+"); + if ((fp = fopen (pidpath, "wb+")) == NULL) + { + g_warning ("ext_init: Open failed on %s", pidpath); + perror (pidpath); + break; + } #ifdef HAVE_FILE_LOCKS flockfile(fp); /* wait Denemo unlock it */ @@ -163,7 +168,12 @@ while (ext_pidfiles[i] != NULL) { pidpath = get_temp_filename (ext_pidfiles[i]); - fp = fopen (pidpath, "rb+"); + if ((fp = fopen (pidpath, "rb+")) == NULL) + { + g_warning ("ext_quit: Open failed on %s", pidpath); + perror (pidpath); + break; + } #ifdef HAVE_FILE_LOCKS flockfile(fp); /* wait Denemo unlock it */ #endif diff -urN -X xdiff ../denemo/src/main.c ./src/main.c --- ../denemo/src/main.c 2007-02-05 10:47:30.000000000 +1100 +++ ./src/main.c 2007-02-05 15:26:15.000000000 +1100 @@ -348,7 +348,6 @@ { gint opts; GError *error = NULL; - gchar *localedir; DenemoGUI *gui = (DenemoGUI *) g_malloc0 (sizeof (DenemoGUI)); //#ifdef G_OS_WIN32 @@ -474,9 +473,12 @@ error = NULL; dir = g_dir_open (locatedotdenemo (), 0, &error); if (error) - g_print ("Cannot find .denemo directory\n"); + { + g_print ("Cannot find .denemo directory %s\n", error->message); + g_error_free (error); + } - while ((filename = (gchar *) g_dir_read_name (dir)) != NULL) + while (dir && (filename = (gchar *) g_dir_read_name (dir)) != NULL) { if (0 == strcmp ("crashrecovery.denemo", filename)) { @@ -528,7 +530,8 @@ } } - g_dir_close (dir); + if (dir) + g_dir_close (dir); if (optind < argc) {