X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Ffile-handle.h;h=d7c14e991b7ea5d8283fcba9ea07c52e220d668b;hb=1f053e35b27208cad9bec322c67ba4ef022c1dc1;hp=34a859536eb1e2f5c2eaf56eabe292a9a18010ad;hpb=4944c86a9318bc5b5578ab145a95c116ffd2c9fd;p=pspp-builds.git diff --git a/src/file-handle.h b/src/file-handle.h index 34a85953..d7c14e99 100644 --- a/src/file-handle.h +++ b/src/file-handle.h @@ -14,86 +14,41 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ #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 -#include "error.h" - -/* Record formats. */ -enum - { - FH_RF_FIXED, /* Fixed length records. */ - FH_RF_VARIABLE, /* Variable length records. */ - FH_RF_SPANNED /* ? */ - }; /* File modes. */ -enum +enum file_handle_mode { - FH_MD_CHARACTER, /* Character data. */ - FH_MD_IMAGE, /* ? */ - FH_MD_BINARY, /* Character and/or binary data. */ - FH_MD_MULTIPUNCH, /* Column binary data (not supported). */ - FH_MD_360 /* ? */ + MODE_TEXT, /* New-line delimited lines. */ + MODE_BINARY /* Fixed-length records. */ }; -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 any associated file, etc. */ - }; - -/* Opaque structure. The `ext' member is an exception for use by - subclasses. `where.ln' is also acceptable. */ -struct file_handle - { - /* name must be the first member. */ - const char *name; /* File handle identifier. */ - char *norm_fn; /* Normalized filename. */ - char *fn; /* Filename as provided by user. */ - struct file_locator where; /* Used for reporting error messages. */ - - int recform; /* One of FH_RF_*. */ - size_t lrecl; /* Length of records for FH_RF_FIXED. */ - int mode; /* One of FH_MD_*. */ - - struct fh_ext_class *class; /* Polymorphism support. */ - void *ext; /* Extension struct for fhuser use. */ - }; +void fh_init(void); +void fh_done(void); -/* All the file handles in the system. */ -extern struct avl_tree *files; +/* Parsing handles. */ +struct file_handle *fh_parse (void); -/* 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; /* Opening and closing handles. */ -struct file_handle *fh_get_handle_by_name (const char name[9]); -struct file_handle *fh_get_handle_by_filename (const char *filename); -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 *fh_handle_name (struct file_handle *handle); -char *fh_handle_filename (struct file_handle *handle); -size_t fh_record_width (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 *); #endif /* !file_handle.h */