Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/openzfs/tests/zfs-tests/cmd/file/file_check.c
48677 views
1
// SPDX-License-Identifier: CDDL-1.0
2
/*
3
* CDDL HEADER START
4
*
5
* The contents of this file are subject to the terms of the
6
* Common Development and Distribution License (the "License").
7
* You may not use this file except in compliance with the License.
8
*
9
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10
* or https://opensource.org/licenses/CDDL-1.0.
11
* See the License for the specific language governing permissions
12
* and limitations under the License.
13
*
14
* When distributing Covered Code, include this CDDL HEADER in each
15
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16
* If applicable, add the following below this CDDL HEADER, with the
17
* fields enclosed by brackets "[]" replaced with your own identifying
18
* information: Portions Copyright [yyyy] [name of copyright owner]
19
*
20
* CDDL HEADER END
21
*/
22
23
/*
24
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
25
* Use is subject to license terms.
26
*/
27
28
#include "file_common.h"
29
30
static unsigned char bigbuffer[BIGBUFFERSIZE];
31
32
/*
33
* Given a filename, check that the file consists entirely
34
* of a particular pattern. If the pattern is not specified a
35
* default will be used. For default values see file_common.h
36
*/
37
int
38
main(int argc, char **argv)
39
{
40
int bigfd;
41
long i, n;
42
unsigned char fillchar = DATA;
43
int bigbuffersize = BIGBUFFERSIZE;
44
45
/*
46
* Validate arguments
47
*/
48
if (argc < 2) {
49
(void) printf("Usage: %s filename [pattern]\n",
50
argv[0]);
51
exit(1);
52
}
53
54
if (argv[2]) {
55
fillchar = atoi(argv[2]);
56
}
57
58
/*
59
* Read the file contents and check every character
60
* against the supplied pattern. Abort if the
61
* pattern check fails.
62
*/
63
if ((bigfd = open(argv[1], O_RDONLY)) == -1) {
64
(void) printf("open %s failed %d\n", argv[1], errno);
65
exit(1);
66
}
67
68
do {
69
if ((n = read(bigfd, &bigbuffer, bigbuffersize)) == -1) {
70
(void) printf("read failed (%ld), %d\n", n, errno);
71
exit(errno);
72
}
73
74
for (i = 0; i < n; i++) {
75
if (bigbuffer[i] != fillchar) {
76
(void) printf("error %s: 0x%x != 0x%x)\n",
77
argv[1], bigbuffer[i], fillchar);
78
exit(1);
79
}
80
}
81
} while (n == bigbuffersize);
82
83
return (0);
84
}
85
86