* http://www.schoonerinfotech.com/
*
*/
+
+#include "config.h"
+
#include <ctype.h>
+#include <inttypes.h>
+#include <strings.h>
+
#include "ms_setting.h"
#include "ms_conn.h"
const char ALPHANUMBERICS[]=
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-";
-ms_setting_t ms_setting; /* store the settings specified by user */
+ms_setting_st ms_setting; /* store the settings specified by user */
/* read setting from configuration file */
static void ms_setting_slapmode_init_pre(void);
static void ms_setting_slapmode_init_post(void);
+#if !defined(HAVE_GETLINE)
+#include <limits.h>
+static ssize_t getline (char **line, size_t *line_size, FILE *fp)
+{
+ char delim= '\n';
+ ssize_t result= 0;
+ size_t cur_len= 0;
+
+ if (line == NULL || line_size == NULL || fp == NULL)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (*line == NULL || *line_size == 0)
+ {
+ char *new_line;
+ *line_size = 120;
+ new_line= (char *) realloc (*line, *line_size);
+ if (new_line == NULL)
+ {
+ result= -1;
+ return result;
+ }
+ *line= new_line;
+ }
+
+ for (;;)
+ {
+ int i= getc(fp);
+ if (i == EOF)
+ {
+ result = -1;
+ break;
+ }
+
+ /* Make enough space for len+1 (for final NUL) bytes. */
+ if (cur_len + 1 >= *line_size)
+ {
+ size_t needed_max=
+ SSIZE_MAX < SIZE_MAX ? (size_t) SSIZE_MAX + 1 : SIZE_MAX;
+ size_t needed= (2 * (*line_size)) + 1;
+ char *new_line;
+
+ if (needed_max < needed)
+ needed= needed_max;
+ if (cur_len + 1 >= needed)
+ {
+ result= -1;
+ errno= EOVERFLOW;
+ return result;
+ }
+
+ new_line= (char *)realloc(*line, needed);
+ if (new_line == NULL)
+ {
+ result= -1;
+ return result;
+ }
+
+ *line= new_line;
+ *line_size= needed;
+ }
+
+ (*line)[cur_len]= (char)i;
+ cur_len++;
+
+ if (i == delim)
+ break;
+ }
+ (*line)[cur_len] = '\0';
+ if (cur_len != 0)
+ return (ssize_t)cur_len;
+ return result;
+}
+#endif
/**
* parse the server list string, and build the servers
{
srvs= (ms_mcd_server_t *)realloc(
ms_setting.servers,
- (uint64_t)ms_setting.total_srv_cnt
+ (size_t)ms_setting.total_srv_cnt
* sizeof(ms_mcd_server_t) * 2);
if (srvs == NULL)
{
if (nread != EOF)
{
- if (sscanf(line, "%lu %lu %lf ", &start_len,
+ if (sscanf(line, "%zu %zu %lf ", &start_len,
&end_len, &proportion) != 3)
{
conf_type= ms_get_conf_type(line);
{
key_distr= (ms_key_distr_t *)realloc(
ms_setting.key_distr,
- (uint64_t)ms_setting.
+ (size_t)ms_setting.
total_key_rng_cnt * sizeof(ms_key_distr_t) * 2);
if (key_distr == NULL)
{
if (nread != EOF)
{
- if (sscanf(line, "%lu %lu %lf %lu", &start_len, &end_len,
+ if (sscanf(line, "%zu %zu %lf %zu", &start_len, &end_len,
&proportion, &frequence) != 3)
{
conf_type= ms_get_conf_type(line);
{
val_distr= (ms_value_distr_t *)realloc(
ms_setting.value_distr,
- (uint64_t)ms_setting.
+ (size_t)ms_setting.
total_val_rng_cnt * sizeof(ms_value_distr_t) * 2);
if (val_distr == NULL)
{
}
else
{
- fprintf(stdout, "execute number: %ld\n", ms_setting.exec_num);
+ fprintf(stdout, "execute number: %" PRId64 "\n", ms_setting.exec_num);
}
- fprintf(stdout, "windows size: %ldk\n",
+ fprintf(stdout, "windows size: %" PRId64 "k\n",
(int64_t)(ms_setting.win_size / 1024));
fprintf(stdout, "set proportion: set_prop=%.2f\n",
ms_setting.cmd_distr[CMD_SET].cmd_prop);
*/
void ms_setting_init_pre()
{
- memset(&ms_setting, 0, sizeof(ms_setting_t));
+ memset(&ms_setting, 0, sizeof(ms_setting));
/* common initialize */
ms_setting.ncpu= ms_get_cpu_count();
ms_setting.run_time= DEFAULT_RUN_TIME;
ms_setting.total_srv_cnt= MCD_SRVS_NUM_INIT;
ms_setting.servers= (ms_mcd_server_t *)malloc(
- (uint64_t)ms_setting.total_srv_cnt
+ (size_t)ms_setting.total_srv_cnt
* sizeof(ms_mcd_server_t));
if (ms_setting.servers == NULL)
{
{
ms_setting.total_key_rng_cnt= KEY_RANGE_COUNT_INIT;
ms_setting.key_distr= (ms_key_distr_t *)malloc(
- (uint64_t)ms_setting.total_key_rng_cnt
+ (size_t)ms_setting.total_key_rng_cnt
* sizeof(ms_key_distr_t));
if (ms_setting.key_distr == NULL)
{
ms_setting.total_val_rng_cnt= VALUE_RANGE_COUNT_INIT;
ms_setting.value_distr= (ms_value_distr_t *)malloc(
- (uint64_t)ms_setting.total_val_rng_cnt
+ (size_t)ms_setting.total_val_rng_cnt
* sizeof(
ms_value_distr_t));
if (ms_setting.value_distr == NULL)