1*cc7d2833Sskrll /* $NetBSD: incbin.c,v 1.1.1.3 2019/12/22 12:34:07 skrll Exp $ */
2d89652e2Sskrll
3*cc7d2833Sskrll // SPDX-License-Identifier: LGPL-2.1-or-later
4b8ae3907Smacallan /*
5b8ae3907Smacallan * libfdt - Flat Device Tree manipulation
6b8ae3907Smacallan * Testcase for string escapes in dtc
7b8ae3907Smacallan * Copyright (C) 2006 David Gibson, IBM Corporation.
8b8ae3907Smacallan */
9b8ae3907Smacallan #include <stdlib.h>
10b8ae3907Smacallan #include <stdio.h>
11b8ae3907Smacallan #include <string.h>
12b8ae3907Smacallan #include <stdint.h>
13b8ae3907Smacallan #include <errno.h>
14b8ae3907Smacallan
15b8ae3907Smacallan #include <libfdt.h>
16b8ae3907Smacallan
17b8ae3907Smacallan #include "tests.h"
18b8ae3907Smacallan #include "testdata.h"
19b8ae3907Smacallan
20b8ae3907Smacallan #define CHUNKSIZE 1024
21b8ae3907Smacallan
load_file(const char * name,int * len)22b8ae3907Smacallan static char *load_file(const char *name, int *len)
23b8ae3907Smacallan {
24b8ae3907Smacallan FILE *f;
25b8ae3907Smacallan char *buf = NULL;
26b8ae3907Smacallan int bufsize = 0, n;
27b8ae3907Smacallan
28b8ae3907Smacallan *len = 0;
29b8ae3907Smacallan
30b8ae3907Smacallan f = fopen(name, "r");
31b8ae3907Smacallan if (!f)
32b8ae3907Smacallan FAIL("Couldn't open \"%s\": %s", name, strerror(errno));
33b8ae3907Smacallan
34b8ae3907Smacallan while (!feof(f)) {
35b8ae3907Smacallan if (bufsize < (*len + CHUNKSIZE)) {
36b8ae3907Smacallan buf = xrealloc(buf, *len + CHUNKSIZE);
37b8ae3907Smacallan bufsize = *len + CHUNKSIZE;
38b8ae3907Smacallan }
39b8ae3907Smacallan
40b8ae3907Smacallan n = fread(buf + *len, 1, CHUNKSIZE, f);
41b8ae3907Smacallan if (ferror(f))
42b8ae3907Smacallan FAIL("Error reading \"%s\": %s", name, strerror(errno));
43b8ae3907Smacallan *len += n;
44b8ae3907Smacallan }
45b8ae3907Smacallan
46b8ae3907Smacallan return buf;
47b8ae3907Smacallan }
48b8ae3907Smacallan
main(int argc,char * argv[])49b8ae3907Smacallan int main(int argc, char *argv[])
50b8ae3907Smacallan {
51b8ae3907Smacallan void *fdt;
52b8ae3907Smacallan char *incbin;
53b8ae3907Smacallan int len;
54b8ae3907Smacallan
55b8ae3907Smacallan test_init(argc, argv);
56b8ae3907Smacallan
57b8ae3907Smacallan incbin = load_file("incbin.bin", &len);
58b8ae3907Smacallan fdt = load_blob_arg(argc, argv);
59b8ae3907Smacallan
60b8ae3907Smacallan check_getprop(fdt, 0, "incbin", len, incbin);
61b8ae3907Smacallan check_getprop(fdt, 0, "incbin-partial", 17, incbin + 13);
62b8ae3907Smacallan
63b8ae3907Smacallan PASS();
64b8ae3907Smacallan }
65