Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/* Copyright (C) 1995, 1997, 1998 Aladdin Enterprises.  All rights reserved.
2
 
3
  This software is provided AS-IS with no warranty, either express or
4
  implied.
5
 
6
  This software is distributed under license and may not be copied,
7
  modified or distributed except as expressly authorized under the terms
8
  of the license contained in the file LICENSE in this distribution.
9
 
10
  For more information about licensing, please refer to
11
  http://www.ghostscript.com/licensing/. For information on
12
  commercial licensing, go to http://www.artifex.com/licensing/ or
13
  contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14
  San Rafael, CA  94903, U.S.A., +1(415)492-9861.
15
*/
16
 
17
/* $Id: gxclio.h,v 1.5 2002/06/16 08:45:43 lpd Exp $ */
18
/* I/O interface for command lists */
19
 
20
#ifndef gxclio_INCLUDED
21
#  define gxclio_INCLUDED
22
 
23
#include "gp.h"			/* for gp_file_name_sizeof */
24
 
25
/*
26
 * There are two implementations of the I/O interface for command lists --
27
 * one suitable for embedded systems, which stores the "files" in RAM, and
28
 * one suitable for other systems, which uses an external file system --
29
 * with the choice made at compile/link time.  This header file defines the
30
 * API between the command list code proper and its I/O interface.
31
 */
32
 
33
typedef void *clist_file_ptr;	/* We can't do any better than this. */
34
 
35
/* ---------------- Open/close/unlink ---------------- */
36
 
37
/*
38
 * If *fname = 0, generate and store a new scratch file name; otherwise,
39
 * open an existing file.  Only modes "r" and "w+" are supported,
40
 * and only binary data (but the caller must append the "b" if needed).
41
 * Mode "r" with *fname = 0 is an error.
42
 */
43
int clist_fopen(char fname[gp_file_name_sizeof], const char *fmode,
44
		clist_file_ptr * pcf,
45
		gs_memory_t * mem, gs_memory_t *data_mem,
46
		bool ok_to_compress);
47
 
48
/*
49
 * Close a file, optionally deleting it.
50
 */
51
int clist_fclose(clist_file_ptr cf, const char *fname, bool delete);
52
 
53
/*
54
 * Delete a file.
55
 */
56
int clist_unlink(const char *fname);
57
 
58
/* ---------------- Writing ---------------- */
59
 
60
/* clist_space_available returns min(requested, available). */
61
long clist_space_available(long requested);
62
 
63
int clist_fwrite_chars(const void *data, uint len, clist_file_ptr cf);
64
 
65
/* ---------------- Reading ---------------- */
66
 
67
int clist_fread_chars(void *data, uint len, clist_file_ptr cf);
68
 
69
/* ---------------- Position/status ---------------- */
70
 
71
/*
72
 * Set the low-memory warning threshold.  clist_ferror_code will return 1
73
 * if fewer than this many bytes of memory are left for storing band data.
74
 */
75
int clist_set_memory_warning(clist_file_ptr cf, int bytes_left);
76
 
77
/*
78
 * clist_ferror_code returns a negative error code per gserrors.h, not a
79
 * Boolean; 0 means no error, 1 means low-memory warning.
80
 */
81
int clist_ferror_code(clist_file_ptr cf);
82
 
83
long clist_ftell(clist_file_ptr cf);
84
 
85
/*
86
 * We pass the file name to clist_rewind and clist_fseek in case the
87
 * implementation has to close and reopen the file.  (clist_fseek with
88
 * offset = 0 and mode = SEEK_END indicates we are about to append.)
89
 */
90
void clist_rewind(clist_file_ptr cf, bool discard_data, const char *fname);
91
 
92
int clist_fseek(clist_file_ptr cf, long offset, int mode, const char *fname);
93
 
94
#endif /* gxclio_INCLUDED */