summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSalvatore Sanfilippo <antirez@gmail.com>2013-06-26 06:17:02 -0700
committerSalvatore Sanfilippo <antirez@gmail.com>2013-06-26 06:17:02 -0700
commitbae60ede1d60687f1240258c9298d3515b24b091 (patch)
tree1663e565f323de27e1fd8646ac9b656823df9eb1
parent8ca265cdb728799ecec27c2bb5e0d2092a62aa03 (diff)
parent9fcead7a5967f31cc391fbed25c256406247b638 (diff)
downloadredis-bae60ede1d60687f1240258c9298d3515b24b091.tar.gz
Merge pull request #1111 from yamt/netbsd3
netbsd support
-rw-r--r--src/bitops.c4
-rw-r--r--src/config.c4
-rw-r--r--src/debug.c5
-rw-r--r--src/fmacros.h8
-rw-r--r--src/redis.c44
-rw-r--r--src/redis.h2
6 files changed, 37 insertions, 30 deletions
diff --git a/src/bitops.c b/src/bitops.c
index 47f768c31..1c2e13ddc 100644
--- a/src/bitops.c
+++ b/src/bitops.c
@@ -58,7 +58,7 @@ static int getBitOffsetFromArgument(redisClient *c, robj *o, size_t *offset) {
/* Count number of bits set in the binary array pointed by 's' and long
* 'count' bytes. The implementation of this function is required to
* work with a input string length up to 512 MB. */
-size_t popcount(void *s, long count) {
+size_t popcount_binary(void *s, long count) {
size_t bits = 0;
unsigned char *p;
uint32_t *p4 = s;
@@ -407,6 +407,6 @@ void bitcountCommand(redisClient *c) {
} else {
long bytes = end-start+1;
- addReplyLongLong(c,popcount(p+start,bytes));
+ addReplyLongLong(c,popcount_binary(p+start,bytes));
}
}
diff --git a/src/config.c b/src/config.c
index 374377320..cd0ef04e2 100644
--- a/src/config.c
+++ b/src/config.c
@@ -996,8 +996,8 @@ void configGetCommand(redisClient *c) {
int j;
for (j = 0; j < server.saveparamslen; j++) {
- buf = sdscatprintf(buf,"%ld %d",
- server.saveparams[j].seconds,
+ buf = sdscatprintf(buf,"%jd %d",
+ (intmax_t)server.saveparams[j].seconds,
server.saveparams[j].changes);
if (j != server.saveparamslen-1)
buf = sdscatlen(buf," ",1);
diff --git a/src/debug.c b/src/debug.c
index 32d361200..0a947e564 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -329,8 +329,11 @@ void debugCommand(redisClient *c) {
} else if (!strcasecmp(c->argv[1]->ptr,"sleep") && c->argc == 3) {
double dtime = strtod(c->argv[2]->ptr,NULL);
long long utime = dtime*1000000;
+ struct timespec tv;
- usleep(utime);
+ tv.tv_sec = utime / 1000000;
+ tv.tv_nsec = (utime % 1000000) * 1000;
+ nanosleep(&tv, NULL);
addReply(c,shared.ok);
} else if (!strcasecmp(c->argv[1]->ptr,"set-active-expire") &&
c->argc == 3)
diff --git a/src/fmacros.h b/src/fmacros.h
index a6cf3578c..c16f5e204 100644
--- a/src/fmacros.h
+++ b/src/fmacros.h
@@ -36,9 +36,13 @@
#define _GNU_SOURCE
#endif
-#if defined(__linux__) || defined(__OpenBSD__) || defined(__NetBSD__)
+#if defined(__linux__) || defined(__OpenBSD__)
#define _XOPEN_SOURCE 700
-#else
+/*
+ * On NetBSD, _XOPEN_SOURCE undefines _NETBSD_SOURCE and
+ * thus hides inet_aton etc.
+ */
+#elif !defined(__NetBSD__)
#define _XOPEN_SOURCE
#endif
diff --git a/src/redis.c b/src/redis.c
index 21298e6eb..cb1943a0d 100644
--- a/src/redis.c
+++ b/src/redis.c
@@ -2126,8 +2126,8 @@ sds genRedisInfoString(char *section) {
"process_id:%ld\r\n"
"run_id:%s\r\n"
"tcp_port:%d\r\n"
- "uptime_in_seconds:%ld\r\n"
- "uptime_in_days:%ld\r\n"
+ "uptime_in_seconds:%jd\r\n"
+ "uptime_in_days:%jd\r\n"
"hz:%d\r\n"
"lru_clock:%ld\r\n"
"config_file:%s\r\n",
@@ -2147,8 +2147,8 @@ sds genRedisInfoString(char *section) {
(long) getpid(),
server.runid,
server.port,
- uptime,
- uptime/(3600*24),
+ (intmax_t)uptime,
+ (intmax_t)(uptime/(3600*24)),
server.hz,
(unsigned long) server.lruclock,
server.configfile ? server.configfile : "");
@@ -2205,30 +2205,30 @@ sds genRedisInfoString(char *section) {
"loading:%d\r\n"
"rdb_changes_since_last_save:%lld\r\n"
"rdb_bgsave_in_progress:%d\r\n"
- "rdb_last_save_time:%ld\r\n"
+ "rdb_last_save_time:%jd\r\n"
"rdb_last_bgsave_status:%s\r\n"
- "rdb_last_bgsave_time_sec:%ld\r\n"
- "rdb_current_bgsave_time_sec:%ld\r\n"
+ "rdb_last_bgsave_time_sec:%jd\r\n"
+ "rdb_current_bgsave_time_sec:%jd\r\n"
"aof_enabled:%d\r\n"
"aof_rewrite_in_progress:%d\r\n"
"aof_rewrite_scheduled:%d\r\n"
- "aof_last_rewrite_time_sec:%ld\r\n"
- "aof_current_rewrite_time_sec:%ld\r\n"
+ "aof_last_rewrite_time_sec:%jd\r\n"
+ "aof_current_rewrite_time_sec:%jd\r\n"
"aof_last_bgrewrite_status:%s\r\n",
server.loading,
server.dirty,
server.rdb_child_pid != -1,
- server.lastsave,
+ (intmax_t)server.lastsave,
(server.lastbgsave_status == REDIS_OK) ? "ok" : "err",
- server.rdb_save_time_last,
- (server.rdb_child_pid == -1) ?
- -1 : time(NULL)-server.rdb_save_time_start,
+ (intmax_t)server.rdb_save_time_last,
+ (intmax_t)((server.rdb_child_pid == -1) ?
+ -1 : time(NULL)-server.rdb_save_time_start),
server.aof_state != REDIS_AOF_OFF,
server.aof_child_pid != -1,
server.aof_rewrite_scheduled,
- server.aof_rewrite_time_last,
- (server.aof_child_pid == -1) ?
- -1 : time(NULL)-server.aof_rewrite_time_start,
+ (intmax_t)server.aof_rewrite_time_last,
+ (intmax_t)((server.aof_child_pid == -1) ?
+ -1 : time(NULL)-server.aof_rewrite_time_start),
(server.aof_lastbgrewrite_status == REDIS_OK) ? "ok" : "err");
if (server.aof_state != REDIS_AOF_OFF) {
@@ -2267,16 +2267,16 @@ sds genRedisInfoString(char *section) {
}
info = sdscatprintf(info,
- "loading_start_time:%ld\r\n"
+ "loading_start_time:%jd\r\n"
"loading_total_bytes:%llu\r\n"
"loading_loaded_bytes:%llu\r\n"
"loading_loaded_perc:%.2f\r\n"
- "loading_eta_seconds:%ld\r\n"
- ,(unsigned long) server.loading_start_time,
+ "loading_eta_seconds:%jd\r\n",
+ (intmax_t) server.loading_start_time,
(unsigned long long) server.loading_total_bytes,
(unsigned long long) server.loading_loaded_bytes,
perc,
- eta
+ (intmax_t)eta
);
}
}
@@ -2355,8 +2355,8 @@ sds genRedisInfoString(char *section) {
if (server.repl_state != REDIS_REPL_CONNECTED) {
info = sdscatprintf(info,
- "master_link_down_since_seconds:%ld\r\n",
- (long)server.unixtime-server.repl_down_since);
+ "master_link_down_since_seconds:%jd\r\n",
+ (intmax_t)server.unixtime-server.repl_down_since);
}
info = sdscatprintf(info,
"slave_priority:%d\r\n"
diff --git a/src/redis.h b/src/redis.h
index 570a7deff..ccf978128 100644
--- a/src/redis.h
+++ b/src/redis.h
@@ -1029,7 +1029,7 @@ long long mstime(void);
void getRandomHexChars(char *p, unsigned int len);
uint64_t crc64(uint64_t crc, const unsigned char *s, uint64_t l);
void exitFromChild(int retcode);
-size_t popcount(void *s, long count);
+size_t popcount_binary(void *s, long count);
void redisSetProcTitle(char *title);
/* networking.c -- Networking and Client related operations */