Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/tools/test/stress2/testcases/fts/fts.c
39566 views
1
/*-
2
* Copyright (c) 2008 Peter Holm <[email protected]>
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
*
14
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24
* SUCH DAMAGE.
25
*
26
*/
27
28
/* Directory scan */
29
30
#include <sys/param.h>
31
#include <err.h>
32
#include <errno.h>
33
#include <fts.h>
34
#include <libutil.h>
35
#include <stdint.h>
36
#include <stdio.h>
37
#include <stdlib.h>
38
#include <string.h>
39
#include <unistd.h>
40
41
#include "stress.h"
42
43
int
44
setup(int nb __unused)
45
{
46
return (0);
47
}
48
49
void
50
cleanup(void)
51
{
52
}
53
54
int
55
test(void)
56
{
57
58
FTS *fts;
59
FTSENT *p;
60
int ftsoptions;
61
char *args[2] = {NULL, NULL};
62
63
ftsoptions = FTS_LOGICAL;
64
args[0] = strdup(".");
65
66
if ((fts = fts_open(args, ftsoptions, NULL)) == NULL)
67
err(1, "fts_open");
68
69
while ((p = fts_read(fts)) != NULL && done_testing == 0) {
70
if (op->verbose > 2)
71
(void) printf("%s\n", p->fts_path);
72
switch (p->fts_info) {
73
case FTS_F: /* Ignore. */
74
break;
75
case FTS_D: /* Ignore. */
76
break;
77
case FTS_DP:
78
break;
79
case FTS_DC: /* Ignore. */
80
break;
81
case FTS_SL: /* Ignore. */
82
break;
83
case FTS_SLNONE: /* Ignore. */
84
break;
85
case FTS_DNR: /* Warn, continue. */
86
case FTS_ERR:
87
case FTS_NS:
88
case FTS_DEFAULT:
89
if (op->verbose > 1)
90
warnx("%s: %s", p->fts_path, strerror(p->fts_errno));
91
break;
92
default:
93
printf("%s: default, %d\n", getprogname(), p->fts_info);
94
break;
95
}
96
}
97
98
if (fts_close(fts) == -1)
99
err(1, "fts_close()");
100
101
return (0);
102
}
103
104