Crossfire Server  1.75.0
microtar.h
Go to the documentation of this file.
1 
8 #ifndef MICROTAR_H
9 #define MICROTAR_H
10 
11 #include <stdio.h>
12 #include <stdlib.h>
13 
14 #define MTAR_VERSION "0.1.0"
15 
16 enum {
26 };
27 
28 enum {
29  MTAR_TREG = '0',
30  MTAR_TLNK = '1',
31  MTAR_TSYM = '2',
32  MTAR_TCHR = '3',
33  MTAR_TBLK = '4',
34  MTAR_TDIR = '5',
35  MTAR_TFIFO = '6'
36 };
37 
38 typedef struct {
39  unsigned mode;
40  unsigned owner;
41  unsigned size;
42  unsigned mtime;
43  unsigned type;
44  char name[100];
45  char linkname[100];
47 
48 
49 typedef struct mtar_t mtar_t;
50 
51 struct mtar_t {
52  int (*read)(mtar_t *tar, void *data, unsigned size);
53  int (*write)(mtar_t *tar, const void *data, unsigned size);
54  int (*seek)(mtar_t *tar, unsigned pos);
55  int (*close)(mtar_t *tar);
56  void *stream;
57  unsigned pos;
58  unsigned remaining_data;
59  unsigned last_header;
60 };
61 
62 
63 const char* mtar_strerror(int err);
64 
65 int mtar_open(mtar_t *tar, const char *filename, const char *mode);
66 int mtar_close(mtar_t *tar);
67 
68 int mtar_seek(mtar_t *tar, unsigned pos);
69 int mtar_rewind(mtar_t *tar);
70 int mtar_next(mtar_t *tar);
71 int mtar_find(mtar_t *tar, const char *name, mtar_header_t *h);
73 int mtar_read_data(mtar_t *tar, void *ptr, unsigned size);
74 
75 int mtar_write_header(mtar_t *tar, const mtar_header_t *h);
76 int mtar_write_file_header(mtar_t *tar, const char *name, unsigned size);
77 int mtar_write_dir_header(mtar_t *tar, const char *name);
78 int mtar_write_data(mtar_t *tar, const void *data, unsigned size);
79 int mtar_finalize(mtar_t *tar);
80 
81 #endif
const char * mtar_strerror(int err)
Definition: microtar.cpp:140
int mtar_seek(mtar_t *tar, unsigned pos)
Definition: microtar.cpp:216
int(* read)(mtar_t *tar, void *data, unsigned size)
Definition: microtar.h:52
int mtar_close(mtar_t *tar)
Definition: microtar.cpp:211
unsigned mode
Definition: microtar.h:39
int mtar_open(mtar_t *tar, const char *filename, const char *mode)
Definition: microtar.cpp:177
unsigned last_header
Definition: microtar.h:59
int mtar_write_header(mtar_t *tar, const mtar_header_t *h)
Definition: microtar.cpp:323
void * stream
Definition: microtar.h:56
unsigned owner
Definition: microtar.h:40
int mtar_write_file_header(mtar_t *tar, const char *name, unsigned size)
Definition: microtar.cpp:332
int mtar_rewind(mtar_t *tar)
Definition: microtar.cpp:223
int mtar_write_dir_header(mtar_t *tar, const char *name)
Definition: microtar.cpp:345
unsigned remaining_data
Definition: microtar.h:58
int(* close)(mtar_t *tar)
Definition: microtar.h:55
int(* seek)(mtar_t *tar, unsigned pos)
Definition: microtar.h:54
int mtar_find(mtar_t *tar, const char *name, mtar_header_t *h)
Definition: microtar.cpp:244
unsigned size
Definition: microtar.h:41
int(* write)(mtar_t *tar, const void *data, unsigned size)
Definition: microtar.h:53
unsigned type
Definition: microtar.h:43
int mtar_next(mtar_t *tar)
Definition: microtar.cpp:230
int mtar_write_data(mtar_t *tar, const void *data, unsigned size)
Definition: microtar.cpp:357
int mtar_finalize(mtar_t *tar)
Definition: microtar.cpp:373
unsigned mtime
Definition: microtar.h:42
unsigned pos
Definition: microtar.h:57
int mtar_read_data(mtar_t *tar, void *ptr, unsigned size)
Definition: microtar.cpp:290
int mtar_read_header(mtar_t *tar, mtar_header_t *h)
Definition: microtar.cpp:270