Discard too long lines in dictionary file (#14)
* Discard too long lines in dictionary file * Discard too long lines in dictionary file: add warning and test
This commit is contained in:
parent
a8d50da0cc
commit
73dd2967c8
22
hyphen.c
22
hyphen.c
|
@ -438,11 +438,25 @@ for (k = 0; k < 2; k++) {
|
|||
}
|
||||
|
||||
if (k == 0 || nextlevel) {
|
||||
while (fgets (buf, sizeof(buf), f) != NULL) {
|
||||
while (fgets(buf, sizeof(buf), f) != NULL) {
|
||||
|
||||
/* discard lines that don't fit in buffer */
|
||||
if (!feof(f) && strchr(buf, '\n') == NULL) {
|
||||
int c;
|
||||
while ((c = fgetc(f)) != '\n' && c != EOF);
|
||||
/* issue warning if not a comment */
|
||||
if (buf[0] != '%') {
|
||||
fprintf(stderr, "Warning: skipping too long pattern (more than %lu chars)\n", sizeof(buf));
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strncmp(buf, "NEXTLEVEL", 9) == 0) {
|
||||
nextlevel = 1;
|
||||
break;
|
||||
} else if (buf[0] != '%') hnj_hyphen_load_line(buf, dict[k], hashtab);
|
||||
nextlevel = 1;
|
||||
break;
|
||||
} else if (buf[0] != '%') {
|
||||
hnj_hyphen_load_line(buf, dict[k], hashtab);
|
||||
}
|
||||
}
|
||||
} else if (k == 1) {
|
||||
/* default first level: hyphen and ASCII apostrophe */
|
||||
|
|
|
@ -11,6 +11,7 @@ alt4.test \
|
|||
alt5.test \
|
||||
alt6.test \
|
||||
alt7.test \
|
||||
longlines.test \
|
||||
compound.test \
|
||||
compound2.test \
|
||||
compound3.test \
|
||||
|
@ -50,6 +51,9 @@ alt6.word \
|
|||
alt7.hyph \
|
||||
alt7.pat \
|
||||
alt7.word \
|
||||
longlines.hyph \
|
||||
longlines.pat \
|
||||
longlines.word \
|
||||
alt.hyph \
|
||||
alt.pat \
|
||||
alt.word \
|
||||
|
@ -105,6 +109,7 @@ alt4.test \
|
|||
alt5.test \
|
||||
alt6.test \
|
||||
alt7.test \
|
||||
longlines.test \
|
||||
alt.test \
|
||||
basealt2.test \
|
||||
basealt.test \
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
a=bc=d
|
|
@ -0,0 +1,10 @@
|
|||
ISO8859-1
|
||||
LEFTHYPHENMIN 1
|
||||
RIGHTHYPHENMIN 1
|
||||
% Check whether characters over MAX_CHARS are not treated as new line
|
||||
% This test is valid as long as MAX_CHARS is 100
|
||||
%
|
||||
% Following pattern should result in a=bc=d hyphenation
|
||||
a1b2c1d
|
||||
% and should not be overriden by pattern from too long comment (over MAX_CHARS characters)
|
||||
%|------------------------------ this part is 100 characters long --------------------------------|a8b9c8d
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
DIR="`dirname $0`"
|
||||
NAME="`basename $0 .test`"
|
||||
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1 @@
|
|||
abcd
|
Loading…
Reference in New Issue