diff options
author | Wayne Davison <wayned@samba.org> | 2006-02-19 23:31:56 +0000 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2006-02-19 23:31:56 +0000 |
commit | 15b03ab1a84ccf4d68963725b20f955d56e5731f (patch) | |
tree | a6bbb77c133bbaefb243f438c1336c412ff2f18a /chmod.c | |
parent | dc5245679af837e59354729721f32761956ebd1a (diff) | |
download | rsync-15b03ab1a84ccf4d68963725b20f955d56e5731f.tar.gz |
Changed parse_chmod() to return the pointer to the new items on
success.
Diffstat (limited to 'chmod.c')
-rw-r--r-- | chmod.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -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 - * 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; @@ -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); - return 0; + return NULL; } 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; } - return 1; + return first_mode; } |