summaryrefslogtreecommitdiff
path: root/gs/base/ramfs.h
blob: b2d6f29a87c1ee04710f0f5082da497939cbbd02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#ifndef __RAMFS_H__
#define __RAMFS_H__

#define RAMFS_BLOCKSIZE 1024

typedef struct _         ;
typedef struct _ramdirent ramdirent;
typedef struct _ramhandle ramhandle;
typedef struct _    _enum     _enum;

/*
      _new: NOMEM
      _open: NOTFOUND
      _unlink: NOTFOUND
      _enum_new: NOMEM
      _enum_next: none
      _enum_end: none
  ramfile_read: none
  ramfile_write: NOSPACE, NOMEM, NOACCESS
  ramfile_seek: none
  ramfile_pos: none
  ramfile_close: none
*/

/* Error constants */
#define RAMFS_NOTFOUND 2
#define RAMFS_NOACCESS 5
#define RAMFS_NOMEM 6
#define RAMFS_NOSPACE 7

/* Open mode flags */
#define RAMFS_READ 1
#define RAMFS_CREATE 2
#define RAMFS_WRITE 4
#define RAMFS_TRUNC 8
#define RAMFS_APPEND 16

#define RAMFS_SEEK_SET 0
#define RAMFS_SEEK_CUR 1
#define RAMFS_SEEK_END 2

     *     _new(gs_memory_t *mem, int size); /* size is in KiB */
void     _destroy(gs_memory_t *,      * fs);
int     _error(const      * fs);
ramhandle *     _open(gs_memory_t *mem,      * fs,const char * filename,int mode);
int     _blocksize(     * fs);
int     _blocksfree(     * fs);
int     _unlink(     * fs,const char *filename);
int     _rename(     * fs,const char *oldname,const char *newname);
    _enum *     _enum_new(     * fs);
char*     _enum_next(    _enum * e);
void     _enum_end(    _enum * e);
int ramfile_read(ramhandle * handle,void * buf,int len);
int ramfile_write(ramhandle * handle,const void * buf,int len);
int ramfile_seek(ramhandle * handle,int pos,int whence);
int ramfile_eof(ramhandle * handle);
int ramfile_tell(ramhandle * handle);
int ramfile_size(ramhandle * handle);
void ramfile_close(ramhandle * handle);
int ramfile_error(ramhandle * handle);

#endif /* __RAMFS_H__ */