/* ml.h */

#ifndef __ML_H__
#define __ML_H__


/***************************************************************************
 *                      Global Includes                                    *
 ***************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/param.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/signal.h>
#include <netdb.h>
#include <time.h>

#ifdef STRICT_BSD
#include <sys/dir.h>
#define strchr index
#define strrchr rindex
#else
#include <dirent.h>
#endif

#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Xresource.h>
#include <X11/Shell.h>

#ifndef NO_EDITRES
#include <X11/Xmu/Editres.h>
#endif

#include <Xm/Xm.h>
#include <Xm/Text.h>
#include <Xm/RowColumn.h>
#include <Xm/Separator.h>
#include <Xm/CascadeB.h>
#include <Xm/BulletinB.h>
#include <Xm/MenuShell.h>
#include <Xm/ToggleB.h>
#include <Xm/PushB.h>
#include <Xm/Label.h>
#include <Xm/Form.h>
#include <Xm/DialogS.h>
#include <Xm/TextF.h>
#include <Xm/List.h>
#include <Xm/PanedW.h>
#include <Xm/ScrollBar.h>
#include <Xm/Scale.h>
#include <Xm/Protocols.h>

#include "imap-4/c-client/mail.h"
#include "imap-4/c-client/misc.h"
#include "imap-4/c-client/smtp.h"
#include "imap-4/c-client/nntp.h"
#include "imap-4/c-client/rfc822.h"
#include "imap-4/c-client/fs.h"
#define SMTPSTREAM SENDSTREAM

#include "preferences.h"

#define Tool Widget

#include "structures.h"

extern FILE *popen();    /* don't ya' just hate it when they leave these out */
extern char *tmpnam();

#define strstr ML_Strstr /* override broken one on SunOS. Won't hurt others. */

/***************************************************************************
 *                   Global definitions                                    *
 ***************************************************************************/

#define PROGRAM              "ML"
#define MLVERSION            "3.4"
#define DEFAULTS_VERSION     "3.4"
#define NO_DEFAULTS_VERSION  "0.0"

#ifndef DEFAULT_LIBDIR
#define DEFAULT_LIBDIR             "/usr/local/lib/ml"
#endif /* DEFAULT_LIBDIR */

/* Environment variables */

                      /* Call XtSetLanguageProc() if non-zero */
#define ML_SETLANG            "ML_SETLANG"

    /* hideous, actually...but don't tweak this unless to change the paths */

#define SPELL_COMMAND      "/bin/spell %c%s > %s"
#define SPELL_SORT_COMMAND   \
    "/bin/touch %s; \
     /bin/cat %s %s | /bin/sort | /bin/uniq > %s; \
     /bin/mv %s %s; \
     /bin/rm %s"

#define ISPELL_COMMAND   "xterm -e ispell %s"

#define PATH_FORTUNE "/usr/games/fortune"
#define FORTUNE_CMD  "/usr/games/fortune -s > %s"

#define ENCODING_REGEX  "*=\\?*\\?[qQbB]\\?*\\?=*"
#define CONTINUE_REGEX  "=\\?*\\?[qQbB]\\?*\\?=*"

#define MLNOTIFY 739    /* something the c-client probably won't use... */

/* IMAP flag strings */

#define DELETED_FLAG         "\\Deleted"
#define SEEN_FLAG            "\\Seen"
#define RECENT_FLAG          "\\Recent"
#define FLAGGED_FLAG         "\\Flagged"
#define ANSWERED_FLAG        "\\Answered"
#define DRAFT_FLAG           "\\Draft"
#define NIL_STR              "NIL"
#define REFERENCES           "References"

#define MAIL_BEHAVIOUR         0
#define NEWS_BEHAVIOUR         1

#define CC_BEHAVIOUR           0
#define BCC_BEHAVIOUR          1

#define LOAD_SUBSCRIBED        0
#define LOAD_UNSUBSCRIBED      1


#define DEFAULT_CURSOR         0
#define WATCH_CURSOR           1
#define PIRATE_CURSOR          2

#define SYSCALL_SUCCESS        0 
#define SYSCALL_FAILURE        (-1)

#define CONFIRM_OK_CANCEL      0
#define CONFIRM_YES_NO         1


#define STRMATCH               0
#define LISTMATCH              0
#define LISTNOMATCH            1
#define WILDMATCH              1
#define WILDNOMATCH            0

#define SUBSTRING              1
#define ROOTMENULEVEL          0
#define MODAL_LOOP_DONE        1
#define ARGLISTSIZE            32
#define FILEBUFFLEN            4096
#define MESSAGE_ID_LENGTH      256    /* length for sent Message-ID and date */
#define STATUSWIN_HEIGHT       5
#define AUTHSTR_WIDTH          32
#define CURRTIMESIZE           16
#define TABSIZE                8
#define COMPOSEWIDTH           80
#define VISIBLE_ATTACHMENTS    3
#define NUL_TERM               '\0'
#define EMPTYSTR               ""
#define PASSWORD_PATTERN       0x59
#define PASSWD_CHAR            '*'
#define PASSWD_STR             "*"

#define MAILBOXALLPATTERN      "%"
#define MAILBOXDEFAULTPATTERN  "*"
#define MAILBOXNONOPATTERN     "/*"
#define NEWSNAMESTART          "#news."

#define FILEALLPATTERN         "*"
#define LFCHAR                 '\n'
#define LFSTR                  "\n"
#define CRCHAR                 '\r'
#define CRSTR                  "\r"
#define CRLFSTR                "\r\n"
#define SPACECHAR              ' '
#define SPACESTR               " "
#define TABCHAR                '\t'
#define TABSTR                 "\t"
#define COLONCHAR              ':'
#define SEMICOLONCHAR          ';'
#define PLUSCHAR               '+'
#define PLUSSTR                "+"
#define PATH_SEPARATOR_CHAR    '/'
#define PATH_SEPARATOR_STR     "/"
#define TYPE_SEPARATOR_CHAR    '/'
#define TYPE_SEPARATOR_STR     "/"
#define ROOTDIR_STR            "/"
#define THISDIR_STR            "."
#define PARENTDIR_STR          ".."
#define COMMENT_CHAR           '#'
#define EQUALSTR               "="
#define EQUALCHAR              '='
#define DQUOTECHAR             '\"'
#define ACTION_SEPARATOR       ';'


#define TEXT_TYPE_STR        "text"
#define MULTI_TYPE_STR       "multipart"
#define MESSAGE_TYPE_STR     "message"
#define APPL_TYPE_STR        "application"
#define AUDIO_TYPE_STR       "audio"
#define IMAGE_TYPE_STR       "image"
#define VIDEO_TYPE_STR       "video"
#define OTHER_TYPE_STR       "other"
#define URL_SIG_STR          "://"
#define PART_ONE_STR         "1"         
#define HEADER_TAB_LEN       12
#define PLAINSUBTYPE         "plain"
#define NOSUBTYPE            "NO-SUBTYPE"
#define COMPOSETAG           "$COMPOSE="
#define BLANK_STR        "                                                  "
#define INBOX                "INBOX"
#define LOGTIME_FMT          "[%a %I:%M %p] "
#define CHECKMSG             "Check completed"
#define NORMALSTR            "normal"
#define VIEWLINE_FORMAT_STR \
            "%F%T %D{%e-%b-%y %H:%M} %N{ }%M{»}%-20.20P %4L %S"
#define ATTRIBUTION_FORMAT_STR \
            "%D{On %e-%b-%y at %H:%M}, %P (%A) wrote:"

#define LOGINREFRESH               10000 /* raise authwin if it's obscured */

#define DEFAULT_RESOURCE_STR       EMPTYSTR
#define DEFAULT_CONFIG             "default"
#define DEFAULT_PREFETCH           "250"
#define DEFAULT_FETCH              "20"
#define DEFAULT_RESOURCE_CHECK_INT "120"
#define DEFAULT_RESOURCE_NOTE_SAVE "300"
#define DEFAULT_RESOURCE_HEIGHT    "14"
#define DEFAULT_BGTIME             "10"
#define DEFAULT_NETCHECK           "0"
#define DEFAULT_IMAPPORT_STR       "143"
#define DEFAULT_IMAPPORT           143
#define DEFAULT_PREFIX             "> "
#define CHARSET_STR                "CHARSET"
#define US_ASCII_STR               "US-ASCII"


#define X_HEADER_TITLE            "X-Title:"
#define HEADER_FROM               "From:"
#define HEADER_SENDER             "Sender:"
#define HEADER_REPLY_TO           "Reply-To:"
#define HEADER_TO                 "To:"
#define HEADER_NEWSGROUPS         "Newsgroups:"
#define HEADER_SUBJECT            "Subject:"
#define HEADER_CC                 "Cc:"
#define HEADER_BCC                "Bcc:"
#define HEADER_IN_REPLY_TO        "In-Reply-To:"
#define HEADER_MESSAGE_ID         "Message-Id:"
#define HEADER_DATE               "Date:"
#define HEADER_REFERENCES         "References:"


#define MAILBOX_TYPE_MAIL          0
#define MAILBOX_TYPE_NEWS          1

#define DEFAULTEDITWRAPCOL_STR  "72"
#define DEFAULTSTRIP_STR        ">"
#define DEFAULTINSERT_STR       "> "
#define DEFAULTHEADERS          "from, to, newsgroups, subject, date"
#define DRAFT_FILEPAT           "*.draft"
#define DRAFT_TEXT              ".draft"

/* Local filenames used by program. */

#define MLDATADIR             ".mldata"
#define PREFSFILE             "prefs"
#define FILTERFILE            "filters"
#define NOTEFILE              "notebook"

#define SPELLSTOPFILE         ".mldata/stoplist"
#define SPELLOUTFILE          ".mldata/stoptemp"
#define SPELLJUNKFILE         ".mldata/stopjunk"


#define OLDPREFSFILE             ".mlprefs"
#define OLDNOTEFILE              ".mlnotebook"

/* 
 * Filenames for MIME configuration under preferences.mime_dir 
 * (default is $LIBDIR). See mime.c for file format information.
 */

#define MIMETYPESFILE         "mime.types"      /* list of known MIME types */
#define MIMEMAPFILE           "mime.map"        /* file suffix to type map  */
#define MIMEHANDLERFILE       "mime.handlers"   /* external viewer config   */

#define MAINHELPFILE                  "mainhelp.help"
#define MAILBOXESHELPFILE             "mailboxes.help"
#define ADDRESSBOOKHELPFILE           "addressbook.help"
#define EDFILTERHELPFILE              "filteredit.help"
#define EDFILTWINHELPFILE             "filterwin.help"
#define AUTHENTICATEHELPFILE          "authenticate.help"
#define SPELLHELPFILE                 "spellcheck.help"
#define HELPHELPFILE                  "gentext.help"
#define NOTEHELPFILE                  "notebook.help"
#define APPENDHELPFILE                "fileoption.help"
#define FILEHELPFILE                  "fileselect.help"
#define COMPOSEHELPFILE               "compose.help"
#define READWINDOWHELPFILE            "readwin.help"
#define VIEWACTIONHELPFILE            "action.help"
#define VIEWWINDOWHELPFILE            "viewwin.help"
#define VIEWLISTHELPFILE              "lviewlist.help"
#define KEYWORDHELPFILE               "keyword.help"
#define KEYBOARDHELPFILE              "keyboard.help"
#define VERSIONHELPFILE               "release.help"
#define MIMEATTACHHELPFILE            "attach.help"
#define MIMECOMPOSEHELPFILE           "composeatt.help"
#define MIMEASKHELPFILE               "mimeask.help"
#define SHOWURLHELPFILE               "showurl.help"
#define PREFSHELPFILE                 "preferences.help"
#define PREFS2HELPFILE                "preferences2.help"
#define RENAMEMAILBOXHELPFILE         "mailrename.help"
#define SHELLCOMMANDHELPFILE          "shcommand.help"
#define MIMEINFOHELPFILE              "mimeinfo.help"
#define RESOURCESHELPFILE             "resources.help"
#define PARAMSHELPFILE                "params.help"      
#define SEARCHREPHELPFILE             "searchrep.help"
#define INTLHELPFILE                  "i18n.help"
#define ADDRTAKEHELPFILE              "takeaddr.help"
#define TCPPORTHELPFILE               "tcpport.help"
#define CONFIGHELPFILE                "config.help"
#define COPTHELPFILE                  "compopts.help"

#define BEGIN_ADDRESS_STR     "*--Begin Address Entries--*"
#define END_ADDRESS_STR       "*--End Address Entries--*"
#define BEGIN_FILTER_STR      "*--Begin Filter Entries--*"
#define END_FILTER_STR        "*--End Filter Entries--*"
#define BEGIN_FILTER_MAP_STR  "*--Begin Filter Map Entries--*"
#define END_FILTER_MAP_STR    "*--End Filter Map Entries--*"
#define BEGIN_BUTTONS_STR     "*--Begin Button Entries--*"
#define END_BUTTONS_STR       "*--End Button Entries--*"
#define BEGIN_SERVERS_STR     "*--Begin Server Entries--*"
#define END_SERVERS_STR       "*--End Server Entries--*"
#define ML_DRAFT_HEADER       "#-- ML SAVED DRAFT --#"


#define ENCODE_TYPE_SUBJECT     1
#define ENCODE_TYPE_ADDRESS     2


/**************************************************************************
 *                          Global Variables                              *
 **************************************************************************/

extern XtAppContext context;                                      /* ml.c */
extern Preferences preferences;                                   /* ml.c */
extern Local_Auth local_auth;                                     /* ml.c */
extern Session *session;                                          /* ml.c */
extern Display *display;                                          /* ml.c */
extern Boolean silent_pipe;                                       /* ml.c */
extern char MLSender[];                                           /* ml.c */
extern char MLMailbox[];                                          /* ml.c */
/* icon.c */
extern Pixmap ml_icon, read_icon, compose_icon, view_icon, 
       list_icon, addr_icon, note_icon, help_icon, 
       filt_icon, edit_icon, mbox_icon, pirate_icon;

extern String fallback_resources[];                        /* resources.c */
extern char GLOBAL_text_translations[];                     /* textfncs.c */
extern char GLOBAL_text_field_translations[];               /* textfncs.c */
extern char GLOBAL_nonterminal_text_field_translations[];   /* textfncs.c */
extern char GLOBAL_terminal_text_field_translations[];      /* textfncs.c */
extern char GLOBAL_modal_list_translations[];               /* textfncs.c */
extern char GLOBAL_lview_pop_translations[];                /* textfncs.c */
extern char GLOBAL_read_pop_translations[];                 /* textfncs.c */
extern char GLOBAL_compose_pop_translations[];              /* textfncs.c */
extern char GLOBAL_filters_pop_translations[];              /* textfncs.c */
extern char GLOBAL_mailboxes_pop_translations[];            /* textfncs.c */
extern char GLOBAL_mailcopy_pop_translations[];             /* textfncs.c */
extern char GLOBAL_addresses_pop_translations[];            /* textfncs.c */
extern char GLOBAL_prefs_pop_translations[];                /* textfncs.c */
extern char GLOBAL_opts_pop_translations[];                 /* textfncs.c */
extern char GLOBAL_copts_pop_translations[];                /* textfncs.c */
extern char GLOBAL_netconf_pop_translations[];              /* textfncs.c */
extern char GLOBAL_note_pop_translations[];                 /* textfncs.c */
extern char GLOBAL_help_pop_translations[];                 /* textfncs.c */
extern char GLOBAL_messages_pop_translations[];             /* textfncs.c */
extern char GLOBAL_button_translations[];                   /* textfncs.c */
extern char        last_notify_string[];                    /* imapfncs.c */
extern MAILSTREAM *last_notify_stream;                      /* imapfncs.c */
extern Filename_Map *external_filename_map;                     /* mime.c */
extern Mime_Type  *mime_types;                                  /* mime.c */
extern Cursor clock_cursor;                                 /* winfuncs.c */
extern Cursor top_left_cursor;                              /* winfuncs.c */
extern Cursor pirate_cursor;                                /* winfuncs.c */

extern void _XEditResCheckMessages();                    /* Xmu/Editres.h */

/**************************************************************************
 *                 Now include our function prototypes                    *
 *    We do this last so that all of the types will have been defined     *
 **************************************************************************/
#include "prototypes.h"

#endif /* __ML_H__ */



syntax highlighted by Code2HTML, v. 0.9.1