Home | History | Annotate | Line # | Download | only in tests
      1 /*	$NetBSD: dumptrees.c,v 1.1.1.3 2019/12/22 12:34:07 skrll Exp $	*/
      2 
      3 // SPDX-License-Identifier: GPL-2.0-or-later
      4 /*
      5  * dumptrees - utility for libfdt testing
      6  *
      7  * (C) Copyright David Gibson <dwg (at) au1.ibm.com>, IBM Corporation.  2006.
      8  */
      9 #include <stdio.h>
     10 #include <stdlib.h>
     11 #include <unistd.h>
     12 #include <fcntl.h>
     13 #include <stdint.h>
     14 
     15 #include <libfdt.h>
     16 
     17 #include "testdata.h"
     18 
     19 static struct {
     20 	void *blob;
     21 	const char *filename;
     22 } trees[] = {
     23 #define TREE(name)	{ &name, #name ".dtb" }
     24 	TREE(test_tree1),
     25 	TREE(bad_node_char), TREE(bad_node_format), TREE(bad_prop_char),
     26 	TREE(ovf_size_strings),
     27 	TREE(truncated_property), TREE(truncated_string),
     28 	TREE(truncated_memrsv),
     29 };
     30 
     31 #define NUM_TREES	(sizeof(trees) / sizeof(trees[0]))
     32 
     33 int main(int argc, char *argv[])
     34 {
     35 	int i;
     36 
     37 	for (i = 0; i < NUM_TREES; i++) {
     38 		void *blob = trees[i].blob;
     39 		const char *filename = trees[i].filename;
     40 		int size;
     41 		int fd;
     42 		int ret;
     43 
     44 		size = fdt_totalsize(blob);
     45 
     46 		printf("Tree \"%s\", %d bytes\n", filename, size);
     47 
     48 		fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);
     49 		if (fd < 0)
     50 			perror("open()");
     51 
     52 		ret = write(fd, blob, size);
     53 		if (ret != size)
     54 			perror("write()");
     55 
     56 		close(fd);
     57 	}
     58 	exit(0);
     59 }
     60