1 /* 2 * libfdt - Flat Device Tree manipulation 3 * Testcase for string escapes in dtc 4 * Copyright (C) 2006 David Gibson, IBM Corporation. 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public License 8 * as published by the Free Software Foundation; either version 2.1 of 9 * the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, but 12 * WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 #include <stdlib.h> 21 #include <stdio.h> 22 #include <string.h> 23 #include <stdint.h> 24 #include <errno.h> 25 26 #include <libfdt.h> 27 28 #include "tests.h" 29 #include "testdata.h" 30 31 #define CHUNKSIZE 1024 32 33 static char *load_file(const char *name, int *len) 34 { 35 FILE *f; 36 char *buf = NULL; 37 int bufsize = 0, n; 38 39 *len = 0; 40 41 f = fopen(name, "r"); 42 if (!f) 43 FAIL("Couldn't open \"%s\": %s", name, strerror(errno)); 44 45 while (!feof(f)) { 46 if (bufsize < (*len + CHUNKSIZE)) { 47 buf = xrealloc(buf, *len + CHUNKSIZE); 48 bufsize = *len + CHUNKSIZE; 49 } 50 51 n = fread(buf + *len, 1, CHUNKSIZE, f); 52 if (ferror(f)) 53 FAIL("Error reading \"%s\": %s", name, strerror(errno)); 54 *len += n; 55 } 56 57 return buf; 58 } 59 60 int main(int argc, char *argv[]) 61 { 62 void *fdt; 63 char *incbin; 64 int len; 65 66 test_init(argc, argv); 67 68 incbin = load_file("incbin.bin", &len); 69 fdt = load_blob_arg(argc, argv); 70 71 check_getprop(fdt, 0, "incbin", len, incbin); 72 check_getprop(fdt, 0, "incbin-partial", 17, incbin + 13); 73 74 PASS(); 75 } 76