+2003-10-21 [alfons] 0.9.6claws43
+
+ * src/carray.h
+ glib wrappers
+ * src/carray.c
+ disable
+ * src/mailmbox.[ch]
+ * src/mailmbox_folder.c
+ * src/mailmbox_parse.c
+ * src/mailmbox_types.[ch]
+ %s/uint32_t/guint
+
2003-10-21 [luke] 0.9.6claws42
- * src/stock_pixmaps.[ch]
+
+ * src/stock_pixmaps.[ch]
* src/mimeview.c
* src/pixmaps/mime_application_octet_stream.xpm ** REMOVE **
* src/pixmaps/messageview_text.xpm ** REMOVE **
MICRO_VERSION=6
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=42
+EXTRA_VERSION=43
if test $EXTRA_VERSION -eq 0; then
VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}claws
else
* SUCH DAMAGE.
*/
+#if 0
#include <stdlib.h>
#include <string.h>
#include "carray.h"
free(array->array);
free(array);
}
+#endif
#ifndef CARRAY_H
#define CARRAY_H
+#include <glib.h>
+
#ifdef __cplusplus
extern "C" {
#endif
-#include <inttypes.h>
-
-struct carray_s {
- void ** array;
- uint32_t len;
- uint32_t max;
-};
-typedef struct carray_s carray;
+typedef GPtrArray carray;
/* Creates a new array of pointers, with initsize preallocated cells */
-carray * carray_new(uint32_t initsize);
-
-/* Adds the pointer to data in the array.
- Returns the index of the pointer in the array or -1 on error */
-int carray_add(carray * array, void * data, uint32_t * index);
-
-int carray_set_size(carray * array, uint32_t new_size);
-
-/* Removes the cell at this index position. Returns TRUE on success.
- Order of elements in the array IS changed. */
-int carray_delete(carray * array, uint32_t indx);
+static inline carray *carray_new(guint initsize)
+{
+ carray *res = g_ptr_array_new();
+ gint n = (gint) initsize;
+ g_assert(n >= 0);
+ g_ptr_array_set_size(res, n);
+ return res;
+}
-/* Removes the cell at this index position. Returns TRUE on success.
- Order of elements in the array IS not changed. */
-int carray_delete_slow(carray * array, uint32_t indx);
+static inline gint carray_add(carray *array, void *data, guint *index)
+{
+ g_ptr_array_add(array, data);
+ *index = array->len - 1;
+ return 0;
+}
-/* remove without decreasing the size of the array */
-int carray_delete_fast(carray * array, uint32_t indx);
+static inline gint carray_set_size(carray *array, guint new_size)
+{
+ gint n = (gint) new_size;
+ g_assert(n >= 0);
+ g_ptr_array_set_size(array, n);
+ return 0;
+}
-/* Some of the following routines can be implemented as macros to
- be faster. If you don't want it, define NO_MACROS */
-#ifdef NO_MACROS
+static inline gint carray_delete(carray *array, guint indx)
+{
+ gint n = (gint) indx;
+ if (n < 0) return -1;
+ if (n >= array->len) return -1;
+ g_ptr_array_remove_index_fast(array, n);
+ return 0;
+}
-/* Returns the array itself */
-void ** carray_data(carray);
+static inline gint carray_delete_slow(carray *array, guint indx)
+{
+ gint n = (gint) indx;
+ if (n < 0) return -1;
+ return g_ptr_array_remove_index(array, n) ? 0 : -1;
+}
-/* Returns the number of elements in the array */
-int carray_count(carray);
+static inline gint carray_delete_fast(carray *array, guint indx)
+{
+ gint n = (gint) indx;
+ if (n < 0) return -1;
+ g_ptr_array_index(array, n) = NULL;
+ return 0;
+}
-/* Returns the contents of one cell */
-void * carray_get(carray array, int indx);
+static inline gint carray_free(carray *array)
+{
+ g_ptr_array_free(array, TRUE);
+}
-/* Sets the contents of one cell */
-void carray_set(carray array, int indx, void * value);
+static inline gpointer carray_get(carray *array, guint index)
+{
+ gint n = (gint) index;
+ if (n < 0) return NULL;
+ return g_ptr_array_index(array, n);
+}
-#else
-#define carray_data(a) (a->array)
-#define carray_count(a) (a->len)
-#define carray_get(a, indx) (a->array[indx])
-#define carray_set(a, indx, v) do { a->array[indx]=v; } while(0)
-#endif
+static inline carray_set(carray *array, guint index, gpointer value)
+{
+ gint n = (gint) index;
+ g_assert(n >= 0);
+ g_ptr_array_index(array, n) = value;
+}
-void carray_free(carray * array);
+static guint carray_count(carray *array)
+{
+ /* NOTE: We're hosed when len < 0, but that won't occur */
+ return (guint) array->len;
+}
#ifdef __cplusplus
}
}
static size_t get_fixed_message_size(char * message, size_t size,
- uint32_t uid, int force_no_uid)
+ guint uid, int force_no_uid)
{
size_t fixed_size;
size_t cur_token;
char * cur;
int end;
int r;
- uint32_t tmp_uid;
+ guint tmp_uid;
cur_token = 0;
static char * write_fixed_message(char * str,
char * message, size_t size,
- uint32_t uid, int force_no_uid)
+ guint uid, int force_no_uid)
{
size_t fixed_size;
size_t cur_token;
int res;
size_t old_size;
char * str;
- uint32_t i;
+ guint i;
size_t from_size;
size_t maxuid;
size_t left;
/* ********************************************************************** */
int mailmbox_fetch_msg_no_lock(struct mailmbox_folder * folder,
- uint32_t num, char ** result,
+ guint num, char ** result,
size_t * result_len)
{
struct mailmbox_msg_info * info;
}
int mailmbox_fetch_msg_headers_no_lock(struct mailmbox_folder * folder,
- uint32_t num, char ** result,
+ guint num, char ** result,
size_t * result_len)
{
struct mailmbox_msg_info * info;
}
int mailmbox_fetch_msg(struct mailmbox_folder * folder,
- uint32_t num, char ** result,
+ guint num, char ** result,
size_t * result_len)
{
int res;
}
int mailmbox_fetch_msg_headers(struct mailmbox_folder * folder,
- uint32_t num, char ** result,
+ guint num, char ** result,
size_t * result_len)
{
int res;
int r;
int res;
carray * append_tab;
- uint32_t i;
+ guint i;
r = mailmbox_validate_read_lock(src_folder);
if (r != MAILMBOX_NO_ERROR) {
struct mailmbox_append_info * append_info;
char * data;
size_t len;
- uint32_t uid;
+ guint uid;
- uid = * ((uint32_t *) carray_get(tab, i));
+ uid = * ((guint *) carray_get(tab, i));
r = mailmbox_fetch_msg_no_lock(src_folder, uid, &data, &len);
if (r != MAILMBOX_NO_ERROR) {
int mailmbox_copy_msg(struct mailmbox_folder * dest_folder,
struct mailmbox_folder * src_folder,
- uint32_t uid)
+ guint uid)
{
carray * tab;
int res;
- uint32_t * puid;
+ guint * puid;
int r;
tab = carray_new(1);
if (!folder->no_uid) {
if (!info->written_uid) {
- uint32_t uid;
+ guint uid;
size += strlen(UID_HEADER " \r\n");
return res;
}
-int mailmbox_delete_msg(struct mailmbox_folder * folder, uint32_t uid)
+int mailmbox_delete_msg(struct mailmbox_folder * folder, guint uid)
{
struct mailmbox_msg_info * info;
int res;
int mailmbox_init(char * filename,
int force_readonly,
int force_no_uid,
- uint32_t default_written_uid,
+ guint default_written_uid,
struct mailmbox_folder ** result_folder)
{
struct mailmbox_folder * folder;
char * data, size_t len);
int mailmbox_fetch_msg(struct mailmbox_folder * folder,
- uint32_t num, char ** result,
+ guint num, char ** result,
size_t * result_len);
int mailmbox_fetch_msg_headers(struct mailmbox_folder * folder,
- uint32_t num, char ** result,
+ guint num, char ** result,
size_t * result_len);
void mailmbox_fetch_result_free(char * msg);
int mailmbox_copy_msg(struct mailmbox_folder * dest_folder,
struct mailmbox_folder * src_folder,
- uint32_t uid);
+ guint uid);
int mailmbox_expunge(struct mailmbox_folder * folder);
-int mailmbox_delete_msg(struct mailmbox_folder * folder, uint32_t uid);
+int mailmbox_delete_msg(struct mailmbox_folder * folder, guint uid);
int mailmbox_init(char * filename,
int force_readonly,
int force_no_uid,
- uint32_t default_written_uid,
+ guint default_written_uid,
struct mailmbox_folder ** result_folder);
void mailmbox_done(struct mailmbox_folder * folder);
/* fetch message */
int mailmbox_fetch_msg_no_lock(struct mailmbox_folder * folder,
- uint32_t num, char ** result,
+ guint num, char ** result,
size_t * result_len);
int mailmbox_fetch_msg_headers_no_lock(struct mailmbox_folder * folder,
- uint32_t num, char ** result,
+ guint num, char ** result,
size_t * result_len);
/* append message */
struct _MBOXFolderItem
{
FolderItem item;
- uint32_t old_max_uid;
+ guint old_max_uid;
struct mailmbox_folder * mbox;
};
#define MAX_UID_FILE "max-uid"
-void read_max_uid_value(FolderItem *item, uint32_t * pmax_uid)
+void read_max_uid_value(FolderItem *item, guint * pmax_uid)
{
gchar * path;
gchar * file;
FILE * f;
- uint32_t max_uid;
+ guint max_uid;
size_t r;
path = folder_item_get_path(item);
* pmax_uid = max_uid;
}
-void write_max_uid_value(FolderItem *item, uint32_t max_uid)
+void write_max_uid_value(FolderItem *item, guint max_uid)
{
gchar * path;
gchar * file;
int r;
if (item->mbox == NULL) {
- uint32_t written_uid;
+ guint written_uid;
gchar * path;
written_uid = 0;
GSList **list, gboolean *old_uids_valid)
{
gint nummsgs = 0;
- uint32_t i;
+ guint i;
struct mailmbox_folder * mbox;
g_return_val_if_fail(item != NULL, -1);
return NULL;
}
-static MsgInfo *mailmbox_parse_msg(uint32_t uid,
+static MsgInfo *mailmbox_parse_msg(guint uid,
char * data, size_t len, FolderItem *item)
{
MsgInfo *msginfo;
{
struct mailmbox_folder * mbox;
int r;
- uint32_t i;
+ guint i;
g_return_val_if_fail(item != NULL, -1);
static inline int
mailmbox_fields_parse(char * str, size_t length,
size_t * index,
- uint32_t * puid,
+ guint * puid,
size_t * phlen)
{
size_t cur_token;
size_t * pbody_len,
size_t * psize,
size_t * ppadding,
- uint32_t * puid)
+ guint * puid)
{
size_t cur_token;
size_t start;
size_t end;
size_t next;
size_t message_length;
- uint32_t uid;
+ guint uid;
int r;
#if 0
int in_mail_data;
size_t body_len;
size_t size;
size_t padding;
- uint32_t uid;
+ guint uid;
int r;
int res;
- uint32_t max_uid;
- uint32_t first_index;
- uint32_t i;
- uint32_t j;
+ guint max_uid;
+ guint first_index;
+ guint i;
+ guint j;
cur_token = * index;
static void flush_uid(struct mailmbox_folder * folder)
{
- uint32_t i;
+ guint i;
for(i = 0 ; i < folder->tab->len ; i++) {
struct mailmbox_msg_info * info;
size_t headers, size_t headers_len,
size_t body, size_t body_len,
size_t size, size_t padding,
- uint32_t uid)
+ guint uid)
{
struct mailmbox_msg_info * info;
int res;
key.len = sizeof(uid);
r = chash_get(folder->hash, &key, &data);
if (r < 0) {
- uint32_t index;
+ guint index;
info = mailmbox_msg_info_new(start, start_len, headers, headers_len,
body, body_len, size, padding, uid);
size_t headers, size_t headers_len,
size_t body, size_t body_len,
size_t size, size_t padding,
- uint32_t uid)
+ guint uid)
{
struct mailmbox_msg_info * info;
#if 0
struct mailmbox_msg_env *
-mailmbox_msg_env_new(uint32_t index, struct mailimf_fields * fields)
+mailmbox_msg_env_new(guint index, struct mailimf_fields * fields)
{
struct mailmbox_msg_env * msg_env;
void mailmbox_folder_free(struct mailmbox_folder * folder)
{
- uint32_t i;
+ guint i;
for(i = 0 ; i < folder->tab->len ; i++) {
struct mailmbox_msg_info * info;
int no_uid;
int changed;
- uint32_t deleted_count;
+ guint deleted_count;
char * mapping;
size_t mapping_size;
- uint32_t written_uid;
- uint32_t max_uid;
+ guint written_uid;
+ guint max_uid;
chash * hash;
carray * tab;
struct mailmbox_msg_info {
- uint32_t index;
- uint32_t uid;
+ guint index;
+ guint uid;
int written_uid;
int deleted;
size_t headers, size_t headers_len,
size_t body, size_t body_len,
size_t size, size_t padding,
- uint32_t uid);
+ guint uid);
struct mailmbox_msg_info *
mailmbox_msg_info_new(size_t start, size_t start_len,
size_t headers, size_t headers_len,
size_t body, size_t body_len,
size_t size, size_t padding,
- uint32_t uid);
+ guint uid);
void mailmbox_msg_info_free(struct mailmbox_msg_info * info);
-#if 0
-struct mailmbox_msg_env {
- uint32_t index;
- struct mailimf_fields * fields;
-};
-
-struct mailmbox_msg_env *
-mailmbox_msg_env_new(uint32_t index, struct mailimf_fields * fields);
-
-void mailmbox_msg_env_free(struct mailmbox_msg_env * msg_env);
-#endif
-
struct mailmbox_append_info {
char * message;
size_t size;