char *val;
} kv;
+typedef struct {
+ const regex_t *regex;
+ const char *str;
+} fltrexp_t;
+
/*
* Settings
* NOTE: update default values if changing order
static void sigint_handler(int sig)
{
+ (void) sig;
+
interrupted = TRUE;
}
return r;
}
-static int visible_re(regex_t *regex, const char *fname, const char *fltr)
+static int visible_re(const fltrexp_t *fltrexp, const char *fname)
{
- return regexec(regex, fname, 0, NULL, 0) == 0;
+ return regexec(fltrexp->regex, fname, 0, NULL, 0) == 0;
}
-static int visible_str(regex_t *regex, const char *fname, const char *fltr)
+static int visible_str(const fltrexp_t *fltrexp, const char *fname)
{
- return strcasestr(fname, fltr) != NULL;
+ return strcasestr(fname, fltrexp->str) != NULL;
}
-static int (*filterfn)(regex_t *regex, const char *fname, const char *fltr) = &visible_re;
+static int (*filterfn)(const fltrexp_t *fltr, const char *fname) = &visible_re;
static int entrycmp(const void *va, const void *vb)
{
static int fill(const char *fltr, regex_t *re)
{
int count = 0;
+ fltrexp_t fltrexp = { .regex = re, .str = fltr };
for (; count < ndents; ++count) {
- if (filterfn(re, dents[count].name, fltr) == 0) {
+ if (filterfn(&fltrexp, dents[count].name) == 0) {
if (count != --ndents) {
swap_ent(count, ndents);
--count;
/*
* Follows the stat(1) output closely
*/
-static bool show_stats(const char *fpath, const char *fname, const struct stat *sb)
+static bool show_stats(const char *fpath, const struct stat *sb)
{
int fd;
char *p, *begin = g_buf;
static int sum_bsizes(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf)
{
+ (void) fpath;
+ (void) ftwbuf;
+
if (sb->st_blocks && (typeflag == FTW_F || typeflag == FTW_D))
ent_blocks += sb->st_blocks;
static int sum_sizes(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf)
{
+ (void) fpath;
+ (void) ftwbuf;
+
if (sb->st_size && (typeflag == FTW_F || typeflag == FTW_D))
ent_blocks += sb->st_size;
break;
mkpath(path, dents[cur].name, newpath);
- if (lstat(newpath, &sb) == -1 || !show_stats(newpath, dents[cur].name, &sb)) {
+ if (lstat(newpath, &sb) == -1 || !show_stats(newpath, &sb)) {
printwarn(&presel);
goto nochange;
}