diff --git a/src/cfgparse.c b/src/cfgparse.c
index 3f86ce4..8839e85 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -463,7 +463,7 @@
 	else if (!strcmp(args[0], "group")) {
 		struct group *ha_group;
 		if (global.gid != 0) {
-			Alert("parsing [%s:%d] : gid/group was already specified. Continuing.\n", file, linenum, args[0]);
+			Alert("parsing [%s:%d] : gid/group was already specified. Continuing.\n", file, linenum);
 			return 0;
 		}
 		errno = 0;
@@ -2938,7 +2938,7 @@
 			return 0;
 
 		if (*(args[2]) == 0) {
-			Alert("parsing [%s:%d] : <%s> expects <status_code> and <url> as arguments.\n", file, linenum);
+			Alert("parsing [%s:%d] : <%s> expects <status_code> and <url> as arguments.\n", file, linenum, args[0]);
 			return -1;
 		}
 
@@ -2975,7 +2975,7 @@
 			return 0;
 
 		if (*(args[2]) == 0) {
-			Alert("parsing [%s:%d] : <%s> expects <status_code> and <file> as arguments.\n", file, linenum);
+			Alert("parsing [%s:%d] : <%s> expects <status_code> and <file> as arguments.\n", file, linenum, args[0]);
 			return -1;
 		}
 
@@ -3506,8 +3506,8 @@
 		newsrv = curproxy->srv;
 		while (newsrv != NULL) {
 			if ((curproxy->mode != PR_MODE_HTTP) && (newsrv->rdr_len || newsrv->cklen)) {
-				Alert("parsing %s, %s '%s' : server cannot have cookie or redirect prefix in non-HTTP mode.\n",
-				      file, proxy_type_str(curproxy), curproxy->id, linenum);
+				Alert("parsing [%s:%d] : %s '%s' : server cannot have cookie or redirect prefix in non-HTTP mode.\n",
+				      file, linenum, proxy_type_str(curproxy), curproxy->id);
 				goto err;
 			}
 			newsrv = newsrv->next;
@@ -3530,8 +3530,8 @@
 				/* minconn was not specified, so we set it to maxconn */
 				newsrv->minconn = newsrv->maxconn;
 			} else if (newsrv->minconn != newsrv->maxconn && !curproxy->fullconn) {
-				Alert("parsing %s, %s '%s' : fullconn is mandatory when minconn is set on a server.\n",
-				      file, proxy_type_str(curproxy), curproxy->id, linenum);
+				Alert("parsing [%s:%d] : %s '%s' : fullconn is mandatory when minconn is set on a server.\n",
+				      file, linenum, proxy_type_str(curproxy), curproxy->id);
 				goto err;
 			}
 
diff --git a/src/checks.c b/src/checks.c
index b48179a..216d2cb 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -221,7 +221,7 @@
 			" %d sessions requeued, %d total in queue.\n",
 			s->proxy->srv_act, s->proxy->srv_bck,
 			(s->proxy->srv_bck && !s->proxy->srv_act) ? " Running on backup." : "",
-			s->cur_sess, xferred, s->nbpend);
+			xferred, s->nbpend);
 
 		Warning("%s", trash);
 		send_log(s->proxy, LOG_NOTICE, "%s", trash);
diff --git a/src/dumpstats.c b/src/dumpstats.c
index 34b8081..a4e80c2 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -944,7 +944,7 @@
 					chunk_printf(&msg, sizeof(trash),
 					     "%d,%d,%d,%d,",
 					     sv->failed_checks, sv->down_trans,
-					     now.tv_sec - sv->last_change, srv_downtime(sv));
+					     (int)(now.tv_sec - sv->last_change), srv_downtime(sv));
 				else
 					chunk_printf(&msg, sizeof(trash),
 					     ",,,,");
@@ -1084,7 +1084,7 @@
 				     (px->lbprm.tot_weight > 0 || !px->srv) ? "UP" : "DOWN",
 				     (px->lbprm.tot_weight * px->lbprm.wmult + px->lbprm.wdiv - 1) / px->lbprm.wdiv,
 				     px->srv_act, px->srv_bck,
-				     px->down_trans, now.tv_sec - px->last_change,
+				     px->down_trans, (int)(now.tv_sec - px->last_change),
 				     px->srv?be_downtime(px):0,
 				     relative_pid, px->uuid,
 				     px->cum_lbconn, STATS_TYPE_BE,
@@ -1437,7 +1437,7 @@
 			get_localtime(es->when.tv_sec, &tm);
 			chunk_printf(&msg, sizeof(trash), "\n[%02d/%s/%04d:%02d:%02d:%02d.%03d]",
 				     tm.tm_mday, monthname[tm.tm_mon], tm.tm_year+1900,
-				     tm.tm_hour, tm.tm_min, tm.tm_sec, es->when.tv_usec/1000);
+				     tm.tm_hour, tm.tm_min, tm.tm_sec, (int)(es->when.tv_usec/1000));
 
 
 			if (es->src.ss_family == AF_INET)
diff --git a/src/haproxy.c b/src/haproxy.c
index 4a9795b..e78c01d 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -1105,7 +1105,7 @@
 	getrlimit(RLIMIT_NOFILE, &limit);
 	if (limit.rlim_cur < global.maxsock) {
 		Warning("[%s.main()] FD limit (%d) too low for maxconn=%d/maxsock=%d. Please raise 'ulimit-n' to %d or more to avoid any trouble.\n",
-			argv[0], limit.rlim_cur, global.maxconn, global.maxsock, global.maxsock);
+			argv[0], (int)limit.rlim_cur, global.maxconn, global.maxsock, global.maxsock);
 	}
 
 	if (global.mode & MODE_DAEMON) {
diff --git a/src/log.c b/src/log.c
index fc04232..976bc63 100644
--- a/src/log.c
+++ b/src/log.c
@@ -354,14 +354,14 @@
 	svid = (tolog & LW_SVID) ? (s->srv != NULL) ? s->srv->id : "<NOSRV>" : "-";
 
 	send_log(prx_log, LOG_INFO, "%s:%d [%02d/%s/%04d:%02d:%02d:%02d.%03d]"
-		 " %s %s/%s %d/%d/%s%d %s%lld"
-		 " %c%c %d/%d/%d/%d/%s%u %d/%d\n",
+		 " %s %s/%s %ld/%ld/%s%ld %s%lld"
+		 " %c%c %d/%d/%d/%d/%s%u %ld/%ld\n",
 		 pn,
 		 (s->cli_addr.ss_family == AF_INET) ?
 		 ntohs(((struct sockaddr_in *)&s->cli_addr)->sin_port) :
 		 ntohs(((struct sockaddr_in6 *)&s->cli_addr)->sin6_port),
 		 tm.tm_mday, monthname[tm.tm_mon], tm.tm_year+1900,
-		 tm.tm_hour, tm.tm_min, tm.tm_sec, s->logs.tv_accept.tv_usec/1000,
+		 tm.tm_hour, tm.tm_min, tm.tm_sec, (int)s->logs.tv_accept.tv_usec/1000,
 		 fe->id, be->id, svid,
 		 (s->logs.t_queue >= 0) ? s->logs.t_queue : -1,
 		 (s->logs.t_connect >= 0) ? s->logs.t_connect - s->logs.t_queue : -1,
diff --git a/src/memory.c b/src/memory.c
index 2fe3766..05178e5 100644
--- a/src/memory.c
+++ b/src/memory.c
@@ -176,7 +176,7 @@
 	allocated = used = nbpools = 0;
 	qfprintf(stderr, "Dumping pools usage.\n");
 	list_for_each_entry(entry, &pools, list) {
-		qfprintf(stderr, "  - Pool %s (%d bytes) : %d allocated (%lu bytes), %d used, %d users%s\n",
+		qfprintf(stderr, "  - Pool %s (%d bytes) : %d allocated (%u bytes), %d used, %d users%s\n",
 			 entry->name, entry->size, entry->allocated,
 			 entry->size * entry->allocated, entry->used,
 			 entry->users, (entry->flags & MEM_F_SHARED) ? " [SHARED]" : "");
diff --git a/src/proto_http.c b/src/proto_http.c
index 3325b31..3dd11ec 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -831,14 +831,14 @@
 
 	send_log(prx_log, LOG_INFO,
 		 "%s:%d [%02d/%s/%04d:%02d:%02d:%02d.%03d]"
-		 " %s %s/%s %d/%d/%d/%d/%s%d %d %s%lld"
-		 " %s %s %c%c%c%c %d/%d/%d/%d/%s%u %d/%d%s\n",
+		 " %s %s/%s %d/%ld/%ld/%ld/%s%ld %d %s%lld"
+		 " %s %s %c%c%c%c %d/%d/%d/%d/%s%u %ld/%ld%s\n",
 		 pn,
 		 (s->cli_addr.ss_family == AF_INET) ?
 		 ntohs(((struct sockaddr_in *)&s->cli_addr)->sin_port) :
 		 ntohs(((struct sockaddr_in6 *)&s->cli_addr)->sin6_port),
 		 tm.tm_mday, monthname[tm.tm_mon], tm.tm_year+1900,
-		 tm.tm_hour, tm.tm_min, tm.tm_sec, s->logs.accept_date.tv_usec/1000,
+		 tm.tm_hour, tm.tm_min, tm.tm_sec, (int)s->logs.accept_date.tv_usec/1000,
 		 fe->id, be->id, svid,
 		 t_request,
 		 (s->logs.t_queue >= 0) ? s->logs.t_queue - t_request : -1,
