]> diplodocus.org Git - nmh/blobdiff - sbr/fmt_scan.c
OK, use SunStudio cc, if present, on Solaris if user didn't set CC.
[nmh] / sbr / fmt_scan.c
index d0bb16dfc1053eb235c44d5648c8d50d1b6a139d..a7ad1249068b8193150fd08ceb5174b3ceebc740 100644 (file)
@@ -25,7 +25,6 @@
 #  include <wchar.h>
 #endif
 
-extern int fmt_norm;           /* defined in sbr/fmt_def.c = AD_NAME */
 struct mailname fmt_mnull = { NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0,
                              NULL, NULL };
 
@@ -868,32 +867,10 @@ fmt_scan (struct format *format, char *scanl, size_t max, 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;
@@ -1009,7 +986,7 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat,
            if (comp->c_mn != &fmt_mnull)
                mnfree (comp->c_mn);
            if ((sp = comp->c_text) && (sp = getname(sp)) &&
-               (mn = getm (sp, NULL, 0, fmt_norm, NULL))) {
+               (mn = getm (sp, NULL, 0, NULL, 0))) {
                comp->c_mn = mn;
                while (getname(""))
                    ;
@@ -1031,7 +1008,7 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat,
            if (comp->c_mn != &fmt_mnull)
                mnfree (comp->c_mn);
            if ((sp = comp->c_text) && (sp = getname(sp)) &&
-               (mn = getm (sp, NULL, 0, AD_NAME, NULL))) {
+               (mn = getm (sp, NULL, 0, NULL, 0))) {
                comp->c_mn = mn;
                if (ismymbox(mn))
                    comp->c_flags |= CF_TRUE;
@@ -1039,7 +1016,7 @@ fmt_scan (struct format *format, char *scanl, size_t max, int width, int *dat,
                    comp->c_flags &= ~CF_TRUE;
                while ((sp = getname(sp)))
                    if ((comp->c_flags & CF_TRUE) == 0 &&
-                       (mn = getm (sp, NULL, 0, AD_NAME, NULL)))
+                       (mn = getm (sp, NULL, 0, NULL, 0)))
                        if (ismymbox(mn))
                            comp->c_flags |= CF_TRUE;
            } else {