Remove the duplicate definitions of FALSE and TRUE. Change a few
variables from int to bool at the same time. The semantics of bool are
different to int because `bool b = 42' maps 42 to 1, but if the code was
relying on that then it needs shaking out anyway.
13 files changed:
#define CRAWL_NUMFOLDERS 100
#define CRAWL_NUMFOLDERS 100
-/* Callbacks return TRUE crawl_folders should crawl the children of `folder'.
+/* Callbacks return true crawl_folders should crawl the children of `folder'.
* Callbacks need not duplicate folder, as crawl_folders does not free it. */
typedef bool (crawl_callback_t)(char *folder, void *baton);
* Callbacks need not duplicate folder, as crawl_folders does not free it. */
typedef bool (crawl_callback_t)(char *folder, void *baton);
-#ifndef TRUE
-# define TRUE 1
-#endif
-
-#ifndef FALSE
-# define FALSE 0
-#endif
-
#ifndef NOTOK
# define NOTOK (-1)
#endif
#ifndef NOTOK
# define NOTOK (-1)
#endif
*/
#define NMH_BUFSIZ max(BUFSIZ, 8192)
*/
#define NMH_BUFSIZ max(BUFSIZ, 8192)
-#ifndef FALSE
-#define FALSE false
-#endif
-#ifndef TRUE
-#define TRUE true
-#endif
-
/* If we're using gcc then tell it extra information so it can do more
* compile-time checks. */
#if __GNUC__ > 2
/* If we're using gcc then tell it extra information so it can do more
* compile-time checks. */
#if __GNUC__ > 2
*
* Accesses global m_defs via context_find.
*
*
* Accesses global m_defs via context_find.
*
- * On error, return FALSE and set an error in ctx; ctx is always allocated.
+ * On error, return false and set an error in ctx; ctx is always allocated.
*/
bool
mh_oauth_new(mh_oauth_ctx **ctx, const char *svc_name);
*/
bool
mh_oauth_new(mh_oauth_ctx **ctx, const char *svc_name);
/*
* Refresh access (and maybe refresh) token if refresh token present.
*
/*
* Refresh access (and maybe refresh) token if refresh token present.
*
- * On error, return FALSE and leave cred untouched.
+ * On error, return false and leave cred untouched.
*/
bool
mh_oauth_refresh(mh_oauth_cred *cred);
*/
bool
mh_oauth_refresh(mh_oauth_cred *cred);
/*
* Serialize OAuth tokens to file.
*
/*
* Serialize OAuth tokens to file.
*
- * On error, return FALSE.
+ * On error, return false.
*/
bool
mh_oauth_cred_save(FILE *fp, mh_oauth_cred *cred, const char *user);
*/
bool
mh_oauth_cred_save(FILE *fp, mh_oauth_cred *cred, const char *user);
static int sm_addrs = 0;
static int sm_child = NOTOK;
static int sm_debug = 0;
static int sm_addrs = 0;
static int sm_child = NOTOK;
static int sm_debug = 0;
-static int sm_nl = TRUE;
+static bool sm_nl = true;
static int sm_verbose = 0;
static netsec_context *nsc = NULL;
static int sm_verbose = 0;
static netsec_context *nsc = NULL;
char *errstr, *chosen_server;
if (watch)
char *errstr, *chosen_server;
if (watch)
sm_verbose = verbose;
sm_debug = debug;
sm_verbose = verbose;
sm_debug = debug;
char *vec[15], *errstr;
if (watch)
char *vec[15], *errstr;
if (watch)
sm_verbose = verbose;
sm_debug = debug;
sm_verbose = verbose;
sm_debug = debug;
{
switch (smtalk (SM_DATA, "DATA")) {
case 354:
{
switch (smtalk (SM_DATA, "DATA")) {
case 354:
for (bp = buffer; bp && len > 0; bp++, len--) {
switch (*bp) {
case '\n':
for (bp = buffer; bp && len > 0; bp++, len--) {
switch (*bp) {
case '\n':
if (netsec_write(nsc, "\r", 1, &errstr) != OK) {
sm_nerror(errstr);
return NOTOK;
if (netsec_write(nsc, "\r", 1, &errstr) != OK) {
sm_nerror(errstr);
return NOTOK;
}
if (netsec_write(nsc, bp, 1, &errstr) != OK) {
sm_nerror(errstr);
}
if (netsec_write(nsc, bp, 1, &errstr) != OK) {
sm_nerror(errstr);
static int
smhear (void)
{
static int
smhear (void)
{
- int i, code, cont, more;
+ int i, code;
+ bool cont, more;
size_t buflen, rc;
unsigned char *bp;
char *rp;
size_t buflen, rc;
unsigned char *bp;
char *rp;
rp = sm_reply.text;
rc = sizeof(sm_reply.text) - 1;
rp = sm_reply.text;
rc = sizeof(sm_reply.text) - 1;
- for (more = FALSE; (buffer = netsec_readline(nsc, &buflen,
+ for (more = false; (buffer = netsec_readline(nsc, &buflen,
&errstr)) != NULL ; ) {
if (doingEHLO
&errstr)) != NULL ; ) {
if (doingEHLO
for (; buflen > 0 && (!isascii (*bp) || !isdigit (*bp)); bp++, buflen--)
continue;
for (; buflen > 0 && (!isascii (*bp) || !isdigit (*bp)); bp++, buflen--)
continue;
code = atoi ((char *) bp);
bp += 3, buflen -= 3;
for (; buflen > 0 && isspace (*bp); bp++, buflen--)
continue;
if (buflen > 0 && *bp == '-') {
code = atoi ((char *) bp);
bp += 3, buflen -= 3;
for (; buflen > 0 && isspace (*bp); bp++, buflen--)
continue;
if (buflen > 0 && *bp == '-') {
bp++, buflen--;
for (; buflen > 0 && isspace (*bp); bp++, buflen--)
continue;
bp++, buflen--;
for (; buflen > 0 && isspace (*bp); bp++, buflen--)
continue;
if (more) {
if (code != sm_reply.code || cont)
continue;
if (more) {
if (code != sm_reply.code || cont)
continue;
} else {
sm_reply.code = code;
more = cont;
} else {
sm_reply.code = code;
more = cont;
To speed things up considerably, the routine Eom() was made an auxiliary
function called by the macro eom(). Unless we are bursting a maildrop,
To speed things up considerably, the routine Eom() was made an auxiliary
function called by the macro eom(). Unless we are bursting a maildrop,
- the eom() macro returns FALSE saying we aren't at the end of the
+ the eom() macro returns false saying we aren't at the end of the
message.
The next thing to do is to read the mts.conf file and initialize
message.
The next thing to do is to read the mts.conf file and initialize
if (!mh_oauth_get_service_info(svc_name, &ctx->svc, ctx->err_buf,
sizeof(ctx->err_buf))) {
set_err_details(ctx, MH_OAUTH_BAD_PROFILE, ctx->err_buf);
if (!mh_oauth_get_service_info(svc_name, &ctx->svc, ctx->err_buf,
sizeof(ctx->err_buf))) {
set_err_details(ctx, MH_OAUTH_BAD_PROFILE, ctx->err_buf);
}
ctx->curl = curl_easy_init();
if (ctx->curl == NULL) {
set_err(ctx, MH_OAUTH_CURL_INIT);
}
ctx->curl = curl_easy_init();
if (ctx->curl == NULL) {
set_err(ctx, MH_OAUTH_CURL_INIT);
}
curl_easy_setopt(ctx->curl, CURLOPT_ERRORBUFFER, ctx->err_buf);
}
curl_easy_setopt(ctx->curl, CURLOPT_ERRORBUFFER, ctx->err_buf);
if (curl_easy_setopt(ctx->curl, CURLOPT_USERAGENT,
ctx->user_agent) != CURLE_OK) {
set_err_details(ctx, MH_OAUTH_CURL_INIT, ctx->err_buf);
if (curl_easy_setopt(ctx->curl, CURLOPT_USERAGENT,
ctx->user_agent) != CURLE_OK) {
set_err_details(ctx, MH_OAUTH_CURL_INIT, ctx->err_buf);
cred_from_response(mh_oauth_cred *cred, const char *content_type,
const char *input, size_t input_len)
{
cred_from_response(mh_oauth_cred *cred, const char *content_type,
const char *input, size_t input_len)
{
char *access_token, *expires_in, *refresh_token;
const mh_oauth_ctx *ctx = cred->ctx;
if (!is_json(content_type)) {
char *access_token, *expires_in, *refresh_token;
const mh_oauth_ctx *ctx = cred->ctx;
if (!is_json(content_type)) {
}
access_token = expires_in = refresh_token = NULL;
}
access_token = expires_in = refresh_token = NULL;
free(cred->access_token);
cred->access_token = access_token;
free(cred->access_token);
cred->access_token = access_token;
} else {
set_err_details(ctx, MH_OAUTH_POST, ctx->err_buf);
}
} else {
set_err_details(ctx, MH_OAUTH_POST, ctx->err_buf);
}
}
if (curl_ctx.res_code != 200) {
set_err_http(ctx, &curl_ctx);
}
if (curl_ctx.res_code != 200) {
set_err_http(ctx, &curl_ctx);
}
if (!cred_from_response(cred, curl_ctx.content_type, curl_ctx.res_body,
curl_ctx.res_len)) {
set_err(ctx, MH_OAUTH_RESPONSE_BAD);
}
if (!cred_from_response(cred, curl_ctx.content_type, curl_ctx.res_body,
curl_ctx.res_len)) {
set_err(ctx, MH_OAUTH_RESPONSE_BAD);
if (cred->refresh_token == NULL) {
set_err(ctx, MH_OAUTH_NO_REFRESH);
if (cred->refresh_token == NULL) {
set_err(ctx, MH_OAUTH_NO_REFRESH);
}
if (!make_query_url(ctx->buf, sizeof ctx->buf, ctx->curl, NULL,
}
if (!make_query_url(ctx->buf, sizeof ctx->buf, ctx->curl, NULL,
"client_secret", ctx->svc.client_secret,
(void *)NULL)) {
set_err(ctx, MH_OAUTH_REQUEST_INIT);
"client_secret", ctx->svc.client_secret,
(void *)NULL)) {
set_err(ctx, MH_OAUTH_REQUEST_INIT);
}
result = do_access_request(cred, ctx->buf);
if (result && cred->access_token == NULL) {
set_err_details(ctx, MH_OAUTH_RESPONSE_BAD, "no access token");
}
result = do_access_request(cred, ctx->buf);
if (result && cred->access_token == NULL) {
set_err_details(ctx, MH_OAUTH_RESPONSE_BAD, "no access token");
static bool
load_creds(struct user_creds **result, FILE *fp, mh_oauth_ctx *ctx)
{
static bool
load_creds(struct user_creds **result, FILE *fp, mh_oauth_ctx *ctx)
{
char name[NAMESZ], value_buf[BUFSIZ];
int state;
m_getfld_state_t getfld_ctx;
char name[NAMESZ], value_buf[BUFSIZ];
int state;
m_getfld_state_t getfld_ctx;
long expires_at)
{
if (access != NULL) {
long expires_at)
{
if (access != NULL) {
- if (fprintf(fp, "access-%s: %s\n", user, access) < 0) return FALSE;
+ if (fprintf(fp, "access-%s: %s\n", user, access) < 0) return false;
- if (fprintf(fp, "refresh-%s: %s\n", user, refresh) < 0) return FALSE;
+ if (fprintf(fp, "refresh-%s: %s\n", user, refresh) < 0) return false;
}
if (expires_at > 0) {
if (fprintf(fp, "expire-%s: %ld\n", user, (long)expires_at) < 0) {
}
if (expires_at > 0) {
if (fprintf(fp, "expire-%s: %ld\n", user, (long)expires_at) < 0) {
/* Load existing creds if any. */
if (!load_creds(&user_creds, fp, cred->ctx)) {
/* Load existing creds if any. */
if (!load_creds(&user_creds, fp, cred->ctx)) {
}
if (fchmod(fd, S_IRUSR | S_IWUSR) < 0) goto err;
}
if (fchmod(fd, S_IRUSR | S_IWUSR) < 0) goto err;
free_user_creds(user_creds);
free_user_creds(user_creds);
err:
free_user_creds(user_creds);
set_err(cred->ctx, MH_OAUTH_CRED_FILE);
err:
free_user_creds(user_creds);
set_err(cred->ctx, MH_OAUTH_CRED_FILE);
/*
* Build null-terminated URL in the array pointed to by s. If the URL doesn't
/*
* Build null-terminated URL in the array pointed to by s. If the URL doesn't
- * fit within size (including the terminating null byte), return FALSE without *
+ * fit within size (including the terminating null byte), return false without *
* building the entire URL. Some of URL may already have been written into the
* result array in that case.
*/
static bool
make_query_url(char *s, size_t size, CURL *curl, const char *base_url, ...)
{
* building the entire URL. Some of URL may already have been written into the
* result array in that case.
*/
static bool
make_query_url(char *s, size_t size, CURL *curl, const char *base_url, ...)
{
size_t len;
char *prefix;
va_list ap;
size_t len;
char *prefix;
va_list ap;
} else {
len = strlen(base_url);
if (len > size - 1) /* Less one for NUL. */
} else {
len = strlen(base_url);
if (len > size - 1) /* Less one for NUL. */
strcpy(s, base_url);
prefix = "?";
}
strcpy(s, base_url);
prefix = "?";
}
size *= nmemb;
new_len = ctx->res_len + size;
if (new_len > sizeof ctx->res_body) {
size *= nmemb;
new_len = ctx->res_len + size;
if (new_len > sizeof ctx->res_body) {
CURL *curl = ctx->curl;
CURLcode status;
CURL *curl = ctx->curl;
CURLcode status;
ctx->res_len = 0;
if (ctx->log != NULL) {
ctx->res_len = 0;
if (ctx->log != NULL) {
}
if ((status = curl_easy_setopt(curl, CURLOPT_URL, url)) != CURLE_OK) {
}
if ((status = curl_easy_setopt(curl, CURLOPT_URL, url)) != CURLE_OK) {
}
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, req_body);
}
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, req_body);
status = curl_easy_perform(curl);
/* first check for error from callback */
if (ctx->too_big) {
status = curl_easy_perform(curl);
/* first check for error from callback */
if (ctx->too_big) {
}
/* now from curl */
if (status != CURLE_OK) {
}
/* now from curl */
if (status != CURLE_OK) {
}
if ((status = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE,
&ctx->res_code)) != CURLE_OK
|| (status = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE,
&ctx->content_type)) != CURLE_OK) {
}
if ((status = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE,
&ctx->res_code)) != CURLE_OK
|| (status = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE,
&ctx->content_type)) != CURLE_OK) {
}
/*******************************************************************************
}
/*******************************************************************************
*tokens = mh_xrealloc(*tokens, *tokens_len * sizeof **tokens);
}
if (r <= 0) {
*tokens = mh_xrealloc(*tokens, *tokens_len * sizeof **tokens);
}
if (r <= 0) {
int skip_tokens = 0;
/* whether the current token represents a field name */
/* The next token will be the value. */
int skip_tokens = 0;
/* whether the current token represents a field name */
/* The next token will be the value. */
int i;
for (i = 1; i <= token_count; i++) {
int i;
for (i = 1; i <= token_count; i++) {
if (skip_tokens > 0) {
skip_tokens--;
/* When we finish with the object or list, we'll have a key. */
if (skip_tokens > 0) {
skip_tokens--;
/* When we finish with the object or list, we'll have a key. */
continue;
}
if (is_key) {
continue;
}
if (is_key) {
continue;
}
key = input + tokens[i - 1].start;
continue;
}
key = input + tokens[i - 1].start;
(*val)[val_len] = '\0';
return;
}
(*val)[val_len] = '\0';
return;
}
static bool
get_json_strings(const char *input, size_t input_len, FILE *log, ...)
{
static bool
get_json_strings(const char *input, size_t input_len, FILE *log, ...)
{
jsmntok_t *tokens;
size_t tokens_len;
va_list ap;
jsmntok_t *tokens;
size_t tokens_len;
va_list ap;
va_start(ap, log);
for (name = va_arg(ap, char *); name != NULL; name = va_arg(ap, char *)) {
va_start(ap, log);
for (name = va_arg(ap, char *); name != NULL; name = va_arg(ap, char *)) {
if (svc->name == NULL) { \
snprintf(errbuf, errbuflen, "%s", #name " is missing"); \
errbuf[errbuflen - 1] = '\0'; \
if (svc->name == NULL) { \
snprintf(errbuf, errbuflen, "%s", #name " is missing"); \
errbuf[errbuflen - 1] = '\0'; \
}
update(scope);
update(client_id);
}
update(scope);
update(client_id);
svc->display_name = svc->name;
}
svc->display_name = svc->name;
}
}
if (!update_svc(svcinfo, svc_name, errbuf, errbuflen)) {
}
if (!update_svc(svcinfo, svc_name, errbuf, errbuflen)) {
/* and for further info */
putchar('\n');
/* and for further info */
putchar('\n');
- print_intro (stdout, TRUE);
+ print_intro (stdout, true);
puts ("\nSee the BUGS section of the nmh(7) man page for more information.");
}
puts ("\nSee the BUGS section of the nmh(7) man page for more information.");
}
break;
case NOFASTSW:
case TOTALSW:
break;
case NOFASTSW:
case TOTALSW:
break;
case FASTSW:
case NOTOTALSW:
break;
case FASTSW:
case NOTOTALSW:
*/
if (!(mp = folder_read (fold, fpack))) {
inform("unable to read folder %s, continuing...", fold);
*/
if (!(mp = folder_read (fold, fpack))) {
inform("unable to read folder %s, continuing...", fold);
- *crawl_children = FALSE;
+ *crawl_children = false;
if (fpack) {
if (folder_pack (&mp, fverb) == -1) {
if (fpack) {
if (folder_pack (&mp, fverb) == -1) {
- *crawl_children = FALSE; /* to please clang static analyzer */
+ *crawl_children = false; /* to please clang static analyzer */
done (1);
}
seq_save (mp); /* synchronize the sequences */
done (1);
}
seq_save (mp); /* synchronize the sequences */
fclose (out);
puts ("\nPlease see the nmh(7) man page for an introduction to nmh.\n");
fclose (out);
puts ("\nPlease see the nmh(7) man page for an introduction to nmh.\n");
- print_intro (stdout, FALSE);
+ print_intro (stdout, false);
/* Initialize the saved nmh version. The Path profile entry was added
above, that's all this needs. */
/* Initialize the saved nmh version. The Path profile entry was added
above, that's all this needs. */
-/* Return TRUE if the sequence 'name' is in 'sequences'. */
+/* Return true if the sequence 'name' is in 'sequences'. */
static bool
seq_in_list(char *name, char *sequences[])
{
static bool
seq_in_list(char *name, char *sequences[])
{
for (i = 0; sequences[i] != NULL; i++) {
if (strcmp(name, sequences[i]) == 0) {
for (i = 0; sequences[i] != NULL; i++) {
if (strcmp(name, sequences[i]) == 0) {
}
/* Return the string list of message numbers from the sequences file, or NULL
}
/* Return the string list of message numbers from the sequences file, or NULL
crawl_callback(char *folder, void *baton)
{
check_folder(folder, strlen(folder), baton);
crawl_callback(char *folder, void *baton)
{
check_folder(folder, strlen(folder), baton);
}
/* Scan folders, returning:
}
/* Scan folders, returning: