Something went wrong. Try again.
A breadth-first version of the UNIX find command tavianator.com/projects/bfs.html
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101// Copyright © Tavian Barnes <tavianator@tavianator.com>// SPDX-License-Identifier: 0BSD
/** * The evaluation functions that implement primary expressions like -name, * -print, etc. */
#ifndef BFS_EVAL_H#define BFS_EVAL_H
struct bfs_ctx;struct bfs_expr;
/** * Ephemeral state for evaluating an expression. */struct bfs_eval;
/** * Expression evaluation function. * * @expr * The current expression. * @state * The current evaluation state. * @return * The result of the test. */typedef bool bfs_eval_fn(const struct bfs_expr *expr, struct bfs_eval *state);
/** * Evaluate the command line. * * @ctx * The bfs context to evaluate. * @return * EXIT_SUCCESS on success, otherwise on failure. */int bfs_eval(struct bfs_ctx *ctx);
// Predicate evaluation functions
bool eval_true(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_false(const struct bfs_expr *expr, struct bfs_eval *state);
bool eval_access(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_acl(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_capable(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_context(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_perm(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_xattr(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_xattrname(const struct bfs_expr *expr, struct bfs_eval *state);
bool eval_newer(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_time(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_used(const struct bfs_expr *expr, struct bfs_eval *state);
bool eval_gid(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_uid(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_nogroup(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_nouser(const struct bfs_expr *expr, struct bfs_eval *state);
bool eval_depth(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_empty(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_flags(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_fstype(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_hidden(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_inum(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_links(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_samefile(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_size(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_sparse(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_type(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_xtype(const struct bfs_expr *expr, struct bfs_eval *state);
bool eval_lname(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_name(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_path(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_regex(const struct bfs_expr *expr, struct bfs_eval *state);
bool eval_delete(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_exec(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_exit(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_fls(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_fprint(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_fprint0(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_fprintf(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_fprintx(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_limit(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_prune(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_quit(const struct bfs_expr *expr, struct bfs_eval *state);
// Operator evaluation functionsbool eval_not(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_and(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_or(const struct bfs_expr *expr, struct bfs_eval *state);bool eval_comma(const struct bfs_expr *expr, struct bfs_eval *state);
#endif // BFS_EVAL_H