char *old_string = NULL;
char **replaced = NULL;
cfg_child_cb_t *child_cb = NULL;
- int i;
/* verify the context even if we do not need it now
to make sure that a cfg driver has called the function
/* set the new value */
switch (CFG_VAR_TYPE(var)) {
case CFG_VAR_INT:
- i = (int)(long)v;
- memcpy(p, &i, sizeof(int));
+ *(int *)p = (int)(long)v;
break;
case CFG_VAR_STRING:
s.s = v;
s.len = (s.s) ? strlen(s.s) : 0;
if (cfg_clone_str(&s, &s)) goto error;
- memcpy(&old_string, p, sizeof(char *));
- memcpy(p, &s.s, sizeof(char *));
+ old_string = *(char **)p;
+ *(char **)p = s.s;
break;
case CFG_VAR_STR:
/* clone the string to shm mem */
s = *(str *)v;
if (cfg_clone_str(&s, &s)) goto error;
- memcpy(&old_string, p, sizeof(char *));
+ old_string = *(char **)p;
memcpy(p, &s, sizeof(str));
break;
case CFG_VAR_POINTER:
- memcpy(p, &v, sizeof(void *));
+ *(void **)p = v;
break;
}
char *temp_handle;
int temp_handle_created;
cfg_changed_var_t *changed = NULL;
- int i, size;
+ int size;
str s;
if (!cfg_shmized)
switch (CFG_VAR_TYPE(var)) {
case CFG_VAR_INT:
- i = (int)(long)v;
- memcpy(changed->new_val, &i, sizeof(int));
+ *(int *)changed->new_val = (int)(long)v;
break;
case CFG_VAR_STRING:
s.s = v;
s.len = (s.s) ? strlen(s.s) : 0;
if (cfg_clone_str(&s, &s)) goto error;
- memcpy(changed->new_val, &s.s, sizeof(char *));
+ *(char **)changed->new_val = s.s;
break;
case CFG_VAR_STR:
break;
case CFG_VAR_POINTER:
- memcpy(changed->new_val, &v, sizeof(void *));
+ *(void **)changed->new_val = v;
break;
}
if ((CFG_VAR_TYPE(changed->var) == CFG_VAR_STRING)
|| (CFG_VAR_TYPE(changed->var) == CFG_VAR_STR)) {
- memcpy(&(replaced[replaced_num]), p, sizeof(char *));
+ replaced[replaced_num] = *(char **)p;
if (replaced[replaced_num])
replaced_num++;
/* else do not increase replaced_num, because
int cfg_rollback(cfg_ctx_t *ctx)
{
cfg_changed_var_t *changed, *changed2;
- char *new_string;
if (!ctx) {
LOG(L_ERR, "ERROR: cfg_rollback(): context is undefined\n");
if ((CFG_VAR_TYPE(changed->var) == CFG_VAR_STRING)
|| (CFG_VAR_TYPE(changed->var) == CFG_VAR_STR)) {
- memcpy(&new_string, changed->new_val, sizeof(char *));
- if (new_string) shm_free(new_string);
+ if (*(char **)(changed->new_val))
+ shm_free(*(char **)(changed->new_val));
}
shm_free(changed);
}
void *p;
static str s; /* we need the value even
after the function returns */
- int i;
- char *ch;
/* verify the context even if we do not need it now
to make sure that a cfg driver has called the function
switch (CFG_VAR_TYPE(var)) {
case CFG_VAR_INT:
- memcpy(&i, p, sizeof(int));
- *val = (void *)(long)i;
+ *val = (void *)(long)*(int *)p;
break;
case CFG_VAR_STRING:
- memcpy(&ch, p, sizeof(char *));
- *val = (void *)ch;
+ *val = (void *)*(char **)p;
break;
case CFG_VAR_STR:
break;
case CFG_VAR_POINTER:
- memcpy(val, &p, sizeof(void *));
+ *val = *(void **)p;
break;
}
void *p;
static str old_s, new_s; /* we need the value even
after the function returns */
- int i;
- char *ch;
changed = (cfg_changed_var_t *)(*h);
if (changed == NULL) return 0;
switch (CFG_VAR_TYPE(changed->var)) {
case CFG_VAR_INT:
- memcpy(&i, p, sizeof(int));
- *old_val = (void *)(long)i;
- memcpy(&i, changed->new_val, sizeof(int));
- *new_val = (void *)(long)i;
+ *old_val = (void *)(long)*(int *)p;
+ *new_val = (void *)(long)*(int *)changed->new_val;
break;
case CFG_VAR_STRING:
- memcpy(&ch, p, sizeof(char *));
- *old_val = (void *)ch;
- memcpy(&ch, changed->new_val, sizeof(char *));
- *new_val = (void *)ch;
+ *old_val = (void *)*(char **)p;
+ *new_val = (void *)*(char **)changed->new_val;
break;
case CFG_VAR_STR:
break;
case CFG_VAR_POINTER:
- memcpy(old_val, &p, sizeof(void *));
- memcpy(new_val, &changed->new_val, sizeof(void *));
+ *old_val = *(void **)p;
+ *new_val = *(void **)changed->new_val;
break;
}