/* See LICENSE file for copyright and license details. */ #include #include struct history { struct history *prev; dev_t dev; ino_t ino; }; struct recursor { void (*fn)(const char *, struct stat *st, void *, struct recursor *); struct history *hist; int depth; int maxdepth; int follow; int flags; }; enum { SAMEDEV = 1 << 0, DIRFIRST = 1 << 1, SILENT = 1 << 2, }; extern int cp_aflag; extern int cp_fflag; extern int cp_pflag; extern int cp_rflag; extern int cp_vflag; extern int cp_follow; extern int cp_status; extern int rm_fflag; extern int rm_rflag; extern int rm_status; extern int recurse_status; void recurse(const char *, void *, struct recursor *); int cp(const char *, const char *, int); void rm(const char *, struct stat *st, void *, struct recursor *);