Changeset 5044:aa6f191cfa10 for imap

Show
Ignore:
Timestamp:
2007-04-02 10:48:47 (20 months ago)
Author:
Brendan Cully <brendan@…>
Branch:
HEAD
Message:

Add create flag to imap_mboxcache_get

Location:
imap
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • imap/command.c

    r5043 r5044  
    820820  IMAP_MBOX mx; 
    821821  int count; 
    822   IMAP_STATUS *status, sb; 
    823   int olduv, oldun; 
     822  IMAP_STATUS *status; 
     823  unsigned int olduv, oldun; 
    824824 
    825825  mailbox = imap_next_word (s); 
     
    828828  imap_unmunge_mbox_name (mailbox); 
    829829 
    830   if (!(status = imap_mboxcache_get (idata, mailbox))) 
    831   { 
    832     /* ugly interface - why should I look up what I just added? */ 
    833     memset (&sb, 0, sizeof (IMAP_STATUS)); 
    834     sb.name = mailbox; 
    835     idata->mboxcache = mutt_add_list_n (idata->mboxcache, &sb, sizeof (IMAP_STATUS)); 
    836     status = imap_mboxcache_get (idata, mailbox); 
    837     status->name = safe_strdup (mailbox); 
    838   } 
     830  status = imap_mboxcache_get (idata, mailbox, 1); 
    839831  olduv = status->uidvalidity; 
    840832  oldun = status->uidnext; 
  • imap/imap.c

    r5043 r5044  
    8686  FREE (&mx.mbox); 
    8787 
    88   if (imap_mboxcache_get (idata, mailbox)) 
     88  if (imap_mboxcache_get (idata, mailbox, 0)) 
    8989  { 
    9090    dprint (3, (debugfile, "imap_access: found %s in cache\n", mailbox)); 
     
    557557  CONNECTION *conn; 
    558558  IMAP_DATA *idata; 
    559   IMAP_STATUS* status, sb; 
     559  IMAP_STATUS* status; 
    560560  char buf[LONG_STRING]; 
    561561  char bufout[LONG_STRING]; 
     
    633633  imap_cmd_start (idata, bufout); 
    634634 
    635   if (!(status = imap_mboxcache_get (idata, idata->mailbox))) 
    636   { 
    637     memset (&sb, 0, sizeof (IMAP_STATUS)); 
    638     sb.name = idata->mailbox; 
    639     idata->mboxcache = mutt_add_list_n (idata->mboxcache, &sb, sizeof (IMAP_STATUS)); 
    640     status = imap_mboxcache_get (idata, idata->mailbox); 
    641     status->name = safe_strdup (idata->mailbox); 
    642   } 
     635  status = imap_mboxcache_get (idata, idata->mailbox, 1); 
     636 
    643637  do 
    644638  { 
     
    15711565 
    15721566  queued = 0; 
    1573   if ((status = imap_mboxcache_get (idata, mbox))) 
     1567  if ((status = imap_mboxcache_get (idata, mbox, 0))) 
    15741568    return status->messages; 
    15751569   
     
    15771571} 
    15781572 
    1579 /* return cached mailbox stats or NULL */ 
    1580 IMAP_STATUS* imap_mboxcache_get (IMAP_DATA* idata, const char* mbox) 
     1573/* return cached mailbox stats or NULL if create is 0 */ 
     1574IMAP_STATUS* imap_mboxcache_get (IMAP_DATA* idata, const char* mbox, int create) 
    15811575{ 
    15821576  LIST* cur; 
     
    16011595  status = NULL; 
    16021596 
     1597  /* lame */ 
     1598  if (create) 
     1599  { 
     1600    memset (&scache, 0, sizeof (scache)); 
     1601    scache.name = (char*)mbox; 
     1602    idata->mboxcache = mutt_add_list_n (idata->mboxcache, &scache, 
     1603                                        sizeof (scache)); 
     1604    status = imap_mboxcache_get (idata, mbox, 0); 
     1605    status->name = safe_strdup (mbox); 
     1606  } 
     1607 
    16031608#ifdef USE_HCACHE 
    16041609  path = safe_strdup (idata->ctx->path); 
     
    16141619    if (uidvalidity) 
    16151620    { 
    1616       /* lame */ 
    1617       memset (&scache, 0, sizeof (scache)); 
    1618       scache.name = (char*)mbox; 
    1619       idata->mboxcache = mutt_add_list_n (idata->mboxcache, &scache, 
    1620                                           sizeof (scache)); 
    1621       status = imap_mboxcache_get (idata, mbox); 
    1622       status->name = safe_strdup (mbox); 
    16231621      status->uidvalidity = *uidvalidity; 
    16241622      status->uidnext = uidnext ? *uidnext: 0; 
  • imap/imap_private.h

    r4938 r5044  
    231231int imap_create_mailbox (IMAP_DATA* idata, char* mailbox); 
    232232int imap_rename_mailbox (IMAP_DATA* idata, IMAP_MBOX* mx, const char* newname); 
    233 IMAP_STATUS* imap_mboxcache_get (IMAP_DATA* idata, const char* mbox); 
     233IMAP_STATUS* imap_mboxcache_get (IMAP_DATA* idata, const char* mbox, 
     234                                 int create); 
    234235void imap_mboxcache_free (IMAP_DATA* idata); 
    235236int imap_make_msg_set (IMAP_DATA* idata, BUFFER* buf, int flag, int changed, 
  • imap/message.c

    r5041 r5044  
    328328  } 
    329329 
    330   if (maxuid && (status = imap_mboxcache_get (idata, idata->mailbox))) 
     330  if (maxuid && (status = imap_mboxcache_get (idata, idata->mailbox, 0))) 
    331331  status->uidnext = maxuid + 1; 
    332332