Changed parse_chmod() to return the pointer to the new items on
authorWayne Davison <wayned@samba.org>
Sun, 19 Feb 2006 23:31:56 +0000 (23:31 +0000)
committerWayne Davison <wayned@samba.org>
Sun, 19 Feb 2006 23:31:56 +0000 (23:31 +0000)
success.

chmod.c

diff --git a/chmod.c b/chmod.c
index 8a6adfd..53aa059 100644 (file)
--- a/chmod.c
+++ b/chmod.c
@@ -21,9 +21,10 @@ struct chmod_mode_struct {
 #define STATE_2ND_HALF 2
 
 /* Parse a chmod-style argument, and break it down into one or more AND/OR
 #define STATE_2ND_HALF 2
 
 /* Parse a chmod-style argument, and break it down into one or more AND/OR
- * pairs in a linked list.  We use a state machine to walk through the
- * options. */
-int parse_chmod(const char *modestr, struct chmod_mode_struct **root_mode_ptr)
+ * pairs in a linked list.  We return a pointer to new items on succcess
+ * (appending the items to the specified list), or NULL on error. */
+struct chmod_mode_struct *parse_chmod(const char *modestr,
+                                     struct chmod_mode_struct **root_mode_ptr)
 {
        int state = STATE_1ST_HALF;
        int where = 0, what = 0, op = 0, topbits = 0, topoct = 0, flags = 0;
 {
        int state = STATE_1ST_HALF;
        int where = 0, what = 0, op = 0, topbits = 0, topoct = 0, flags = 0;
@@ -153,7 +154,7 @@ int parse_chmod(const char *modestr, struct chmod_mode_struct **root_mode_ptr)
 
        if (state == STATE_ERROR) {
                free_chmod_mode(first_mode);
 
        if (state == STATE_ERROR) {
                free_chmod_mode(first_mode);
-               return 0;
+               return NULL;
        }
 
        if (!(curr_mode = *root_mode_ptr))
        }
 
        if (!(curr_mode = *root_mode_ptr))
@@ -164,7 +165,7 @@ int parse_chmod(const char *modestr, struct chmod_mode_struct **root_mode_ptr)
                curr_mode->next = first_mode;
        }
 
                curr_mode->next = first_mode;
        }
 
-       return 1;
+       return first_mode;
 }
 
 
 }