Instead of making system or portable file readers responsible for
[pspp-builds.git] / src / file-handle.h
index 5f18202a48069eff675c36c0c17d604333ccc5f0..00a79109601465fdf05f69710421aec690dd427e 100644 (file)
 #if !file_handle_h
 #define file_handle_h 1
 
-/* File handle provider (fhp).
-
-   This module provides file handles in the form of file_handle
-   structures to the dfm and sfm modules, which are known as file
-   handle users (fhusers).  fhp does not know anything about file
-   contents. */
+/* File handles. */
 
 #include <stddef.h>
-#include "error.h"
-
-struct file_handle;
-
-/* Services that fhusers provide to fhp. */
-struct fh_ext_class
-  {
-    int magic;                 /* Magic identifier for fhuser. */
-    const char *name;          /* String identifier for fhuser. */
-
-    void (*close) (struct file_handle *); /* Closes the file. */
-  };
-
-/* Mostly-opaque structure. */
-struct file_handle
-  {
-    struct private_file_handle *private;
-    const struct fh_ext_class *class;  /* Polymorphism support. */
-    void *ext;                 /* Extension struct for fhuser use. */
-  };
 
 /* File modes. */
 enum file_handle_mode
@@ -56,20 +31,16 @@ enum file_handle_mode
     MODE_BINARY                 /* Fixed-length records. */
   };
 
-/* Pointer to the file handle that corresponds to data in the command
-   file entered via BEGIN DATA/END DATA. */
-extern struct file_handle *inline_file;
-
-/* Initialization. */
-void fh_init_files (void);
+/* Parsing handles. */
+struct file_handle *fh_parse (void);
 
 /* Opening and closing handles. */
-struct file_handle *fh_parse_file_handle (void);
-void fh_close_handle (struct file_handle *handle);
+void **fh_open (struct file_handle *, const char *type, const char *mode);
+int fh_close (struct file_handle *, const char *type, const char *mode);
 
 /* Handle info. */
-const char *handle_get_name (const struct file_handle *handle);
-const char *handle_get_filename (const struct file_handle *handle);
+const char *handle_get_name (const struct file_handle *);
+const char *handle_get_filename (const struct file_handle *);
 enum file_handle_mode handle_get_mode (const struct file_handle *);
 size_t handle_get_record_width (const struct file_handle *);
 size_t handle_get_tab_width (const struct file_handle *);