summaryrefslogtreecommitdiffstats
path: root/main/fts/fts-uclibc.patch
blob: 3593530396f8559bbf683b1ae979a5b5dd27fdb8 (plain)
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