Remove not used code (JLR define)
[mmh] / sbr / fmt_scan.c
index a8e773a..2485e6c 100644 (file)
@@ -36,6 +36,7 @@ struct mailname fmt_mnull;
 static int match(char *, char *);
 static char *get_x400_friendly(char *, char *, int);
 static int get_x400_comp(char *, char *, char *, int);
+static char *fmt_trim(char *, int);
 
 
 /*
@@ -259,6 +260,39 @@ get_x400_comp(char *mbox, char *key, char *buffer, int buffer_len)
        return 1;
 }
 
+static char *
+fmt_trim(char *str, int width)
+{
+       char *xp;
+       int ljust, i;
+       char buffer[BUFSIZ];
+
+       strncpy(buffer, str, sizeof(buffer));
+       buffer[sizeof(buffer)-1] = '\0';
+       str = buffer;
+       while (isspace(*str)) {
+               str++;
+       }
+       ljust = 0;
+       if ((i = width) < 0) {
+               i = -i;
+               ljust++;
+       }
+
+       if (!ljust && i > 0 && (int)strlen(str) > i) {
+               str[i] = '\0';
+       }
+       xp = str;
+       xp += strlen(str) - 1;
+       while (xp > str && isspace(*xp)) {
+               *xp-- = '\0';
+       }
+       if (ljust && i > 0 && (int)strlen(str) > i) {
+               str += strlen(str) - i;
+       }
+       return str;
+}
+
 struct format *
 fmt_scan(struct format *format, char *scanl, int width, int *dat)
 {
@@ -462,27 +496,7 @@ fmt_scan(struct format *format, char *scanl, int width, int *dat)
 
                case FT_LS_TRIM:
                        if (str) {
-                               unsigned char *xp;
-
-                               strncpy(buffer, str, sizeof(buffer));
-                               buffer[sizeof(buffer)-1] = '\0';
-                               str = buffer;
-                               while (isspace(*str))
-                                               str++;
-                               ljust = 0;
-                               if ((i = fmt->f_width) < 0) {
-                                               i = -i;
-                                               ljust++;
-                               }
-
-                               if (!ljust && i > 0 && (int)strlen(str) > i)
-                                               str[i] = '\0';
-                               xp = str;
-                               xp += strlen(str) - 1;
-                               while (xp > str && isspace(*xp))
-                                               *xp-- = '\0';
-                               if (ljust && i > 0 && (int)strlen(str) > i)
-                                       str += strlen(str) - i;
+                               str = fmt_trim(str, fmt->f_width);
                        }
                        break;
 
@@ -688,32 +702,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 +860,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++;
        }
@@ -876,17 +882,4 @@ finished:;
                *cp++ = '\n';
        *cp = '\0';
        return ((struct format *)0);
-
-#ifdef JLR
-       /* I'll remove this as soon as I understand what it does. --meillo */
-       if (cp[-1] != '\n')
-               *cp++ = '\n';
-       while (fmt->f_type != FT_DONE)
-               fmt++;
-
-       finished:;
-       *cp = '\0';
-       return (fmt->f_value ? ++fmt : (struct format *) 0);
-#endif /* JLR */
-
 }