/* quad-option vars */
enum
{
-
- OPT_VERIFYSIG, /* verify PGP signatures */
- OPT_PGPTRADITIONAL, /* create old-style PGP messages */
-
-#ifdef USE_SSL
- OPT_SSLSTARTTLS,
-#endif
-
- OPT_PRINT,
- OPT_INCLUDE,
+ OPT_ABORT,
+ OPT_BOUNCE,
+ OPT_COPY,
OPT_DELETE,
+ OPT_FORWEDIT,
+ OPT_INCLUDE,
OPT_MFUPTO,
OPT_MIMEFWD,
+ OPT_MIMEFWDREST,
OPT_MOVE,
- OPT_COPY,
+ OPT_PGPTRADITIONAL, /* create old-style PGP messages */
#ifdef USE_POP
OPT_POPDELETE,
OPT_POPRECONNECT,
#endif
OPT_POSTPONE,
+ OPT_PRINT,
OPT_QUIT,
OPT_REPLYTO,
- OPT_ABORT,
OPT_RECALL,
+#ifdef USE_SSL
+ OPT_SSLSTARTTLS,
+#endif
OPT_SUBJECT,
- OPT_MIMEFWDREST,
- OPT_FORWEDIT,
- OPT_MAX,
- OPT_BOUNCE
+ OPT_VERIFYSIG, /* verify PGP signatures */
+
+ /* THIS MUST BE THE LAST VALUE. */
+ OPT_MAX
};
/* flags to ci_send_message() */
void mutt_expand_fmt (char *dest, size_t destlen, const char *fmt, const char *src)
{
- const char *p = fmt;
- const char *last = p;
- size_t len;
+ const char *p;
+ char *d;
size_t slen;
int found = 0;
slen = mutt_strlen (src);
+ destlen--;
- while ((p = strchr (p, '%')) != NULL)
+ for (p = fmt, d = dest; destlen && *p; p++)
{
- if (p[1] == 's')
+ if (*p == '%')
{
- found++;
-
- len = (size_t) (p - last);
- if (len)
+ switch (p[1])
{
- if (len > destlen - 1)
- len = destlen - 1;
-
- memcpy (dest, last, len);
- dest += len;
- destlen -= len;
-
- if (destlen <= 0)
- {
- *dest = 0;
- break; /* no more space */
- }
- }
-
- strfcpy (dest, src, destlen);
- if (slen > destlen)
- {
- /* no more room */
- break;
+ case '%':
+ *d++ = *p++;
+ destlen--;
+ break;
+ case 's':
+ found = 1;
+ strfcpy (d, src, destlen + 1);
+ d += destlen > slen ? slen : destlen;
+ destlen -= destlen > slen ? slen : destlen;
+ p++;
+ break;
+ default:
+ *d++ = *p;
+ destlen--;
+ break;
}
- dest += slen;
- destlen -= slen;
-
- p += 2;
- last = p;
}
- else if (p[1] == '%')
- p++;
-
- p++;
+ else
+ {
+ *d++ = *p;
+ destlen--;
+ }
+ }
+
+ *d = '\0';
+
+ if (!found && destlen > 0)
+ {
+ strncat (dest, " ", destlen);
+ strncat (dest, src, destlen-1);
}
-
- if (found)
- strfcpy (dest, last, destlen);
- else
- snprintf (dest, destlen, "%s %s", fmt, src);
}