enmasse.c - sbase - suckless unix tools | |
git clone git://git.suckless.org/sbase | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
enmasse.c (919B) | |
--- | |
1 /* See LICENSE file for copyright and license details. */ | |
2 #include <libgen.h> | |
3 #include <stdio.h> | |
4 #include <stdlib.h> | |
5 #include <string.h> | |
6 #include <sys/stat.h> | |
7 #include <unistd.h> | |
8 | |
9 #include "../util.h" | |
10 | |
11 void | |
12 enmasse(int argc, char *argv[], int (*fn)(const char *, const char *, in… | |
13 { | |
14 struct stat st; | |
15 char buf[PATH_MAX], *dir; | |
16 int i, len; | |
17 size_t dlen; | |
18 | |
19 if (argc == 2 && !(stat(argv[1], &st) == 0 && S_ISDIR(st.st_mode… | |
20 fnck(argv[0], argv[1], fn, 0); | |
21 return; | |
22 } else { | |
23 dir = (argc == 1) ? "." : argv[--argc]; | |
24 } | |
25 | |
26 for (i = 0; i < argc; i++) { | |
27 dlen = strlen(dir); | |
28 if (dlen > 0 && dir[dlen - 1] == '/') | |
29 len = snprintf(buf, sizeof(buf), "%s%s", dir, ba… | |
30 else | |
31 len = snprintf(buf, sizeof(buf), "%s/%s", dir, b… | |
32 if (len < 0 || len >= sizeof(buf)) { | |
33 eprintf("%s/%s: filename too long\n", dir, | |
34 basename(argv[i])); | |
35 } | |
36 fnck(argv[i], buf, fn, 0); | |
37 } | |
38 } |