#ifdef CURLDEBUG
/* the debug versions of these macros make extra certain that the lock is
never doubly locked or unlocked */
-#define CONNCACHE_LOCK(x) if((x)->share) { \
- Curl_share_lock((x), CURL_LOCK_DATA_CONNECT, CURL_LOCK_ACCESS_SINGLE); \
- DEBUGASSERT(!(x)->state.conncache_lock); \
- (x)->state.conncache_lock = TRUE; \
- }
+#define CONNCACHE_LOCK(x) \
+ do { \
+ if((x)->share) { \
+ Curl_share_lock((x), CURL_LOCK_DATA_CONNECT, \
+ CURL_LOCK_ACCESS_SINGLE); \
+ DEBUGASSERT(!(x)->state.conncache_lock); \
+ (x)->state.conncache_lock = TRUE; \
+ } \
+ } while(0)
-#define CONNCACHE_UNLOCK(x) if((x)->share) { \
- DEBUGASSERT((x)->state.conncache_lock); \
- (x)->state.conncache_lock = FALSE; \
- Curl_share_unlock((x), CURL_LOCK_DATA_CONNECT); \
- }
+#define CONNCACHE_UNLOCK(x) \
+ do { \
+ if((x)->share) { \
+ DEBUGASSERT((x)->state.conncache_lock); \
+ (x)->state.conncache_lock = FALSE; \
+ Curl_share_unlock((x), CURL_LOCK_DATA_CONNECT); \
+ } \
+ } while(0)
#else
#define CONNCACHE_LOCK(x) if((x)->share) \
Curl_share_lock((x), CURL_LOCK_DATA_CONNECT, CURL_LOCK_ACCESS_SINGLE)
#include "memdebug.h"
#define HMAC_SHA256(k, kl, d, dl, o) \
- if(Curl_hmacit(Curl_HMAC_SHA256, (unsigned char *)k, \
- (unsigned int)kl, \
- (unsigned char *)d, \
- (unsigned int)dl, o) != CURLE_OK) { \
- ret = CURLE_OUT_OF_MEMORY; \
- goto free_all; \
- }
+ do { \
+ if(Curl_hmacit(Curl_HMAC_SHA256, (unsigned char *)k, \
+ (unsigned int)kl, \
+ (unsigned char *)d, \
+ (unsigned int)dl, o) != CURLE_OK) { \
+ ret = CURLE_OUT_OF_MEMORY; \
+ goto free_all; \
+ } \
+ } while(0)
#define PROVIDER_MAX_L 16
#define REQUEST_TYPE_L (PROVIDER_MAX_L + sizeof("4_request"))
/* Append a string to an SMB message */
#define MSGCAT(str) \
- strcpy(p, (str)); \
- p += strlen(str);
+ do { \
+ strcpy(p, (str)); \
+ p += strlen(str); \
+ } while(0)
/* Append a null-terminated string to an SMB message */
#define MSGCATNULL(str) \
- strcpy(p, (str)); \
- p += strlen(str) + 1;
+ do { \
+ strcpy(p, (str)); \
+ p += strlen(str) + 1; \
+ } while(0)
/* SMB is mostly little endian */
#if (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || \
}
k->now = Curl_now();
- if(didwhat) {
- ;
- }
- else {
+ if(!didwhat) {
/* no read no write, this is a timeout? */
if(k->exp100 == EXP100_AWAITING_CONTINUE) {
/* This should allow some time for the header to arrive, but only a
if(bundle->multiuse == BUNDLE_MULTIPLEX)
multiplexed = CONN_INUSE(check);
- if(canmultiplex) {
- ;
- }
- else {
+ if(!canmultiplex) {
if(multiplexed) {
/* can only happen within multi handles, and means that another easy
handle is using this connection */
}
}
-#define DUP(dest, src, name) \
- if(src->name) { \
- dest->name = strdup(src->name); \
- if(!dest->name) \
- goto fail; \
- }
+#define DUP(dest, src, name) \
+ do { \
+ if(src->name) { \
+ dest->name = strdup(src->name); \
+ if(!dest->name) \
+ goto fail; \
+ } \
+ } while(0)
CURLU *curl_url_dup(CURLU *in)
{
It converts digest text to ASCII so the MD5 will be correct for
what ultimately goes over the network.
*/
-#define CURL_OUTPUT_DIGEST_CONV(a, b) \
- result = Curl_convert_to_network(a, b, strlen(b)); \
- if(result) { \
- free(b); \
- return result; \
- }
+#define CURL_OUTPUT_DIGEST_CONV(a, b) \
+ do { \
+ result = Curl_convert_to_network(a, b, strlen(b)); \
+ if(result) { \
+ free(b); \
+ return result; \
+ } \
+ } while(0)
#endif /* !USE_WINDOWS_SSPI */
bool Curl_auth_digest_get_pair(const char *str, char *value, char *content,
(1<<CURL_LOCK_DATA_SSL_SESSION)))
#define CLONE_STRING(var) \
- if(source->var) { \
- dest->var = strdup(source->var); \
- if(!dest->var) \
- return FALSE; \
- } \
- else \
- dest->var = NULL;
-
-#define CLONE_BLOB(var) \
- if(blobdup(&dest->var, source->var)) \
- return FALSE;
+ do { \
+ if(source->var) { \
+ dest->var = strdup(source->var); \
+ if(!dest->var) \
+ return FALSE; \
+ } \
+ else \
+ dest->var = NULL; \
+ } while(0)
+
+#define CLONE_BLOB(var) \
+ do { \
+ if(blobdup(&dest->var, source->var)) \
+ return FALSE; \
+ } while(0)
static CURLcode blobdup(struct curl_blob **dest,
struct curl_blob *src)
***************************************************************************/
/* Convenience macros for null pointer check. */
-#define NULL_CHECK(ptr, init, retcode) { \
- (ptr) = (init); \
- if(!(ptr)) { \
- warnf(config->global, "out of memory!\n"); \
- curl_slist_free_all(headers); \
- Curl_safefree(contents); \
- return retcode; \
- } \
-}
-#define SET_TOOL_MIME_PTR(m, field, retcode) { \
- if(field) \
- NULL_CHECK((m)->field, strdup(field), retcode); \
-}
+#define NULL_CHECK(ptr, init, retcode) \
+ do { \
+ (ptr) = (init); \
+ if(!(ptr)) { \
+ warnf(config->global, "out of memory!\n"); \
+ curl_slist_free_all(headers); \
+ Curl_safefree(contents); \
+ return retcode; \
+ } \
+ } while(0)
+
+#define SET_TOOL_MIME_PTR(m, field, retcode) \
+ do { \
+ if(field) \
+ NULL_CHECK((m)->field, strdup(field), retcode); \
+ } while(0)
int formparse(struct OperationConfig *config,
const char *input,
}
else
#endif
- if(config->synthetic_error) {
- ;
- }
- else if(result && global->showerror) {
+ if(!config->synthetic_error && result && global->showerror) {
fprintf(global->errors, "curl: (%d) %s\n", result,
(per->errorbuffer[0]) ? per->errorbuffer :
curl_easy_strerror(result));
fputc(*i, stream);
}
break;
- };
+ }
}
}