]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blob - db/type.h
xfsprogs: Release v6.10.1
[thirdparty/xfsprogs-dev.git] / db / type.h
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3 * Copyright (c) 2000-2001,2005 Silicon Graphics, Inc.
4 * All Rights Reserved.
5 */
6
7 struct field;
8
9 #define szof(x,y) sizeof(((x *)0)->y)
10 #define szcount(x,y) (szof(x,y) / szof(x,y[0]))
11
12 typedef enum typnm
13 {
14 TYP_AGF, TYP_AGFL, TYP_AGI, TYP_ATTR, TYP_BMAPBTA,
15 TYP_BMAPBTD, TYP_BNOBT, TYP_CNTBT, TYP_RMAPBT, TYP_REFCBT, TYP_DATA,
16 TYP_DIR2, TYP_DQBLK, TYP_INOBT, TYP_INODATA, TYP_INODE,
17 TYP_LOG, TYP_RTBITMAP, TYP_RTSUMMARY, TYP_SB, TYP_SYMLINK,
18 TYP_TEXT, TYP_FINOBT, TYP_NONE
19 } typnm_t;
20
21 #define DB_FUZZ 2
22 #define DB_WRITE 1
23 #define DB_READ 0
24
25 typedef void (*opfunc_t)(const struct field *fld, int argc, char **argv);
26 typedef void (*pfunc_t)(int action, const struct field *fld, int argc, char **argv);
27
28 typedef struct typ
29 {
30 typnm_t typnm;
31 char *name;
32 pfunc_t pfunc;
33 const struct field *fields;
34 const struct xfs_buf_ops *bops;
35 unsigned long crc_off;
36 #define TYP_F_NO_CRC_OFF (-1UL)
37 #define TYP_F_CRC_FUNC (-2UL)
38 void (*set_crc)(struct xfs_buf *);
39 } typ_t;
40 extern const typ_t *typtab, *cur_typ;
41
42 extern void type_init(void);
43 extern void type_set_tab_crc(void);
44 extern void type_set_tab_spcrc(void);
45 extern void handle_block(int action, const struct field *fields, int argc,
46 char **argv);
47 extern void handle_string(int action, const struct field *fields, int argc,
48 char **argv);
49 extern void handle_struct(int action, const struct field *fields, int argc,
50 char **argv);
51 extern void handle_text(int action, const struct field *fields, int argc,
52 char **argv);