Add more compat code for non GNU environments
[oweals/busybox.git] / include / dump.h
1 /* vi: set sw=4 ts=4: */
2
3 PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
4
5 #define F_IGNORE        0x01            /* %_A */
6 #define F_SETREP        0x02            /* rep count set, not default */
7 #define F_ADDRESS       0x001           /* print offset */
8 #define F_BPAD          0x002           /* blank pad */
9 #define F_C             0x004           /* %_c */
10 #define F_CHAR          0x008           /* %c */
11 #define F_DBL           0x010           /* %[EefGf] */
12 #define F_INT           0x020           /* %[di] */
13 #define F_P             0x040           /* %_p */
14 #define F_STR           0x080           /* %s */
15 #define F_U             0x100           /* %_u */
16 #define F_UINT          0x200           /* %[ouXx] */
17 #define F_TEXT          0x400           /* no conversions */
18
19 enum dump_vflag_t { ALL, DUP, FIRST, WAIT };    /* -v values */
20
21 typedef struct PR {
22         struct PR *nextpr;              /* next print unit */
23         unsigned flags;                 /* flag values */
24         int bcnt;                       /* byte count */
25         char *cchar;                    /* conversion character */
26         char *fmt;                      /* printf format */
27         char *nospace;                  /* no whitespace version */
28 } PR;
29
30 typedef struct FU {
31         struct FU *nextfu;              /* next format unit */
32         struct PR *nextpr;              /* next print unit */
33         unsigned flags;                 /* flag values */
34         int reps;                       /* repetition count */
35         int bcnt;                       /* byte count */
36         char *fmt;                      /* format string */
37 } FU;
38
39 typedef struct FS {                     /* format strings */
40         struct FS *nextfs;              /* linked list of format strings */
41         struct FU *nextfu;              /* linked list of format units */
42         int bcnt;
43 } FS;
44
45 typedef struct dumper_t {
46         off_t dump_skip;                /* bytes to skip */
47         int dump_length;                /* max bytes to read */
48         smallint dump_vflag; /*enum dump_vflag_t*/
49         FS *fshead;
50 } dumper_t;
51
52 dumper_t* alloc_dumper(void) FAST_FUNC;
53 extern void bb_dump_add(dumper_t *dumper, const char *fmt) FAST_FUNC;
54 extern int bb_dump_dump(dumper_t *dumper, char **argv) FAST_FUNC;
55
56 POP_SAVED_FUNCTION_VISIBILITY