Make Xcode project easier to use. Implemented CONDSTORE.
parent
c5344f1e34
commit
fbc88c1386
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* libEtPan! -- a mail stuff library
|
||||
*
|
||||
* Copyright (C) 2001, 2013 - DINH Viet Hoa
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of the libEtPan! project nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef CONDSTORE_H
|
||||
|
||||
#define CONDSTORE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <libetpan/libetpan-config.h>
|
||||
#include <libetpan/mailimap_extension.h>
|
||||
#include <libetpan/condstore_types.h>
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
extern struct mailimap_extension_api mailimap_extension_condstore;
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
int mailimap_store_unchangedsince(mailimap * session,
|
||||
struct mailimap_set * set, uint64_t mod_sequence_valzer,
|
||||
struct mailimap_store_att_flags * store_att_flags);
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
int mailimap_uid_store_unchangedsince(mailimap * session,
|
||||
struct mailimap_set * set, uint64_t mod_sequence_valzer,
|
||||
struct mailimap_store_att_flags * store_att_flags);
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
int mailimap_fetch_changedsince(mailimap * session,
|
||||
struct mailimap_set * set,
|
||||
struct mailimap_fetch_type * fetch_type, uint64_t mod_sequence_value,
|
||||
clist ** result);
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
int mailimap_uid_fetch_changedsince(mailimap * session,
|
||||
struct mailimap_set * set,
|
||||
struct mailimap_fetch_type * fetch_type, uint64_t mod_sequence_value,
|
||||
clist ** result);
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
struct mailimap_fetch_att * mailimap_fetch_att_new_modseq(void);
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
struct mailimap_msg_att_modseq * mailimap_msg_att_modseq_new(uint64_t mod_sequence_value);
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
int mailimap_search_modseq(mailimap * session, const char * charset,
|
||||
struct mailimap_search_key * key, clist ** result, uint64_t * p_mod_sequence_value);
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
int mailimap_uid_search_modseq(mailimap * session, const char * charset,
|
||||
struct mailimap_search_key * key, clist ** result, uint64_t * p_mod_sequence_value);
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
int mailimap_select_condstore(mailimap * session, const char * mb, uint64_t * p_mod_sequence_value);
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
int mailimap_examine_condstore(mailimap * session, const char * mb, uint64_t * p_mod_sequence_value);
|
||||
|
||||
LIBETPAN_EXPORT
|
||||
int mailimap_has_condstore(mailimap * session);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
@ -0,0 +1,19 @@
|
||||
#ifndef CONDSTORE_PRIVATE_H
|
||||
|
||||
#define CONDSTORE_PRIVATE_H
|
||||
|
||||
int mailimap_examine_condstore_optional(mailimap * session, const char * mb,
|
||||
int condstore, uint64_t * p_mod_sequence_value);
|
||||
|
||||
int mailimap_select_condstore_optional(mailimap * session, const char * mb,
|
||||
int condstore, uint64_t * p_mod_sequence_value);
|
||||
|
||||
int mailimap_store_unchangedsince_optional(mailimap * session,
|
||||
struct mailimap_set * set, int use_unchangedsince, uint64_t mod_sequence_valzer,
|
||||
struct mailimap_store_att_flags * store_att_flags);
|
||||
|
||||
int mailimap_uid_store_unchangedsince_optional(mailimap * session,
|
||||
struct mailimap_set * set, int use_unchangedsince, uint64_t mod_sequence_valzer,
|
||||
struct mailimap_store_att_flags * store_att_flags);
|
||||
|
||||
#endif
|
@ -0,0 +1,100 @@
|
||||
#include "condstore_types.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
struct mailimap_condstore_fetch_mod_resp * mailimap_condstore_fetch_mod_resp_new(uint64_t cs_modseq_value)
|
||||
{
|
||||
struct mailimap_condstore_fetch_mod_resp * fetch_data;
|
||||
|
||||
fetch_data = malloc(sizeof(* fetch_data));
|
||||
if (fetch_data == NULL)
|
||||
return NULL;
|
||||
|
||||
fetch_data->cs_modseq_value = cs_modseq_value;
|
||||
|
||||
return fetch_data;
|
||||
}
|
||||
|
||||
void mailimap_condstore_fetch_mod_resp_free(struct mailimap_condstore_fetch_mod_resp * fetch_data)
|
||||
{
|
||||
free(fetch_data);
|
||||
}
|
||||
|
||||
struct mailimap_condstore_resptextcode * mailimap_condstore_resptextcode_new(int cs_type,
|
||||
uint64_t cs_modseq_value, struct mailimap_set * cs_modified_set)
|
||||
{
|
||||
struct mailimap_condstore_resptextcode * resptextcode;
|
||||
|
||||
resptextcode = malloc(sizeof(* resptextcode));
|
||||
if (resptextcode == NULL)
|
||||
return NULL;
|
||||
|
||||
resptextcode->cs_type = cs_type;
|
||||
switch (cs_type) {
|
||||
case MAILIMAP_CONDSTORE_RESPTEXTCODE_HIGHESTMODSEQ:
|
||||
resptextcode->cs_data.cs_modseq_value = cs_modseq_value;
|
||||
break;
|
||||
case MAILIMAP_CONDSTORE_RESPTEXTCODE_NOMODSEQ:
|
||||
break;
|
||||
case MAILIMAP_CONDSTORE_RESPTEXTCODE_MODIFIED:
|
||||
resptextcode->cs_data.cs_modified_set = cs_modified_set;
|
||||
break;
|
||||
}
|
||||
|
||||
return resptextcode;
|
||||
}
|
||||
|
||||
void mailimap_condstore_resptextcode_free(struct mailimap_condstore_resptextcode * resptextcode)
|
||||
{
|
||||
switch (resptextcode->cs_type) {
|
||||
case MAILIMAP_CONDSTORE_RESPTEXTCODE_HIGHESTMODSEQ:
|
||||
break;
|
||||
case MAILIMAP_CONDSTORE_RESPTEXTCODE_NOMODSEQ:
|
||||
break;
|
||||
case MAILIMAP_CONDSTORE_RESPTEXTCODE_MODIFIED:
|
||||
mailimap_set_free(resptextcode->cs_data.cs_modified_set);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
struct mailimap_condstore_search * mailimap_condstore_search_new(clist * cs_search_result, uint64_t cs_modseq_value)
|
||||
{
|
||||
struct mailimap_condstore_search * search_data;
|
||||
|
||||
search_data = malloc(sizeof(* search_data));
|
||||
if (search_data == NULL)
|
||||
return NULL;
|
||||
|
||||
search_data->cs_search_result = cs_search_result;
|
||||
search_data->cs_modseq_value = cs_modseq_value;
|
||||
|
||||
return search_data;
|
||||
}
|
||||
|
||||
void mailimap_condstore_search_free(struct mailimap_condstore_search * search_data)
|
||||
{
|
||||
if (search_data->cs_search_result != NULL) {
|
||||
clist_foreach(search_data->cs_search_result, (clist_func) free, NULL);
|
||||
clist_free(search_data->cs_search_result);
|
||||
}
|
||||
free(search_data);
|
||||
}
|
||||
|
||||
struct mailimap_condstore_status_info * mailimap_condstore_status_info_new(uint64_t cs_highestmodseq_value)
|
||||
{
|
||||
struct mailimap_condstore_status_info * status_info;
|
||||
|
||||
status_info = malloc(sizeof(* status_info));
|
||||
if (status_info == NULL)
|
||||
return NULL;
|
||||
|
||||
status_info->cs_highestmodseq_value = cs_highestmodseq_value;
|
||||
|
||||
return status_info;
|
||||
}
|
||||
|
||||
void mailimap_condstore_status_info_free(struct mailimap_condstore_status_info * status_info)
|
||||
{
|
||||
free(status_info);
|
||||
}
|
||||
|
@ -0,0 +1,51 @@
|
||||
#ifndef CONDSTORE_TYPE_H
|
||||
|
||||
#define CONDSTORE_TYPE_H
|
||||
|
||||
#include <libetpan/mailimap_types.h>
|
||||
|
||||
struct mailimap_condstore_fetch_mod_resp {
|
||||
uint64_t cs_modseq_value;
|
||||
};
|
||||
|
||||
enum {
|
||||
MAILIMAP_CONDSTORE_RESPTEXTCODE_HIGHESTMODSEQ,
|
||||
MAILIMAP_CONDSTORE_RESPTEXTCODE_NOMODSEQ,
|
||||
MAILIMAP_CONDSTORE_RESPTEXTCODE_MODIFIED
|
||||
};
|
||||
|
||||
struct mailimap_msg_att_modseq {
|
||||
uint64_t att_modseq;
|
||||
};
|
||||
|
||||
struct mailimap_condstore_resptextcode {
|
||||
int cs_type;
|
||||
union {
|
||||
uint64_t cs_modseq_value;
|
||||
struct mailimap_set * cs_modified_set;
|
||||
} cs_data;
|
||||
};
|
||||
|
||||
struct mailimap_condstore_search {
|
||||
clist * cs_search_result; /* uint32_t */
|
||||
uint64_t cs_modseq_value;
|
||||
};
|
||||
|
||||
struct mailimap_condstore_status_info {
|
||||
uint64_t cs_highestmodseq_value;
|
||||
};
|
||||
|
||||
struct mailimap_condstore_fetch_mod_resp * mailimap_condstore_fetch_mod_resp_new(uint64_t cs_modseq_value);
|
||||
void mailimap_condstore_fetch_mod_resp_free(struct mailimap_condstore_fetch_mod_resp * fetch_data);
|
||||
|
||||
struct mailimap_condstore_resptextcode * mailimap_condstore_resptextcode_new(int cs_type,
|
||||
uint64_t cs_modseq_value, struct mailimap_set * cs_modified_set);
|
||||
void mailimap_condstore_resptextcode_free(struct mailimap_condstore_resptextcode * resptextcode);
|
||||
|
||||
struct mailimap_condstore_search * mailimap_condstore_search_new(clist * cs_search_result, uint64_t cs_modseq_value);
|
||||
void mailimap_condstore_search_free(struct mailimap_condstore_search * search_data);
|
||||
|
||||
struct mailimap_condstore_status_info * mailimap_condstore_status_info_new(uint64_t cs_highestmodseq_value);
|
||||
void mailimap_condstore_status_info_free(struct mailimap_condstore_status_info * status_info);
|
||||
|
||||
#endif
|