The following commit has been merged in the master branch: commit 725675ddc107907ea68db5acef868896cf3915d2 Author: Guillem Jover <guil...@debian.org> Date: Tue Aug 2 04:24:10 2011 +0200
libdpkg: Rename parse helper *_mmap functions to parse_* This abstracts the method used to load the file contents, and it also namespaces it for the parser. diff --git a/lib/dpkg/parse.c b/lib/dpkg/parse.c index 7ddced1..7c6e7f0 100644 --- a/lib/dpkg/parse.c +++ b/lib/dpkg/parse.c @@ -311,9 +311,9 @@ pkg_parse_copy(struct parsedb_state *ps, } } -#define EOF_mmap(ps) ((ps)->dataptr >= (ps)->endptr) -#define getc_mmap(ps) *(ps)->dataptr++ -#define ungetc_mmap(c, ps) (ps)->dataptr-- +#define parse_EOF(ps) ((ps)->dataptr >= (ps)->endptr) +#define parse_getc(ps) *(ps)->dataptr++ +#define parse_ungetc(c, ps) (ps)->dataptr-- typedef void parse_field_func(struct parsedb_state *ps, struct field_state *fs, struct pkginfo *pkg, struct pkgbin *pkgbin); @@ -329,15 +329,15 @@ parse_stanza(struct parsedb_state *ps, struct field_state *fs, int c; /* Skip adjacent new lines. */ - while (!EOF_mmap(ps)) { - c = getc_mmap(ps); + while (!parse_EOF(ps)) { + c = parse_getc(ps); if (c != '\n' && c != MSDOS_EOF_CHAR) break; ps->lno++; } /* Nothing relevant parsed, bail out. */ - if (EOF_mmap(ps)) + if (parse_EOF(ps)) return false; /* Loop per field. */ @@ -346,16 +346,16 @@ parse_stanza(struct parsedb_state *ps, struct field_state *fs, /* Scan field name. */ fs->fieldstart = ps->dataptr - 1; - while (!EOF_mmap(ps) && !isspace(c) && c != ':' && c != MSDOS_EOF_CHAR) - c = getc_mmap(ps); + while (!parse_EOF(ps) && !isspace(c) && c != ':' && c != MSDOS_EOF_CHAR) + c = parse_getc(ps); fs->fieldlen = ps->dataptr - fs->fieldstart - 1; /* Skip spaces before ‘:’. */ - while (!EOF_mmap(ps) && c != '\n' && isspace(c)) - c = getc_mmap(ps); + while (!parse_EOF(ps) && c != '\n' && isspace(c)) + c = parse_getc(ps); /* Validate ‘:’. */ - if (EOF_mmap(ps)) + if (parse_EOF(ps)) parse_error(ps, _("EOF after field name `%.*s'"), fs->fieldlen, fs->fieldstart); if (c == '\n') @@ -371,12 +371,12 @@ parse_stanza(struct parsedb_state *ps, struct field_state *fs, fs->fieldlen, fs->fieldstart); /* Skip space after ‘:’ but before value and EOL. */ - while (!EOF_mmap(ps)) { - c = getc_mmap(ps); + while (!parse_EOF(ps)) { + c = parse_getc(ps); if (c == '\n' || !isspace(c)) break; } - if (EOF_mmap(ps)) + if (parse_EOF(ps)) parse_error(ps, _("EOF before value of field `%.*s' (missing final newline)"), fs->fieldlen, fs->fieldstart); @@ -397,27 +397,27 @@ parse_stanza(struct parsedb_state *ps, struct field_state *fs, fs->fieldlen, fs->fieldstart); ps->lno++; - if (EOF_mmap(ps)) + if (parse_EOF(ps)) break; - c = getc_mmap(ps); + c = parse_getc(ps); /* Found double EOL, or start of new field. */ - if (EOF_mmap(ps) || c == '\n' || !isspace(c)) + if (parse_EOF(ps) || c == '\n' || !isspace(c)) break; - ungetc_mmap(c, ps); + parse_ungetc(c, ps); c = '\n'; blank_line = true; } else if (blank_line && !isspace(c)) { blank_line = false; } - if (EOF_mmap(ps)) + if (parse_EOF(ps)) parse_error(ps, _("EOF during value of field `%.*s' (missing final newline)"), fs->fieldlen, fs->fieldstart); - c = getc_mmap(ps); + c = parse_getc(ps); } fs->valuelen = ps->dataptr - fs->valuestart - 1; @@ -427,7 +427,7 @@ parse_stanza(struct parsedb_state *ps, struct field_state *fs, parse_field(ps, fs, pkg, pkgbin); - if (EOF_mmap(ps) || c == '\n' || c == MSDOS_EOF_CHAR) + if (parse_EOF(ps) || c == '\n' || c == MSDOS_EOF_CHAR) break; } /* Loop per field. */ @@ -527,7 +527,7 @@ int parsedb(const char *filename, enum parsedbflags flags, if (donep) *donep = db_pkg; pdone++; - if (EOF_mmap(&ps)) + if (parse_EOF(&ps)) break; } if (data != NULL) { -- dpkg's main repository -- To UNSUBSCRIBE, email to debian-dpkg-cvs-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org