#include "gettext.h"
#define _(msgid) gettext (msgid)
-/* Result of type detection. */
-enum detect_result
- {
- YES, /* It is this type. */
- NO, /* It is not this type. */
- IO_ERROR /* File couldn't be opened. */
- };
-
/* Tries to detect whether FILE is a given type of file, by opening the file
and passing it to DETECT, and returns a detect_result. */
static enum detect_result
{
msg (ME, _("An error occurred while opening `%s': %s."),
file_name, strerror (errno));
- return IO_ERROR;
+ return ANY_ERROR;
}
is_type = detect (file);
fn_close (file_name, file);
- return is_type ? YES : NO;
+ return is_type ? ANY_YES : ANY_NO;
}
/* Returns true if any_reader_open() would be able to open FILE as a data
file, false otherwise. */
-bool
+enum detect_result
any_reader_may_open (const char *file)
{
- return (try_detect (file, sfm_detect) == YES
- || try_detect (file, pfm_detect) == YES);
+ enum detect_result res = try_detect (file, sfm_detect);
+
+ if (res == ANY_NO)
+ res = try_detect (file, pfm_detect);
+
+ return res;
}
/* Returns a casereader for HANDLE. On success, returns the new
enum detect_result result;
result = try_detect (fh_get_file_name (handle), sfm_detect);
- if (result == IO_ERROR)
+ if (result == ANY_ERROR)
return NULL;
- else if (result == YES)
+ else if (result == ANY_YES)
return sfm_open_reader (handle, encoding, dict, NULL);
result = try_detect (fh_get_file_name (handle), pfm_detect);
- if (result == IO_ERROR)
+ if (result == ANY_ERROR)
return NULL;
- else if (result == YES)
+ else if (result == ANY_YES)
return pfm_open_reader (handle, dict, NULL);
msg (SE, _("`%s' is not a system or portable file."),
#include <stdbool.h>
+/* Result of type detection. */
+enum detect_result
+ {
+ ANY_YES, /* It is this type. */
+ ANY_NO, /* It is not this type. */
+ ANY_ERROR /* File couldn't be opened. */
+ };
+
+
struct file_handle;
struct dictionary;
-bool any_reader_may_open (const char *file_name);
+enum detect_result any_reader_may_open (const char *file_name);
struct casereader *any_reader_open (struct file_handle *, const char *encoding,
struct dictionary **);
return;
}
- gtk_widget_set_sensitive (encoding_selector, ! any_reader_may_open (sysname));
+ gtk_widget_set_sensitive (encoding_selector, ANY_NO == any_reader_may_open (sysname));
}
GtkWidget *
gchar *encoding = psppire_encoding_selector_get_encoding (
gtk_file_chooser_get_extra_widget (GTK_FILE_CHOOSER (dialog)));
- if (any_reader_may_open (sysname))
+ enum detect_result res = any_reader_may_open (sysname);
+ if (ANY_YES == res)
open_data_window (de, name, NULL);
- else
+ else if (ANY_NO == res)
open_syntax_window (name, encoding);
g_free (encoding);
{
gchar *filename = local_to_filename_encoding (data_file);
+ enum detect_result res = any_reader_may_open (filename);
+
/* Check to see if the file is a .sav or a .por file. If not
assume that it is a syntax file */
- if ( any_reader_may_open (filename))
- open_data_window (NULL, filename, NULL);
- else
+ if (res == ANY_YES)
+ open_data_window (NULL, filename, NULL);
+ else if (res == ANY_NO)
{
create_data_window ();
open_syntax_window (filename, NULL);