23#ifndef LIBDPKG_PARSEDUMP_H
24#define LIBDPKG_PARSEDUMP_H
67#define parse_at_eof(ps) ((ps)->dataptr >= (ps)->endptr)
68#define parse_getc(ps) *(ps)->dataptr++
69#define parse_ungetc(c, ps) (ps)->dataptr--
97#define STRUCTFIELD(klass, off, type) (*(type *)((uintptr_t)(klass) + (off)))
99#define PKGIFPOFF(f) (offsetof(struct pkgbin, f))
100#define ARCHIVEFOFF(f) (offsetof(struct archivedetails, f))
144#define FIELD(name) name, sizeof(name) - 1
165 const
char *fmt, ...)
172 const
char *value, const
char *what);
174 const
char **value, const
char *what);
176#define MSDOS_EOF_CHAR '\032'
enum DPKG_ATTR_ENUM_FLAGS parsedbflags
Definition dpkg-db.h:343
#define DPKG_ATTR_REQRET
Definition macros.h:130
#define DPKG_ATTR_ENUM_FLAGS
Definition macros.h:149
#define DPKG_BEGIN_DECLS
Definition macros.h:164
#define DPKG_ATTR_PRINTF(n)
Definition macros.h:117
#define DPKG_END_DECLS
Definition macros.h:165
#define DPKG_ATTR_NORET
Definition macros.h:108
#define DPKG_BIT(n)
Return the integer value of bit n.
Definition macros.h:203
fwritefunction w_dependency
Definition parsedump.h:134
fwritefunction w_charfield
Definition parsedump.h:133
void parsedb_load(struct parsedb_state *ps)
Load data for package deb822 style parsing.
Definition parse.c:573
freadfunction f_configversion
Definition parsedump.h:117
void parse_field_func(struct parsedb_state *ps, struct field_state *fs, void *parse_obj)
Definition parsedump.h:91
fwritefunction w_priority
Definition parsedump.h:133
fwritefunction w_version
Definition parsedump.h:134
void parse_ensure_have_field(struct parsedb_state *ps, const char **value, const char *what)
Definition parsehelp.c:348
freadfunction f_charfield
Definition parsedump.h:106
fwritefunction w_null
Definition parsedump.h:134
freadfunction f_conffiles
Definition parsedump.h:113
int parsedb_parse(struct parsedb_state *ps, struct pkginfo **pkgp)
Parse deb822 style package data from a buffer.
Definition parse.c:763
freadfunction f_trigaw
Definition parsedump.h:120
void parse_lax_problem(struct parsedb_state *ps, enum parsedbflags flags_lax, const char *fmt,...) DPKG_ATTR_PRINTF(3)
Definition parsehelp.c:83
freadfunction f_version
Definition parsedump.h:114
fwritefunction w_section
Definition parsedump.h:133
fwritefunction w_trigpend
Definition parsedump.h:137
void fwritefunction(struct varbuf *, const struct pkginfo *, const struct pkgbin *, enum fwriteflags flags, const struct fieldinfo *)
Definition parsedump.h:130
freadfunction f_architecture
Definition parsedump.h:119
freadfunction f_archives
Definition parsedump.h:121
freadfunction f_status
Definition parsedump.h:110
enum DPKG_ATTR_ENUM_FLAGS fwriteflags
Definition parsedump.h:123
freadfunction f_dependency
Definition parsedump.h:112
fwritefunction w_status
Definition parsedump.h:133
freadfunction f_priority
Definition parsedump.h:107
freadfunction f_name
Definition parsedump.h:105
fwritefunction w_trigaw
Definition parsedump.h:137
const struct fieldinfo fieldinfos[]
Fields information.
Definition parse.c:53
struct parsedb_state * parsedb_new(const char *filename, int fd, enum parsedbflags flags)
Create a new deb822 parser context.
Definition parse.c:523
fwritefunction w_name
Definition parsedump.h:133
freadfunction f_boolean
Definition parsedump.h:111
void parsedb_close(struct parsedb_state *ps)
Teardown a package deb822 parser context.
Definition parse.c:735
freadfunction f_trigpend
Definition parsedump.h:120
fwritefunction w_architecture
Definition parsedump.h:136
freadfunction f_obs_revision
Definition parsedump.h:115
fwritefunction w_archives
Definition parsedump.h:138
bool parse_stanza(struct parsedb_state *ps, struct field_state *fs, parse_field_func *parse_field, void *parse_obj)
Parse an RFC-822 style stanza.
Definition parse.c:617
fwritefunction w_multiarch
Definition parsedump.h:135
fwritefunction w_conffiles
Definition parsedump.h:134
fwritefunction w_booleandefno
Definition parsedump.h:134
void varbuf_add_arbfield(struct varbuf *vb, const struct arbitraryfield *arbfield, enum fwriteflags flags)
Definition dump.c:453
freadfunction f_section
Definition parsedump.h:109
void parse_problem(struct parsedb_state *ps, const char *fmt,...) DPKG_ATTR_PRINTF(2)
Definition parsehelp.c:100
parsedbtype
Parse action.
Definition parsedump.h:45
void parse_must_have_field(struct parsedb_state *ps, const char *value, const char *what)
Definition parsehelp.c:338
fwritefunction w_configversion
Definition parsedump.h:133
freadfunction f_obs_dependency
Definition parsedump.h:116
freadfunction f_multiarch
Definition parsedump.h:118
int parse_db_version(struct parsedb_state *ps, struct dpkg_version *version, const char *value) DPKG_ATTR_REQRET
Parse a version string coming from a database file.
Definition parsehelp.c:322
void parse_warn(struct parsedb_state *ps, const char *fmt,...) DPKG_ATTR_PRINTF(2)
Definition parsehelp.c:73
freadfunction f_obs_class
Definition parsedump.h:108
void parse_error(struct parsedb_state *ps, const char *fmt,...) DPKG_ATTR_NORET DPKG_ATTR_PRINTF(2)
Definition parsehelp.c:60
void freadfunction(struct pkginfo *pkg, struct pkgbin *pkgbin, struct parsedb_state *ps, const char *value, const struct fieldinfo *fip)
Definition parsedump.h:102
struct parsedb_state * parsedb_open(const char *filename, enum parsedbflags flags)
Open a file for deb822 parsing.
Definition parse.c:548
@ pdb_file_update
Definition parsedump.h:46
@ pdb_file_available
Definition parsedump.h:49
@ pdb_file_status
Definition parsedump.h:47
@ pdb_file_control
Definition parsedump.h:48
fw_printheader
Print field header and trailing newline.
Definition parsedump.h:127
fw_none
No flags.
Definition parsedump.h:125
Data structure representing a Debian version.
Definition version.h:42
Definition parsedump.h:71
const char * valuestart
Definition parsedump.h:73
const char * fieldstart
Definition parsedump.h:72
int valuelen
Definition parsedump.h:76
struct varbuf value
Definition parsedump.h:74
int * fieldencountered
Definition parsedump.h:77
int fieldlen
Definition parsedump.h:75
Definition parsedump.h:146
size_t namelen
Definition parsedump.h:148
freadfunction * rcall
Definition parsedump.h:149
const char * name
Definition parsedump.h:147
size_t integer
Definition parsedump.h:151
fwritefunction * wcall
Definition parsedump.h:150
Definition parsedump.h:52
enum parsedbflags flags
Definition parsedump.h:54
struct pkginfo * pkg
Definition parsedump.h:57
char * data
Definition parsedump.h:59
enum parsedbtype type
Definition parsedump.h:53
char * endptr
Definition parsedump.h:61
struct pkgbin * pkgbin
Definition parsedump.h:58
struct varbuf errmsg
Definition parsedump.h:56
char * dataptr
Definition parsedump.h:60
int lno
Definition parsedump.h:64
struct dpkg_error err
Definition parsedump.h:55
int fd
Definition parsedump.h:63
const char * filename
Definition parsedump.h:62
Node describing a binary package file.
Definition dpkg-db.h:116
Node describing an architecture package instance.
Definition dpkg-db.h:206
varbuf_init must be called exactly once before the use of each varbuf (including before any call to v...
Definition varbuf.h:56