1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
--- fts.orig/fts.c
+++ fts/fts.c
@@ -31,6 +31,10 @@
* SUCH DAMAGE.
*/
+#define alignof(TYPE) ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2)
+#define ALIGNBYTES (alignof(long double) - 1)
+#define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) & ~ALIGNBYTES)
+
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94";
#endif /* LIBC_SCCS and not lint */
@@ -652,10 +656,10 @@
if (!ISSET(FTS_SEEDOT) && ISDOT(dp->d_name))
continue;
- if ((p = fts_alloc(sp, dp->d_name, (int)dp->d_namlen)) == NULL)
+ if ((p = fts_alloc(sp, dp->d_name, (int)dp->d_reclen)) == NULL)
goto mem1;
- if (dp->d_namlen > maxlen) {
- if (fts_palloc(sp, (size_t)dp->d_namlen)) {
+ if (dp->d_reclen > maxlen) {
+ if (fts_palloc(sp, (size_t)dp->d_reclen)) {
/*
* No more memory for path or structures. Save
* errno, free up the current structure and the
@@ -675,7 +679,7 @@
maxlen = sp->fts_pathlen - sp->fts_cur->fts_pathlen - 1;
}
- p->fts_pathlen = len + dp->d_namlen + 1;
+ p->fts_pathlen = len + dp->d_reclen + 1;
p->fts_parent = sp->fts_cur;
p->fts_level = level;
@@ -784,7 +788,7 @@
/* If user needs stat info, stat buffer already allocated. */
sbp = ISSET(FTS_NOSTAT) ? &sb : p->fts_statp;
-#ifdef DT_WHT
+#ifdef S_IFWHT
/*
* Whited-out files don't really exist. However, there's stat(2) file
* mask for them, so we set it so that programs (i.e., find) don't have
|