]> code.citadel.org Git - citadel.git/blobdiff - webcit/webcit.h
* rework who.c so it doesn't use svput() and friends but rather preregistered callbac...
[citadel.git] / webcit / webcit.h
index 4509ecb1ffa3a26fe3b116afcfbe11249d42a56a..ea94f6cea39743f6de6900384b09b14f6b46dde5 100644 (file)
@@ -313,6 +313,9 @@ typedef struct _wcsubst {
 #define CTX_USERLIST 8
 #define CTX_MAILSUM 9
 #define CTX_MIME_ATACH 10
+#define CTX_ATT 11
+#define CTX_GVEA 12
+#define CTX_GVSN 13
 
 void RegisterNS(const char *NSName, long len, 
                int nMinArgs, 
@@ -367,6 +370,11 @@ void url_do_template(void);
 int CompareSubstToToken(TemplateParam *ParamToCompare, TemplateParam *ParamToLookup);
 int CompareSubstToStrBuf(StrBuf *Compare, TemplateParam *ParamToLookup);
 
+void StrBufAppendTemplate(StrBuf *Target, 
+                         int nArgs, 
+                         WCTemplateToken *Tokens,
+                         void *Context, int ContextType,
+                         StrBuf *Source, int FormatTypeIndex);
 
 
 
@@ -385,19 +393,20 @@ enum {
 /*
  * \brief mail attachment ???
  */
-struct wc_attachment {
-       struct wc_attachment *next;/* pointer to next in list */
+typedef struct _wc_attachment {
        size_t length;                     /* length of the contenttype */
-       char content_type[SIZ];    /* the content itself ???*/
-       char filename[SIZ];                /* the filename hooked to this content ??? */
+       StrBuf *content_type;      /* the content itself ???*/
+       StrBuf *filename;                  /* the filename hooked to this content ??? */
        char *data;                /* the data pool; aka this content */
        long lvalue;               /* if we put a long... */
-};
+} wc_attachment;
+void free_attachment(void *vattach);
 
 
 typedef struct wc_mime_attachment wc_mime_attachment;
 typedef void (*RenderMimeFunc)(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset);
 struct wc_mime_attachment {
+       int level;
        StrBuf *Name;
        StrBuf *FileName;
        StrBuf *PartNum;
@@ -437,6 +446,7 @@ typedef struct _message_summary {
        StrBuf *Room;
        StrBuf *Rfca;
        StrBuf *OtherNode;
+       const StrBuf *PartNum;
 
        HashList *Attachments;  /**< list of Accachments */
        HashList *Submessages;
@@ -449,17 +459,13 @@ typedef struct _message_summary {
 
 
        /** The mime part of the message */
-       wc_mime_attachment MsgBody;
-
-
-       /** Referencces; don't neeed to be freed: */
-       wc_mime_attachment *cal_partnum_ref;
-       wc_mime_attachment *vcard_partnum_ref;
+       wc_mime_attachment *MsgBody;
 } message_summary;
 void DestroyMessageSummary(void *vMsg);
 
 typedef void (*ExamineMsgHeaderFunc)(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset);
 
+void evaluate_mime_part(message_summary *Msg, wc_mime_attachment *Mime);
 
 
 
@@ -570,7 +576,7 @@ struct wcsession {
        char http_host[512];                    /**< HTTP Host: header */
        HashList *hash_prefs;                   /**< WebCit preferences for this user */
        HashList *disp_cal_items;               /**< sorted list of calendar items; startdate is the sort criteria. */
-       struct wc_attachment *first_attachment; /**< linked list of attachments for 'enter message' */
+       HashList *attachments;                  /**< list of attachments for 'enter message' */
        char last_chat_user[256];               /**< ??? todo */
        char ImportantMessage[SIZ];             /**< ??? todo */
        int ctdl_pid;                           /**< Session ID on the Citadel server */
@@ -671,7 +677,7 @@ extern HashList *LocalTemplateCache;
 extern HashList *GlobalNS;
 extern HashList *Iterators;
 extern HashList *ZoneHash;
-extern HashList *Contitionals;
+extern HashList *Conditionals;
 extern HashList *MsgHeaderHandler;
 extern HashList *MimeRenderHandler;
 
@@ -780,7 +786,7 @@ void dump_vars(void);
 void embed_main_menu(void);
 void serv_read(char *buf, int bytes);
 void readloop(char *oper);
-void read_message(long msgnum, int printable_view, char *section);
+int  read_message(StrBuf *Target, const char *tmpl, long tmpllen, long msgnum, int printable_view, const StrBuf *section);
 void do_addrbook_view(addrbookent *addrbook, int num_ab);
 void display_vcard(StrBuf *Target, const char *vcard_source, char alpha, int full, char *storename, long msgnum);
 void text_to_server(char *ptr);