diff options
author | Antti-Juhani Kaijanaho <ajk@debian.org> | 2009-12-12 15:14:57 +0200 |
---|---|---|
committer | Antti-Juhani Kaijanaho <ajk@debian.org> | 2009-12-12 15:14:57 +0200 |
commit | 0e53e16da117df9b76e979b6cf5c27f0ca64cb23 (patch) | |
tree | 506b1deae823bdf94170884a2d47733717eda7f9 /tbl-dctrl | |
parent | c5eea335e395fd0cd2725c38d8e51823960c5683 (diff) | |
download | dctrl-tools-0e53e16da117df9b76e979b6cf5c27f0ca64cb23.tar.gz |
tbl-dctrl: Fix field line length detection for multi-line fields
Signed-off-by: Antti-Juhani Kaijanaho <ajk@debian.org>
Diffstat (limited to 'tbl-dctrl')
-rw-r--r-- | tbl-dctrl/tbl-dctrl.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/tbl-dctrl/tbl-dctrl.c b/tbl-dctrl/tbl-dctrl.c index 481082d..60026ae 100644 --- a/tbl-dctrl/tbl-dctrl.c +++ b/tbl-dctrl/tbl-dctrl.c @@ -1,5 +1,5 @@ /* dctrl-tools - Debian control file inspection tools - Copyright © 2005, 2006, 2007, 2008 Antti-Juhani Kaijanaho + Copyright © 2005, 2006, 2007, 2008, 2009 Antti-Juhani Kaijanaho This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -335,10 +335,16 @@ static struct argp argp = { options, parse_opt, 0, progdoc }; static size_t mbs_len(char const *mbs, size_t n, char const *fname) { if (n == (size_t)(-1)) n = strlen(mbs); + size_t mlen = 0; size_t len = 0; mblen(NULL, 0); for (size_t k = 0; k < n;/**/) { - if (mbs[k] == '\n') break; + if (mbs[k] == '\n') { + if (len > mlen) mlen = len; + len = 0; + k++; + continue; + } len++; int delta = mblen(mbs + k, n - k); if (delta <= 0) { @@ -349,7 +355,7 @@ static size_t mbs_len(char const *mbs, size_t n, char const *fname) k += delta; } } - return len; + return len > mlen ? len : mlen; } int main(int argc, char * argv[]) |