Several predicate tests perform a numerical comparison based on the comparison_type (COMP_GT, COMP_LT, COMP_EQ). Factor that out into a utility function.
* find/pred.c (compare_num): Add static function. (pred_gid, pred_inum, pred_links, pred_size, pred_uid): Use it. --- find/pred.c | 117 +++++++++++++++++----------------------------------- 1 file changed, 37 insertions(+), 80 deletions(-) diff --git a/find/pred.c b/find/pred.c index 218bc075..1a41ade7 100644 --- a/find/pred.c +++ b/find/pred.c @@ -277,6 +277,27 @@ pred_delete (const char *pathname, struct stat *stat_buf, struct predicate *pred } } +static bool +compare_num (enum comparison_type kind, uintmax_t l_val, uintmax_t val) +{ + switch (kind) + { + case COMP_GT: + if (val > l_val) + return true; + break; + case COMP_LT: + if (val < l_val) + return true; + break; + case COMP_EQ: + if (val == l_val) + return true; + break; + } + return false; +} + bool pred_empty (const char *pathname, struct stat *stat_buf, struct predicate *pred_ptr) { @@ -424,22 +445,9 @@ pred_gid (const char *pathname, struct stat *stat_buf, struct predicate *pred_pt { (void) pathname; - switch (pred_ptr->args.numinfo.kind) - { - case COMP_GT: - if (stat_buf->st_gid > pred_ptr->args.numinfo.l_val) - return (true); - break; - case COMP_LT: - if (stat_buf->st_gid < pred_ptr->args.numinfo.l_val) - return (true); - break; - case COMP_EQ: - if (stat_buf->st_gid == pred_ptr->args.numinfo.l_val) - return (true); - break; - } - return (false); + return compare_num (pred_ptr->args.numinfo.kind, + pred_ptr->args.numinfo.l_val, + stat_buf->st_gid); } bool @@ -496,22 +504,9 @@ pred_inum (const char *pathname, struct stat *stat_buf, struct predicate *pred_p { (void) pathname; - switch (pred_ptr->args.numinfo.kind) - { - case COMP_GT: - if (stat_buf->st_ino > pred_ptr->args.numinfo.l_val) - return (true); - break; - case COMP_LT: - if (stat_buf->st_ino < pred_ptr->args.numinfo.l_val) - return (true); - break; - case COMP_EQ: - if (stat_buf->st_ino == pred_ptr->args.numinfo.l_val) - return (true); - break; - } - return (false); + return compare_num (pred_ptr->args.numinfo.kind, + pred_ptr->args.numinfo.l_val, + stat_buf->st_ino); } bool @@ -529,22 +524,9 @@ pred_links (const char *pathname, struct stat *stat_buf, struct predicate *pred_ { (void) pathname; - switch (pred_ptr->args.numinfo.kind) - { - case COMP_GT: - if (stat_buf->st_nlink > pred_ptr->args.numinfo.l_val) - return (true); - break; - case COMP_LT: - if (stat_buf->st_nlink < pred_ptr->args.numinfo.l_val) - return (true); - break; - case COMP_EQ: - if (stat_buf->st_nlink == pred_ptr->args.numinfo.l_val) - return (true); - break; - } - return (false); + return compare_num (pred_ptr->args.numinfo.kind, + pred_ptr->args.numinfo.l_val, + stat_buf->st_nlink); } bool @@ -908,22 +890,10 @@ pred_size (const char *pathname, struct stat *stat_buf, struct predicate *pred_p (void) pathname; f_val = ((stat_buf->st_size / pred_ptr->args.size.blocksize) + (stat_buf->st_size % pred_ptr->args.size.blocksize != 0)); - switch (pred_ptr->args.size.kind) - { - case COMP_GT: - if (f_val > pred_ptr->args.size.size) - return (true); - break; - case COMP_LT: - if (f_val < pred_ptr->args.size.size) - return (true); - break; - case COMP_EQ: - if (f_val == pred_ptr->args.size.size) - return (true); - break; - } - return (false); + + return compare_num (pred_ptr->args.size.kind, + pred_ptr->args.size.size, + f_val); } bool @@ -1076,22 +1046,9 @@ bool pred_uid (const char *pathname, struct stat *stat_buf, struct predicate *pred_ptr) { (void) pathname; - switch (pred_ptr->args.numinfo.kind) - { - case COMP_GT: - if (stat_buf->st_uid > pred_ptr->args.numinfo.l_val) - return (true); - break; - case COMP_LT: - if (stat_buf->st_uid < pred_ptr->args.numinfo.l_val) - return (true); - break; - case COMP_EQ: - if (stat_buf->st_uid == pred_ptr->args.numinfo.l_val) - return (true); - break; - } - return (false); + return compare_num (pred_ptr->args.numinfo.kind, + pred_ptr->args.numinfo.l_val, + stat_buf->st_uid); } bool -- 2.47.1