FYI, I just commented out the faulty part and it seems to be working
fine. AFAIK of course.
[util.c lines 565-571]
int
cfg_getline(char *s, int n, FILE *f) {
register int i=0, c;
s[0] = '\0';
/* skip leading whitespace */
do {
c = getc(f);
} while (c == '\t' || c == ' ');
if(c == EOF)
return 1;
while(1) {
/***
if((c == '\t') || (c == ' ')) {
s[i++] = ' ';
while((c == '\t') || (c == ' '))
c = getc(f);
}
***/
if(c == CR) {
c = getc(f);
}
if(c == EOF || c == 0x4 || c == LF || i == (n-1)) {
/* blast trailing whitespace */
while(i && (s[i-1] == ' ')) --i;
s[i] = '\0';
return 0;
}
s[i] = c;
++i;
c = getc(f);
}
}
I also believe that skipping the leading and trailing whitespace in this
routine is useless, since, from what I've read, all code after the
initial cfg_getline() in srm_command_loop() calls getword_conf(), which
skips whitespace while respecting quotes.
IMHO, cfg_getline() should be rewritten to something just reading the
stream f and copying the resulting line to s.
--Renaud