/[mailutils]/mailutils/imap4d/append.c
ViewVC logotype

Diff of /mailutils/imap4d/append.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.11 by gray, Mon Aug 26 17:06:32 2002 UTC revision 1.12 by gray, Thu Nov 21 13:47:33 2002 UTC
# Line 58  imap4d_append (struct imap4d_command *co Line 58  imap4d_append (struct imap4d_command *co
58    return util_finish (command, RESP_NO, "[TRYCREATE] failed");    return util_finish (command, RESP_NO, "[TRYCREATE] failed");
59  }  }
60    
61    static int
62    _append_date (envelope_t envelope, char *buf, size_t len, size_t *pnwrite)
63    {
64      message_t msg = envelope_get_owner (envelope);
65      struct tm **tm = message_get_owner (msg);
66    
67      strftime (buf, len, "%a %b %d %H:%M:%S %Y", *tm);
68      return 0;
69    }
70    
71    static int
72    _append_sender (envelope_t envelope, char *buf, size_t len, size_t *pnwrite)
73    {
74      strncpy (buf, "GNU-imap4d", len);
75      return 0;
76    }
77    
78  int  int
79  imap4d_append0 (mailbox_t mbox, int flags, char *text)  imap4d_append0 (mailbox_t mbox, int flags, char *text)
80  {  {
   mailbox_t tmp;  
81    stream_t stream;    stream_t stream;
82    int rc = 0;    int rc = 0;
83    size_t len = 0;    size_t len = 0;
84    message_t msg;    message_t msg = 0;
85    struct tm *tm;    struct tm *tm;
86    time_t t;    time_t t;
87    char date[80];    envelope_t env;
88        
89    if (mailbox_create (&tmp, "/dev/null"))    if (message_create (&msg, &tm))
     return 1;  
   if (mailbox_open (tmp, MU_STREAM_READ) != 0)  
90      return 1;      return 1;
91        
92    if (memory_stream_create (&stream, 0, MU_STREAM_RDWR)    if (memory_stream_create (&stream, 0, MU_STREAM_RDWR)
93        || stream_open (stream))        || stream_open (stream))
94      {      {
95        mailbox_close (tmp);        message_destroy (&msg, &tm);
96        return 1;        return 1;
97      }      }
98    
# Line 98  imap4d_append0 (mailbox_t mbox, int flag Line 112  imap4d_append0 (mailbox_t mbox, int flag
112        time(&t);        time(&t);
113      }      }
114    tm = gmtime(&t);    tm = gmtime(&t);
115    strftime (date, sizeof (date),  
             "From GNU-imap4d %a %b %e %H:%M:%S %Y%n",  
             tm);  
     
   stream_write (stream, date, strlen (date), 0, &len);  
116    stream_write (stream, text, strlen (text), len, &len);    stream_write (stream, text, strlen (text), len, &len);
117      message_set_stream (msg, stream, &tm);
118    
119    mailbox_set_stream (tmp, stream);    envelope_create (&env, msg);
120    mailbox_messages_count (tmp, &len);    envelope_set_date (env, _append_date, msg);
121    if (len == 1)    envelope_set_sender (env, _append_sender, msg);
122      message_set_envelope (msg, env, &tm);
123      rc = mailbox_append_message (mbox, msg);
124      if (rc == 0 && flags)
125      {      {
126        mailbox_get_message (tmp, 1, &msg);        size_t num = 0;
127        mailbox_append_message (mbox, msg);        attribute_t attr = NULL;
128        if (flags)        mailbox_messages_count (mbox, &num);
129          {        mailbox_get_message (mbox, num, &msg);
130            size_t num = 0;        message_get_attribute (msg, &attr);
131            attribute_t attr = NULL;        attribute_set_flags (attr, flags);
           mailbox_messages_count (mbox, &num);  
           mailbox_get_message (mbox, num, &msg);  
           message_get_attribute (msg, &attr);  
           attribute_set_flags (attr, flags);  
         }  
132      }      }
133    else  
134      rc = 1;    message_destroy (&msg, &tm);
     
   mailbox_close (tmp);  
   mailbox_destroy (&tmp);  
135    return rc;    return rc;
136  }  }
137    
138    int
139    wd()
140    {
141      volatile int _s = 0;
142      while (!_s)
143        ;
144    }
145        

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26