X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Ffmt_scan.c;h=9ad7b8a7e4505ee923546c2fdf3a1e033dd585b4;hp=a8e773a953fd04b8a89c9dbbe91c46b2dc54c4f9;hb=fc9279e818dfc96c63a5d75a89080cc68cfe1170;hpb=cf1205b5cbea2f0cd6ea710ec16c637df85b647c diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index a8e773a..9ad7b8a 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -688,32 +688,10 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat) /* UNQUOTEs RFC-2822 quoted-string and quoted-pair */ case FT_LS_UNQUOTE: if (str) { - int m; strncpy(buffer, str, sizeof(buffer)); /* strncpy doesn't NUL-terminate if it fills the buffer */ buffer[sizeof(buffer)-1] = '\0'; - str = buffer; - - /* we will parse from buffer to buffer2 */ - n = 0; /* n is the input position in str */ - m = 0; /* m is the ouput position in buffer2 */ - - while ( str[n] != '\0') { - switch ( str[n] ) { - case '\\': - n++; - if ( str[n] != '\0') - buffer2[m++] = str[n++]; - break; - case '"': - n++; - break; - default: - buffer2[m++] = str[n++]; - break; - } - } - buffer2[m] = '\0'; + unquote_string(buffer, buffer2); str = buffer2; } break; @@ -868,6 +846,20 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat) } break; + case FT_LS_UNMAILTO: + if (!str) { + break; + } + str = trim(str); + if (*str == '<' && str[strlen(str)-1] == '>') { + str++; + str[strlen(str)-1] = '\0'; + } + if (strncmp("mailto:", str, 7)==0) { + str += 7; + } + break; + } fmt++; }