start_editor_from_filelist_full fixes
authorVladimir Nadvornik <nadvornik@suse.cz>
Mon, 7 Sep 2009 20:44:29 +0000 (20:44 +0000)
committerVladimir Nadvornik <nadvornik@suse.cz>
Mon, 7 Sep 2009 20:44:29 +0000 (20:44 +0000)
fixed return value from start_editor_from_filelist_full()
call editor_command_parse to detect possible problems early enough

src/editors.c
src/utilops.c

index 8862d9a..606ce00 100644 (file)
@@ -1225,14 +1225,18 @@ EditorFlags start_editor_from_filelist_full(const gchar *key, GList *list, const
 {
        EditorFlags error;
        EditorDescription *editor;
-       if (!key) return FALSE;
+       if (!key) return EDITOR_ERROR_EMPTY;
        
        editor = g_hash_table_lookup(editors, key);
 
-       if (!editor) return FALSE;
-       if (!list && !(editor->flags & EDITOR_NO_PARAM)) return FALSE;
+       if (!editor) return EDITOR_ERROR_EMPTY;
+       if (!list && !(editor->flags & EDITOR_NO_PARAM)) return EDITOR_ERROR_NO_FILE;
+
+       error = editor_command_parse(editor, list, TRUE, NULL);
 
-       error = editor_command_start(editor, editor->name, list, working_directory, cb, data);
+       if (EDITOR_ERRORS(error)) return error;
+
+       error |= editor_command_start(editor, editor->name, list, working_directory, cb, data);
 
        if (EDITOR_ERRORS(error))
                {
@@ -1242,7 +1246,7 @@ EditorFlags start_editor_from_filelist_full(const gchar *key, GList *list, const
                g_free(text);
                }
 
-       return error;
+       return EDITOR_ERRORS(error);
 }
 
 EditorFlags start_editor_from_filelist(const gchar *key, GList *list)
index a11d405..093f6ae 100644 (file)
@@ -872,7 +872,7 @@ void file_util_perform_ci(UtilityData *ud)
                                }
                        }
 
-               if (flags)
+               if (EDITOR_ERRORS(flags))
                        {
                        gchar *text = g_strdup_printf(_("%s\nUnable to start external command.\n"), editor_get_error_str(flags));
                        file_util_warning_dialog(ud->messages.fail, text, GTK_STOCK_DIALOG_ERROR, NULL);