From 094ca96844842928810f14844413109fc6cdd890 Mon Sep 17 00:00:00 2001 From: Eduardo Chappa Date: Sun, 3 Feb 2013 00:59:38 -0700 Subject: Initial Alpine Version --- mapi/pmapi.h | 244 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 mapi/pmapi.h (limited to 'mapi/pmapi.h') diff --git a/mapi/pmapi.h b/mapi/pmapi.h new file mode 100644 index 00000000..2a8d28f8 --- /dev/null +++ b/mapi/pmapi.h @@ -0,0 +1,244 @@ +/* + * ======================================================================== + * Copyright 2006 University of Washington + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * ======================================================================== + */ + +#include "windows.h" + +#include "mapi.h" +#include "io.h" +#include "fcntl.h" +#include "sys/stat.h" +#include "string.h" +#include "stdio.h" +#include "errno.h" +#include "process.h" +#include "resource.h" +#include "time.h" +#undef ERROR +#include "../c-client-dll/mail.h" +#include "../c-client-dll/rfc822.h" +#include "../c-client-dll/osdep.h" +#include "../c-client-dll/smtp.h" +#include "../c-client-dll/misc.h" +#include "ctype.h" + +#define USER_ID 0 +#define PERSONAL_NAME 1 +#define USER_DOMAIN 2 +#define SMTP_SERVER 3 +#define INBOX_PATH 4 +#define FEATURE_LIST 5 +#define CHARACTER_SET 6 +#define FOLDER_COLLECTIONS 7 +#define PMAPI_SEND_BEHAVIOR 8 +#define DEFAULT_FCC 9 +#define PMAPI_SUPPRESS_DIALOGS 10 +#define PMAPI_STRICT_NO_DIALOG 11 +#define NUMPRCVARS 12 +#define ENABLE8BIT 0 +#define NUMPRCFEATS 1 +#define PMSB_ALWAYS_PROMPT 0 +#define PMSB_ALWAYS_SEND 1 +#define PMSB_NEVER_SEND 2 +#define PMSD_NO 0 +#define PMSD_YES 1 +#define PMSD_PROMPT 2 +#define errBufSize 300 /* for buffers to sprintf %.200s error messages into */ +#define BUFLEN 1024 +#define EDITLEN 128 +#define MSDEBUG ms_global && ms_global->debug +#define NOT_PINERC 0 +#define IS_PINERC 1 +#define PINERC_FILE "tmpmapiuwpinerc" +#define ErrorBox(msg,parm){ \ + char buf[errBufSize]; \ + sprintf(buf, msg, parm); \ + ErrorBoxFunc(buf); \ + } /* a macro so parm can be a pointer or a value as per % format */ +#define DEBUG_WRITE(msg, parm) { if(MSDEBUG) fprintf(ms_global->dfd,msg,parm);} + +#ifdef ANSI +#define PROTO(args) args +#else +#define PROTO(args) () +#endif + +/* used for pine pwd file */ +#define FIRSTCH 0x20 +#define LASTCH 0x7e +#define TABSZ (LASTCH - FIRSTCH + 1) + + +typedef struct rc_entry{ + char *var; + union { + char *p; + char **l; + } val; + int islist; + int ispmapivar; +} rc_entry_s; + +typedef struct rc_feat { + char *var; + int is_set; +} rc_feat_s; + +typedef struct STRLIST{ + char *str; + struct STRLIST *next; +} STRLIST_S; + +typedef struct file_struct{ + char *filename; + struct file_struct *next; +} file_s; + +typedef enum {RecipDesc, Message} BufType; + +typedef struct mbuffer_list{ + void *buf; + int arraysize; /* should always be 1 unless it's one of those silly arrays */ + BufType type; + struct mbuffer_list *next; +} MBUFFER_LIST_S; + +typedef struct strbuffer{ + char *buf; + unsigned long cur_bytes; + unsigned long increment; + unsigned long bufsize; +} STRBUFFER_S; + +typedef struct dlg_edits{ + char edit1[EDITLEN]; + char edit2[EDITLEN]; +} dlg_edits_s; + +typedef struct pw_cache { + char user[EDITLEN]; + char pwd[EDITLEN]; + char host[EDITLEN]; + int validpw; + struct pw_cache *next; +} pw_cache_s; + +typedef struct sessionl{ + NETMBX *mb; + dlg_edits_s dlge; + pw_cache_s *pwc; + MAILSTREAM *open_stream; + char *currently_open; + struct { + unsigned dlg_cancel:1; + unsigned int mapi_logon_ui:1; + unsigned int check_stream:1; + /* int passfile_checked; */ + } flags; + file_s *fs; + lpMapiMessage FAR lpm; + HWND mhwnd; + unsigned long session_number; + struct sessionl *next; +} sessionlist_s; + +typedef struct mapi_global{ + char *debugFile; + int debug; + FILE *dfd; + char *pineExe; + char *pineExeAlt; + char *pinerc; + char *pineconf; + char *pinercex; + char *fccfolder; + int inited; + char *tmpmbxptr; + rc_entry_s *prcvars[NUMPRCVARS]; + rc_feat_s *prcfeats[NUMPRCFEATS]; + int pmapi_send_behavior; + int pmapi_suppress_dialogs; + int pmapi_strict_no_dialog; + sessionlist_s *sessionlist; + sessionlist_s *cs; /* the current session, used for logins */ + unsigned long next_session; + unsigned long attach_no; + unsigned long attached; + MBUFFER_LIST_S *mapi_bufs; + char *attachDir; + HINSTANCE mhinst; +} mapi_global_s; + +extern struct mapi_global *ms_global; + +void ErrorBoxFunc(char *msg); +char *quote(char *old); +char *mstrdup(char *old); +int msprint(char *str); +int msprint1(char *str, void *arg1); +int msprint_message_structure(lpMapiMessage lpm); +int msprint_recipient_structure(lpMapiRecipDesc lmrd, int mapi_orig_is_unexpected); +int msprint_file_structure(lpMapiFileDesc lmfd); + +int est_size(ADDRESS *a); +int send_documents(char *files, char sep); +unsigned long send_msg_nodlg(LHANDLE lhSession, ULONG ulUIParam, + lpMapiMessage lpMessage, FLAGS flFlags, ULONG ulReserved); +ADDRESS *mapirecip2address(lpMapiRecipDesc lpmrd); +long pmapi_soutr(STRBUFFER_S *s, char *str); +char *TmpCopy(char *srcFile, int is_pinerc); +sessionlist_s *new_sessionlist(); +sessionlist_s *free_sessionlist_node(sessionlist_s *cs); +sessionlist_s *get_session(unsigned long num); +lpMapiRecipDesc new_MapiRecipDesc(int arraysize); +void free_MapiRecipDesc(lpMapiRecipDesc buf, int arraysize); +lpMapiMessage new_MapiMessage(int arraysize); +void free_MapiMessage(lpMapiMessage buf, int arraysize); +int new_mbuffer(void *buf, int arraysize, BufType type); +int free_mbuffer(void *buf); +int InitPineSpecific(sessionlist_s *cs); +MAILSTREAM *mapi_mail_open(sessionlist_s *cs, MAILSTREAM *stream, char *name, long options); +MAILSTREAM *check_mailstream(sessionlist_s *cs); +unsigned long convert_to_msgno(char *msgid); +int fetch_structure_and_attachments(long msgno, long flags, + FLAGS MAPIflags, sessionlist_s *cs); +char *message_structure_to_mailto_url(lpMapiMessage lpm); +ULONG FAR PASCAL MAPISendMail(LHANDLE lhSession, ULONG ulUIParam, lpMapiMessage lpMessage, + FLAGS flFlags, ULONG ulReserved); +ULONG FAR PASCAL MAPILogon(ULONG ulUIParam, LPTSTR lpszProfileName, LPTSTR lpszPassword, + FLAGS flFlags, ULONG ulReserved, LPLHANDLE lplhSession); +ULONG FAR PASCAL MAPILogoff (LHANDLE lhSession, ULONG ulUIParam, FLAGS flFlags, ULONG ulReserved); +ULONG FAR PASCAL MAPIFindNext (LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszMessageType, + LPSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved, + LPSTR lpszMessageID); +ULONG FAR PASCAL MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszMessageID, + FLAGS flFlags, ULONG ulReserved, lpMapiMessage FAR *lppMessage); +ULONG FAR PASCAL MAPIAddress(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszCaption, + ULONG nEditFields, LPTSTR lpszLabels, ULONG nRecips, + lpMapiRecipDesc lpRecips, FLAGS flFlags, ULONG ulReserved, + LPULONG lpnNewRecips, lpMapiRecipDesc FAR * lppNewRecips); +ULONG FAR PASCAL MAPIDeleteMail(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageID, + FLAGS flFlags, ULONG ulReserved); +ULONG FAR PASCAL MAPIDetails(LHANDLE lhSession, ULONG ulUIParam, lpMapiRecipDesc lpRecip, + FLAGS flFlags, ULONG ulReserved); +ULONG FAR PASCAL MAPIFreeBuffer(LPVOID pv); +ULONG FAR PASCAL MAPIResolveName(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszName, + FLAGS flFlags, ULONG ulReserved, lpMapiRecipDesc FAR * lppRecip); +ULONG FAR PASCAL MAPISaveMail(LHANDLE lhSession, ULONG ulUIParam, lpMapiMessage lpMessage, + FLAGS flFlags, ULONG ulReserved, LPTSTR lpszMessageID); +ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPTSTR lpszDelimChar, LPTSTR lpszFullPaths, + LPTSTR lpszFileNames, ULONG ulReserved); + +/* rfc1522.c */ +char *rfc1522_encode PROTO((char *, size_t, unsigned char *, char *)); +void get_pair PROTO((char *, char **, char **, int, int)); +void removing_leading_and_trailing_white_space PROTO((char *)); -- cgit v1.2.3-54-g00ecf