isync

mailbox synchronization program
git clone https://git.code.sf.net/p/isync/isync
Log | Files | Refs | README | LICENSE

commit 42cedc8f81c91282d716a23474d099ef14102c08
parent b730f66f7d29433ec5c94936ce408f2ea498fbea
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date:   Sun,  7 Dec 2014 13:19:30 +0100

introduce uchar, ushort & uint typedefs

Diffstat:
Msrc/common.h | 6+++++-
Msrc/config.c | 4++--
Msrc/driver.h | 8++++----
Msrc/drv_imap.c | 38+++++++++++++++++++-------------------
Msrc/drv_maildir.c | 14+++++++-------
Msrc/sync.c | 16++++++++--------
Msrc/sync.h | 2+-
Msrc/util.c | 16++++++++--------
8 files changed, 54 insertions(+), 50 deletions(-)

diff --git a/src/common.h b/src/common.h @@ -29,6 +29,10 @@ #include <stdarg.h> #include <stdio.h> +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; + #define as(ar) (sizeof(ar)/sizeof(ar[0])) #define __stringify(x) #x @@ -119,7 +123,7 @@ int map_name( const char *arg, char **result, int reserve, const char *in, const void sort_ints( int *arr, int len ); void arc4_init( void ); -unsigned char arc4_getbyte( void ); +uchar arc4_getbyte( void ); int bucketsForSize( int size ); diff --git a/src/config.c b/src/config.c @@ -45,7 +45,7 @@ get_arg( conffile_t *cfile, int required, int *comment ) p = cfile->rest; assert( p ); - while ((c = *p) && isspace( (unsigned char) c )) + while ((c = *p) && isspace( (uchar)c )) p++; if (!c || c == '#') { if (comment) @@ -65,7 +65,7 @@ get_arg( conffile_t *cfile, int required, int *comment ) escaped = 1; else if (c == '"') quoted ^= 1; - else if (!quoted && isspace( (unsigned char) c )) + else if (!quoted && isspace( (uchar)c )) break; else *t++ = c; diff --git a/src/driver.h b/src/driver.h @@ -35,7 +35,7 @@ typedef struct store_conf { const char *flat_delim; const char *map_inbox; const char *trash; - unsigned max_size; /* off_t is overkill */ + uint max_size; /* off_t is overkill */ char trash_remote_new, trash_only_new; } store_conf_t; @@ -62,7 +62,7 @@ typedef struct message { /* string_list_t *keywords; */ size_t size; /* zero implies "not fetched" */ int uid; - unsigned char flags, status; + uchar flags, status; char tuid[TUIDL]; } message_t; @@ -90,7 +90,7 @@ typedef struct store { message_t *msgs; /* own */ int uidvalidity; int uidnext; /* from SELECT responses */ - unsigned opts; /* maybe preset? */ + uint opts; /* maybe preset? */ /* note that the following do _not_ reflect stats from msgs, but mailbox totals */ int count; /* # of messages */ int recent; /* # of recent messages - don't trust this beyond the initial read */ @@ -109,7 +109,7 @@ typedef struct { char *data; int len; time_t date; - unsigned char flags; + uchar flags; } msg_data_t; #define DRV_OK 0 diff --git a/src/drv_imap.c b/src/drv_imap.c @@ -100,11 +100,11 @@ typedef struct imap_store { int ref_count; /* trash folder's existence is not confirmed yet */ enum { TrashUnknown, TrashChecking, TrashKnown } trashnc; - unsigned got_namespace:1; + uint got_namespace:1; char *delimiter; /* hierarchy delimiter */ list_t *ns_personal, *ns_other, *ns_shared; /* NAMESPACE info */ message_t **msgapp; /* FETCH results */ - unsigned caps; /* CAPABILITY results */ + uint caps; /* CAPABILITY results */ string_list_t *auth_mechs; parse_list_state_t parse_list_sts; /* command queue */ @@ -591,7 +591,7 @@ next_arg( char **ps ) s = *ps; if (!s) return 0; - while (isspace( (unsigned char)*s )) + while (isspace( (uchar)*s )) s++; if (!*s) { *ps = 0; @@ -613,7 +613,7 @@ next_arg( char **ps ) } else { ret = s; while ((c = *s)) { - if (isspace( (unsigned char)c )) { + if (isspace( (uchar)c )) { *s++ = 0; break; } @@ -684,7 +684,7 @@ parse_imap_list( imap_store_t *ctx, char **sp, parse_list_state_t *sts ) if (!s) return LIST_BAD; for (;;) { - while (isspace( (unsigned char)*s )) + while (isspace( (uchar)*s )) s++; if (sts->level && *s == ')') { s++; @@ -751,7 +751,7 @@ parse_imap_list( imap_store_t *ctx, char **sp, parse_list_state_t *sts ) } else { /* atom */ p = s; - for (; *s && !isspace( (unsigned char)*s ); s++) + for (; *s && !isspace( (uchar)*s ); s++) if (sts->level && *s == ')') break; cur->len = s - p; @@ -876,7 +876,7 @@ parse_fetch_rsp( imap_store_t *ctx, list_t *list, char *s ATTR_UNUSED ) msg_data_t *msgdata; struct imap_cmd *cmdp; int uid = 0, mask = 0, status = 0, size = 0; - unsigned i; + uint i; time_t date = 0; if (!is_list( list )) { @@ -1000,7 +1000,7 @@ static void parse_capability( imap_store_t *ctx, char *cmd ) { char *arg; - unsigned i; + uint i; free_string_list( ctx->auth_mechs ); ctx->auth_mechs = 0; @@ -1052,7 +1052,7 @@ parse_response_code( imap_store_t *ctx, struct imap_cmd *cmd, char *s ) /* RFC2060 says that these messages MUST be displayed * to the user */ - for (; isspace( (unsigned char)*p ); p++); + for (; isspace( (uchar)*p ); p++); error( "*** IMAP ALERT *** %s\n", p ); } else if (cmd && !strcmp( "APPENDUID", arg )) { if (!(arg = next_arg( &s )) || @@ -1743,8 +1743,8 @@ process_sasl_interact( sasl_interact_t *interact, imap_server_conf_t *srvc ) } static int -process_sasl_step( imap_store_t *ctx, int rc, const char *in, unsigned in_len, - sasl_interact_t *interact, const char **out, unsigned *out_len ) +process_sasl_step( imap_store_t *ctx, int rc, const char *in, uint in_len, + sasl_interact_t *interact, const char **out, uint *out_len ) { imap_server_conf_t *srvc = ((imap_store_conf_t *)ctx->gen.conf)->server; @@ -1765,11 +1765,11 @@ process_sasl_step( imap_store_t *ctx, int rc, const char *in, unsigned in_len, } static int -decode_sasl_data( const char *prompt, char **in, unsigned *in_len ) +decode_sasl_data( const char *prompt, char **in, uint *in_len ) { if (prompt) { int rc; - unsigned prompt_len = strlen( prompt ); + uint prompt_len = strlen( prompt ); /* We're decoding, the output will be shorter than prompt_len. */ *in = nfmalloc( prompt_len ); rc = sasl_decode64( prompt, prompt_len, *in, prompt_len, in_len ); @@ -1786,10 +1786,10 @@ decode_sasl_data( const char *prompt, char **in, unsigned *in_len ) } static int -encode_sasl_data( const char *out, unsigned out_len, char **enc, unsigned *enc_len ) +encode_sasl_data( const char *out, uint out_len, char **enc, uint *enc_len ) { int rc; - unsigned enc_len_max = ((out_len + 2) / 3) * 4 + 1; + uint enc_len_max = ((out_len + 2) / 3) * 4 + 1; *enc = nfmalloc( enc_len_max ); rc = sasl_encode64( out, out_len, *enc, enc_len_max, enc_len ); if (rc != SASL_OK) { @@ -1804,7 +1804,7 @@ static int do_sasl_auth( imap_store_t *ctx, struct imap_cmd *cmdp ATTR_UNUSED, const char *prompt ) { int rc, ret; - unsigned in_len, out_len, enc_len; + uint in_len, out_len, enc_len; const char *out; char *in, *enc; sasl_interact_t *interact = NULL; @@ -1851,7 +1851,7 @@ done_sasl_auth( imap_store_t *ctx, struct imap_cmd *cmd ATTR_UNUSED, int respons if (response == RESP_OK && ctx->sasl_cont) { sasl_interact_t *interact = NULL; const char *out; - unsigned out_len; + uint out_len; int rc = sasl_client_step( ctx->sasl, NULL, 0, &interact, &out, &out_len ); if (process_sasl_step( ctx, rc, NULL, 0, interact, &out, &out_len ) < 0) warn( "Warning: SASL reported failure despite successful IMAP authentication. Ignoring...\n" ); @@ -1904,7 +1904,7 @@ imap_open_store_authenticate2( imap_store_t *ctx ) #ifdef HAVE_LIBSASL if (saslend != saslmechs) { int rc; - unsigned out_len = 0; + uint out_len = 0; char *enc = NULL; const char *gotmech = NULL, *out = NULL; sasl_interact_t *interact = NULL; @@ -2198,7 +2198,7 @@ static int imap_make_flags( int flags, char *buf ) { const char *s; - unsigned i, d; + uint i, d; for (i = d = 0; i < as(Flags); i++) if (flags & (1 << i)) { diff --git a/src/drv_maildir.c b/src/drv_maildir.c @@ -85,12 +85,12 @@ static int MaildirCount; static const char Flags[] = { 'D', 'F', 'R', 'S', 'T' }; -static unsigned char +static uchar maildir_parse_flags( const char *info_prefix, const char *base ) { const char *s; - unsigned i; - unsigned char flags; + uint i; + uchar flags; flags = 0; if ((s = strstr( base, info_prefix ))) @@ -312,7 +312,7 @@ static const char *subdirs[] = { "cur", "new", "tmp" }; typedef struct { char *base; int size; - unsigned uid:31, recent:1; + uint uid:31, recent:1; char tuid[TUIDL]; } msg_t; @@ -835,7 +835,7 @@ maildir_scan( maildir_store_t *ctx, msglist_t *msglist ) } entry->uid = uid; if ((u = strstr( entry->base, ",U=" ))) - for (ru = u + 3; isdigit( (unsigned char)*ru ); ru++); + for (ru = u + 3; isdigit( (uchar)*ru ); ru++); else u = ru = strchr( entry->base, conf->info_delimiter ); fnl = (u ? @@ -1187,7 +1187,7 @@ maildir_fetch_msg( store_t *gctx, message_t *gmsg, msg_data_t *data, static int maildir_make_flags( char info_delimiter, int flags, char *buf ) { - unsigned i, d; + uint i, d; buf[0] = info_delimiter; buf[1] = '2'; @@ -1309,7 +1309,7 @@ maildir_set_flags( store_t *gctx, message_t *gmsg, int uid ATTR_UNUSED, int add, maildir_store_t *ctx = (maildir_store_t *)gctx; maildir_message_t *msg = (maildir_message_t *)gmsg; char *s, *p; - unsigned i; + uint i; int j, ret, ol, fl, bbl, bl, tl; char buf[_POSIX_PATH_MAX], nbuf[_POSIX_PATH_MAX]; diff --git a/src/sync.c b/src/sync.c @@ -75,7 +75,7 @@ static const char Flags[] = { 'D', 'F', 'R', 'S', 'T' }; static int parse_flags( const char *buf ) { - unsigned flags, i, d; + uint flags, i, d; for (flags = i = d = 0; i < as(Flags); i++) if (buf[d] == Flags[i]) { @@ -88,7 +88,7 @@ parse_flags( const char *buf ) static int make_flags( int flags, char *buf ) { - unsigned i, d; + uint i, d; for (i = d = 0; i < as(Flags); i++) if (flags & (1 << i)) @@ -105,14 +105,14 @@ make_flags( int flags, char *buf ) #define S_NEXPIRE (1<<6) /* temporary: new expiration state */ #define S_DELETE (1<<7) /* ephemeral: flags propagation is a deletion */ -#define mvBit(in,ib,ob) ((unsigned char)(((unsigned)in) * (ob) / (ib))) +#define mvBit(in,ib,ob) ((uchar)(((uint)in) * (ob) / (ib))) typedef struct sync_rec { struct sync_rec *next; /* string_list_t *keywords; */ int uid[2]; /* -2 = pending (use tuid), -1 = skipped (too big), 0 = expired */ message_t *msg[2]; - unsigned char status, flags, aflags[2], dflags[2]; + uchar status, flags, aflags[2], dflags[2]; char tuid[TUIDL]; } sync_rec_t; @@ -1126,7 +1126,7 @@ box_loaded( int sts, void *aux ) flag_vars_t *fv; int uid, no[2], del[2], alive, todel, t1, t2; int sflags, nflags, aflags, dflags, nex; - unsigned hashsz, idx; + uint hashsz, idx; char fbuf[16]; /* enlarge when support for keywords is added */ if (check_ret( sts, aux )) @@ -1147,7 +1147,7 @@ box_loaded( int sts, void *aux ) if (srec->status & S_DEAD) continue; uid = srec->uid[t]; - idx = (unsigned)((unsigned)uid * 1103515245U) % hashsz; + idx = (uint)((uint)uid * 1103515245U) % hashsz; while (srecmap[idx].uid) if (++idx == hashsz) idx = 0; @@ -1162,7 +1162,7 @@ box_loaded( int sts, void *aux ) make_flags( tmsg->flags, fbuf ); printf( svars->ctx[t]->opts & OPEN_SIZE ? " message %5d, %-4s, %6lu: " : " message %5d, %-4s: ", uid, fbuf, tmsg->size ); } - idx = (unsigned)((unsigned)uid * 1103515245U) % hashsz; + idx = (uint)((uint)uid * 1103515245U) % hashsz; while (srecmap[idx].uid) { if (srecmap[idx].uid == uid) { srec = srecmap[idx].srec; @@ -1403,7 +1403,7 @@ box_loaded( int sts, void *aux ) } } debug( "%d excess messages remain\n", todel ); - if (svars->chan->expire_unread < 0 && (unsigned)alive * 2 > svars->chan->max_messages) { + if (svars->chan->expire_unread < 0 && (uint)alive * 2 > svars->chan->max_messages) { error( "%s: %d unread messages in excess of MaxMessages (%d).\n" "Please set ExpireUnread to decide outcome. Skipping mailbox.\n", svars->orig_name[S], alive, svars->chan->max_messages ); diff --git a/src/sync.h b/src/sync.h @@ -50,7 +50,7 @@ typedef struct channel_conf { char *sync_state; string_list_t *patterns; int ops[2]; - unsigned max_messages; /* for slave only */ + uint max_messages; /* for slave only */ signed char expire_unread; char use_internal_date; } channel_conf_t; diff --git a/src/util.c b/src/util.c @@ -138,7 +138,7 @@ sys_error( const char *msg, ... ) flushn(); va_start( va, msg ); - if ((unsigned)vsnprintf( buf, sizeof(buf), msg, va ) >= sizeof(buf)) + if ((uint)vsnprintf( buf, sizeof(buf), msg, va ) >= sizeof(buf)) oob(); va_end( va ); perror( buf ); @@ -311,7 +311,7 @@ nfsnprintf( char *buf, int blen, const char *fmt, ... ) va_list va; va_start( va, fmt ); - if (blen <= 0 || (unsigned)(ret = vsnprintf( buf, blen, fmt, va )) >= (unsigned)blen) + if (blen <= 0 || (uint)(ret = vsnprintf( buf, blen, fmt, va )) >= (uint)blen) oob(); va_end( va ); return ret; @@ -518,14 +518,14 @@ sort_ints( int *arr, int len ) static struct { - unsigned char i, j, s[256]; + uchar i, j, s[256]; } rs; void arc4_init( void ) { int i, fd; - unsigned char j, si, dat[128]; + uchar j, si, dat[128]; if ((fd = open( "/dev/urandom", O_RDONLY )) < 0 && (fd = open( "/dev/random", O_RDONLY )) < 0) { error( "Fatal: no random number source available.\n" ); @@ -551,10 +551,10 @@ arc4_init( void ) arc4_getbyte(); } -unsigned char +uchar arc4_getbyte( void ) { - unsigned char si, sj; + uchar si, sj; rs.i++; si = rs.s[rs.i]; @@ -565,7 +565,7 @@ arc4_getbyte( void ) return rs.s[(si + sj) & 0xff]; } -static const unsigned char prime_deltas[] = { +static const uchar prime_deltas[] = { 0, 0, 1, 3, 1, 5, 3, 3, 1, 9, 7, 5, 3, 17, 27, 3, 1, 29, 3, 21, 7, 17, 15, 9, 43, 35, 15, 0, 0, 0, 0, 0 }; @@ -665,7 +665,7 @@ del_fd( int fd ) } #define shifted_bit(in, from, to) \ - (((unsigned)(in) & from) \ + (((uint)(in) & from) \ / (from > to ? from / to : 1) \ * (to > from ? to / from : 1))