---
 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

Reply via email to