1/* vi: set sw=4 ts=4: */
2
3PUSH_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
19enum dump_vflag_t { ALL, DUP, FIRST, WAIT };	/* -v values */
20
21typedef 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
30typedef 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
39typedef 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
45typedef 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
52dumper_t* alloc_dumper(void) FAST_FUNC;
53extern void bb_dump_add(dumper_t *dumper, const char *fmt) FAST_FUNC;
54extern int bb_dump_dump(dumper_t *dumper, char **argv) FAST_FUNC;
55
56POP_SAVED_FUNCTION_VISIBILITY
57