--- src/lib/dist.c | 57 +++++++++++++++++++------------------------------------- 1 file changed, 19 insertions(+), 38 deletions(-)
diff --git a/src/lib/dist.c b/src/lib/dist.c index 1ab263d..3ed7347 100644 --- a/src/lib/dist.c +++ b/src/lib/dist.c @@ -51,10 +51,25 @@ static int get_action_id(char *name) return -1; } +static inline char **action_id2ptr(int const id, dist_actions *const d_actions) +{ + switch (id) { + case ADD_IP: return &d_actions->add_ip; + case DEL_IP: return &d_actions->del_ip; + case SET_HOSTNAME: return &d_actions->set_hostname; + case SET_DNS: return &d_actions->set_dns; + case SET_USERPASS: return &d_actions->set_userpass; + case SET_UGID_QUOTA: return &d_actions->set_ugid_quota; + case POST_CREATE: return &d_actions->post_create; + default: return NULL; + } +} + static int add_dist_action(dist_actions *d_actions, char *name, char *action, char *dir) { - char file[256]; + char file[256], + **act = NULL; int id; if (!action[0]) @@ -66,43 +81,9 @@ static int add_dist_action(dist_actions *d_actions, char *name, char *action, logger(-1, 0, "Action script %s not found", file); return 0; } - switch (id) { - case ADD_IP: - if (d_actions->add_ip != NULL) - break; - d_actions->add_ip = strdup(file); - break; - case DEL_IP: - if (d_actions->del_ip != NULL) - break; - d_actions->del_ip = strdup(file); - break; - case SET_HOSTNAME: - if (d_actions->set_hostname != NULL) - break; - d_actions->set_hostname = strdup(file); - break; - case SET_DNS: - if (d_actions->set_dns != NULL) - break; - d_actions->set_dns = strdup(file); - break; - case SET_USERPASS: - if (d_actions->set_userpass != NULL) - break; - d_actions->set_userpass = strdup(file); - break; - case SET_UGID_QUOTA: - if (d_actions->set_ugid_quota != NULL) - break; - d_actions->set_ugid_quota = strdup(file); - break; - case POST_CREATE: - if (d_actions->post_create != NULL) - break; - d_actions->post_create = strdup(file); - break; - } + if ((act = action_id2ptr(id, d_actions)) != NULL && + *act == NULL) + *act = strdup(file); return 0; } -- 1.7.9.5 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel