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

Diff of /mailutils/imap4d/util.c

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

revision 1.38 by gray, Thu Aug 1 14:05:42 2002 UTC revision 1.39 by gray, Sun Aug 4 08:15:00 2002 UTC
# Line 731  util_strcasestr (const char *haystack, c Line 731  util_strcasestr (const char *haystack, c
731    return NULL;    return NULL;
732  }  }
733    
734    
735  struct  struct
736  {  {
737    char *name;    char *name;
# Line 740  struct Line 741  struct
741    { "\\Flagged",  MU_ATTRIBUTE_FLAGGED },    { "\\Flagged",  MU_ATTRIBUTE_FLAGGED },
742    { "\\Deleted", MU_ATTRIBUTE_DELETED },    { "\\Deleted", MU_ATTRIBUTE_DELETED },
743    { "\\Draft", MU_ATTRIBUTE_DRAFT },    { "\\Draft", MU_ATTRIBUTE_DRAFT },
744    { "\\Seen", MU_ATTRIBUTE_SEEN },    { "\\Seen", MU_ATTRIBUTE_READ },
745    { "\\Recent", MU_ATTRIBUTE_RECENT },    { "\\Recent", MU_ATTRIBUTE_RECENT },
746  };  };
747    
# Line 761  util_attribute_to_type (const char *item Line 762  util_attribute_to_type (const char *item
762    return 1;    return 1;
763  }  }
764    
765    /* Note: currently unused. Not needed, possibly? */
766  int  int
767  util_type_to_attribute (int type, char **attr_str)  util_type_to_attribute (int type, char **attr_str)
768  {  {
769    *attr_str = NULL;    char *attr_list[NATTR];
770    if (type == MU_ATTRIBUTE_RECENT)    int nattr = 0;
771      int i;
772      size_t len = 0;
773    
774      if (MU_ATTRIBUTE_IS_UNSEEN(type))
775      *attr_str = strdup("\\Recent");      *attr_str = strdup("\\Recent");
776    else    else
777        *attr_str = NULL;
778    
779      for (i = 0; i < _imap4d_nattr; i++)
780        if (type & _imap4d_attrlist[i].flag)
781          {
782            attr_list[nattr++] = _imap4d_attrlist[i].name;
783            len += 1 + strlen(_imap4d_attrlist[i].name);
784          }
785      
786      *attr_str = malloc(len+1);
787      (*attr_str)[0] = 0;
788      if (*attr_str)
789      {      {
790        char *attr_list[NATTR];        for (i = 0; i < nattr; i++)
       int nattr = 0;  
       int i;  
       size_t len = 0;  
   
       for (i = 0; i < _imap4d_nattr; i++)  
         if (type & _imap4d_attrlist[i].flag)  
           {  
             attr_list[nattr++] = _imap4d_attrlist[i].name;  
             len += 1 + strlen(_imap4d_attrlist[i].name);  
           }  
   
       *attr_str = malloc(len+1);  
       (*attr_str)[0] = 0;  
       if (*attr_str)  
791          {          {
792            for (i = 0; i < nattr; i++)            strcat(*attr_str, attr_list[i]);
793              {            if (i != nattr-1)
794                strcat(*attr_str, attr_list[i]);              strcat(*attr_str, " ");
               if (i != nattr-1)  
                 strcat(*attr_str, " ");  
             }  
795          }          }
796      }      }
797      
798    if (!*attr_str)    if (!*attr_str)
799      imap4d_bye (ERR_NO_MEM);      imap4d_bye (ERR_NO_MEM);
800    return 0;    return 0;
801  }  }
802    
803    void
804    util_print_flags(attribute_t attr)
805    {
806      int i;
807      int flags = 0;
808      int space = 0;
809      
810      attribute_get_flags (attr, &flags);
811      for (i = 0; i < _imap4d_nattr; i++)
812        if (flags & _imap4d_attrlist[i].flag)
813          {
814            if (space)
815              util_send (" ");
816            else
817              space = 1;
818            util_send (_imap4d_attrlist[i].name);
819          }
820      
821      if (MU_ATTRIBUTE_IS_UNSEEN(flags))
822        {
823          if (space)
824              util_send (" ");
825          util_send ("\\Recent");
826        }
827    }
828    
829    int
830    util_attribute_matches_flag (attribute_t attr, const char *item)
831    {
832      int flags = 0, mask = 0;
833      
834      attribute_get_flags (attr, &flags);
835      util_attribute_to_type (item, &mask);
836      if (mask == MU_ATTRIBUTE_RECENT)
837        return MU_ATTRIBUTE_IS_UNSEEN (flags);
838    
839      return flags & mask;
840    }
841    
842    
843  int  int
844  util_parse_attributes(char *items, char **save, int *flags)  util_parse_attributes(char *items, char **save, int *flags)
845  {  {

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.39

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