404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.143.236.11: ~ $
/*
 * (C) Copyright David Gibson <dwg@au1.ibm.com>, IBM Corporation.  2005.
 *
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
 *                                                                   USA
 */

#include "dtc.h"

#include <dirent.h>
#include <sys/stat.h>

static struct node *read_fstree(const char *dirname)
{
	DIR *d;
	struct dirent *de;
	struct stat st;
	struct node *tree;

	d = opendir(dirname);
	if (!d)
		die("Couldn't opendir() \"%s\": %s\n", dirname, strerror(errno));

	tree = build_node(NULL, NULL);

	while ((de = readdir(d)) != NULL) {
		char *tmpname;

		if (streq(de->d_name, ".")
		    || streq(de->d_name, ".."))
			continue;

		tmpname = join_path(dirname, de->d_name);

		if (lstat(tmpname, &st) < 0)
			die("stat(%s): %s\n", tmpname, strerror(errno));

		if (S_ISREG(st.st_mode)) {
			struct property *prop;
			FILE *pfile;

			pfile = fopen(tmpname, "rb");
			if (! pfile) {
				fprintf(stderr,
					"WARNING: Cannot open %s: %s\n",
					tmpname, strerror(errno));
			} else {
				prop = build_property(xstrdup(de->d_name),
						      data_copy_file(pfile,
								     st.st_size));
				add_property(tree, prop);
				fclose(pfile);
			}
		} else if (S_ISDIR(st.st_mode)) {
			struct node *newchild;

			newchild = read_fstree(tmpname);
			newchild = name_node(newchild, xstrdup(de->d_name));
			add_child(tree, newchild);
		}

		free(tmpname);
	}

	closedir(d);
	return tree;
}

struct dt_info *dt_from_fs(const char *dirname)
{
	struct node *tree;

	tree = read_fstree(dirname);
	tree = name_node(tree, "");

	return build_dt_info(DTSF_V1, NULL, tree, guess_boot_cpuid(tree));
}

Filemanager

Name Type Size Permission Actions
include-prefixes Folder 0755
libfdt Folder 0755
.gitignore File 54 B 0644
Makefile File 1.04 KB 0644
Makefile.dtc File 372 B 0644
checks.c File 36.29 KB 0644
data.c File 5.13 KB 0644
dt_to_config File 40.86 KB 0755
dtc-lexer.l File 6.71 KB 0644
dtc-lexer.lex.c_shipped File 59 KB 0644
dtc-parser.tab.c_shipped File 70.87 KB 0644
dtc-parser.tab.h_shipped File 3.13 KB 0644
dtc-parser.y File 9.81 KB 0644
dtc.c File 9.34 KB 0644
dtc.h File 8.3 KB 0644
dtx_diff File 8.43 KB 0755
fdtdump.c File 3.67 KB 0644
fdtget.c File 8.58 KB 0644
fdtput.c File 8.35 KB 0644
flattree.c File 22.15 KB 0644
fstree.c File 2.23 KB 0644
livetree.c File 20.13 KB 0644
srcpos.c File 6.83 KB 0644
srcpos.h File 3.54 KB 0644
treesource.c File 6.01 KB 0644
update-dtc-source.sh File 2.65 KB 0755
util.c File 9.4 KB 0644
util.h File 7.65 KB 0644
version_gen.h File 42 B 0644