/* Returned value is invalidated by repeated calls. */
static char *buildbuf;
static int buildbuflen;
+ const char *usetext;
int r, tl;
return tokv_error;
}
if (r == tokv_newline) break;
- tl+= strlen(yytext);
+ usetext= r == tokv_lwsp ? " " : yytext;
+ tl+= strlen(usetext);
if (makeroom(&buildbuf,&buildbuflen,tl)) return stringoverflow("message");
- strcat(buildbuf,yytext);
+ strcat(buildbuf,usetext);
}
*message_r= buildbuf;
return 0;
} else {
if (*p=='.') *q++= ':';
while ((c= *p++)) {
- if (c=='/') { *q++= ':'; c='-'; }
- else if (c==':') { *q++= ':'; }
+ if (c=='/') {
+ *q++= ':';
+ c= '-';
+ } else if (!((c >= '0' && c <= '9') ||
+ (c >= 'a' && c <= 'z') ||
+ c == '-' || c == '_')) {
+ *q++= ':';
+ }
*q++= c;
}
*q++= 0;