-
/*
* mh.h -- main header file for all of nmh
*/
#define DMAXFOLDER 4 /* typical number of digits */
#define MAXFOLDER 1000 /* message increment */
+/*
+ * This macro is for use by scan, for example, so that platforms with
+ * a small BUFSIZ can easily allocate larger buffers.
+ */
+#define NMH_BUFSIZ (BUFSIZ>=8192 ? BUFSIZ : 8192)
+
#ifndef FALSE
#define FALSE 0
#endif
#define NMH_UNUSED(i) i
#endif
+/*
+ * char array that keeps track of size in both bytes and characters
+ * Usage note:
+ * Don't store return value of charstring_buffer() and use later
+ * after intervening push_back's; use charstring_buffer_copy()
+ * instead.
+ */
+typedef struct charstring *charstring_t;
+
+charstring_t charstring_create (size_t);
+charstring_t charstring_copy (const charstring_t);
+void charstring_free (charstring_t);
+/* Append a single-byte character: */
+void charstring_push_back (charstring_t, const char);
+/* Append possibly multi-byte character(s): */
+void charstring_push_back_chars (charstring_t, const char [], size_t, size_t);
+void charstring_append (charstring_t, const charstring_t);
+void charstring_append_cstring (charstring_t, const char []);
+void charstring_clear (charstring_t);
+/* Don't store return value of charstring_buffer() and use later after
+ intervening push_back's; use charstring_buffer_copy() instead. */
+const char *charstring_buffer (const charstring_t);
+/* User is responsible for free'ing result of buffer copy. */
+char *charstring_buffer_copy (const charstring_t);
+size_t charstring_bytes (const charstring_t);
+size_t charstring_chars (const charstring_t);
+/* Length of the last character in the charstring. */
+int charstring_last_char_len (const charstring_t);
+
/*
* user context/profile structure
*/
* general folder attributes
*/
#define READONLY (1<<0) /* No write access to folder */
-#define SEQMOD (1<<1) /* folder's sequences modifed */
+#define SEQMOD (1<<1) /* folder's sequences modified */
#define ALLOW_NEW (1<<2) /* allow the "new" sequence */
#define OTHERS (1<<3) /* folder has other files */
#define MODIFIED (1<<4) /* msh in-core folder modified */
const unsigned long *bvector_bits (bvector_t);
size_t bvector_maxsize (bvector_t);
-struct svector;
typedef struct svector *svector_t;
svector_t svector_create (size_t);
void svector_free (svector_t);
char *svector_push_back (svector_t, char *);
char *svector_at (svector_t, size_t);
+char **svector_find(svector_t, const char *);
char **svector_strs (svector_t);
size_t svector_size (svector_t);
-struct ivector;
typedef struct ivector *ivector_t;
ivector_t ivector_create (size_t);
#define MS_UNKNOWN 1 /* type not known yet */
#define MS_MBOX 2 /* Unix-style "from" lines */
#define MS_MMDF 3 /* string mmdlm2 */
-#define MS_MSH 4 /* whacko msh */
#define NOUSE 0 /* draft being re-used */
extern char *context;
extern char *current;
extern char *credentials_file;
+extern int credentials_no_perm_check;
extern char *defaultfolder;
extern char *digestcomps;
extern char *distcomps;
extern char *mhlreply;
extern char *moreproc;
extern char *msgprot;
-extern char *mshproc;
extern char *nmhaccessftp;
extern char *nmhaccessurl;
extern char *nmhstorage;
extern char *showmimeproc;
extern char *showproc;
extern char *usequence;
+extern char *user_agent;
extern char *version_num;
extern char *version_str;
-extern char *vmhproc;
extern char *whatnowproc;
extern char *whomproc;