summaryrefslogtreecommitdiff
path: root/tbl-dctrl
diff options
context:
space:
mode:
authorAntti-Juhani Kaijanaho <ajk@debian.org>2009-12-12 15:14:57 +0200
committerAntti-Juhani Kaijanaho <ajk@debian.org>2009-12-12 15:14:57 +0200
commit0e53e16da117df9b76e979b6cf5c27f0ca64cb23 (patch)
tree506b1deae823bdf94170884a2d47733717eda7f9 /tbl-dctrl
parentc5eea335e395fd0cd2725c38d8e51823960c5683 (diff)
downloaddctrl-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.c12
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[])