Hi,

The loop in cgroup_parse_rules() is a little long now, and it is not
easy to read the loop.
Then, This patch shortens the loop for the readability.


Thanks
Ken'ichi Ohmichi

Signed-off-by: Ken'ichi Ohmichi <[email protected]>
---
 src/api.c |   43 +++++++++++++++++++++++++++----------------
 1 files changed, 27 insertions(+), 16 deletions(-)

diff --git a/src/api.c b/src/api.c
index 75dc92a..237d4e6 100644
--- a/src/api.c
+++ b/src/api.c
@@ -243,6 +243,30 @@ static void cgroup_free_rule_list(struct cgroup_rule_list 
*rl)
        rl->tail = NULL;
 }
 
+static char *cg_skip_unused_charactors_in_rule(char *rule)
+{
+       char *itr;
+
+       /* We ignore anything after a # sign as comments. */
+       if ((itr = strchr(rule, '#')))
+               *itr = '\0';
+
+       /* We also need to remove the newline character. */
+       if ((itr = strchr(rule, '\n')))
+               *itr = '\0';
+
+       /* Now, skip any leading tabs and spaces. */
+       itr = rule;
+       while (itr && isblank(*itr))
+               itr++;
+
+       /* If there's nothing left, we can ignore this line. */
+       if (!strlen(itr))
+               return NULL;
+
+       return itr;
+}
+
 /**
  * Parse the configuration file that maps UID/GIDs to cgroups.  If ever the
  * configuration file is modified, applications should call this function to
@@ -337,23 +361,10 @@ static int cgroup_parse_rules(bool cache, uid_t muid, 
gid_t mgid)
        while ((itr = fgets(buff, sizeof(buff), fp)) != NULL) {
                linenum++;
 
-               /* We ignore anything after a # sign as comments. */
-               if ((itr = strchr(buff, '#')))
-                       *itr = '\0';
-
-               /* We also need to remove the newline character. */
-               if ((itr = strchr(buff, '\n')))
-                       *itr = '\0';
-
-               /* Now, skip any leading tabs and spaces. */
-               itr = &buff;
-               while (itr && isblank(*itr))
-                       itr++;
-
-               /* If there's nothing left, we can ignore this line. */
-               if (!strlen(itr))
+               if (!(itr = cg_skip_unused_charactors_in_rule(buff))) {
+                       memset(buff, '\0', sizeof(buff));
                        continue;
-
+               }
                /*
                 * If we skipped the last rule and this rule is a continuation
                 * of it (begins with %), then we should skip this rule too.

------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to