4 * Generated <?php echo date("Y-m-d H:i"),"\n"; ?>
8 $lines = file($argv[1]);
12 $lStack = array( array("",array()) );
13 foreach($lines as $line)
16 if(preg_match('/^Dir\s+"([^"]+)"\s+{$/', $line, $matches))
18 $new = array($matches[1], array());
19 array_push($lStack, $new);
26 $lStack[$lDepth][1][] = array_pop($lStack);
29 if(preg_match('/^File\s+"([^"]+)"\s+"([^"]+)"$/', $line, $matches))
31 $lStack[$lDepth][1][] = array($matches[1], $matches[2]);
38 return "0x".str_pad( dechex(ord(fgetc($fp))), 2, "0", STR_PAD_LEFT );
41 function ProcessFolder($prefix, $items)
43 foreach($items as $i=>$item)
45 if(is_array($item[1])) {
47 ProcessFolder("{$prefix}_{$i}", $item[1]);
49 echo "tInitRD_File {$prefix}_{$i}_entries[] = {\n";
50 foreach($item[1] as $j=>$child)
53 echo "\t{\"".addslashes($child[0])."\",&{$prefix}_{$i}_{$j}}";
57 $size = count($item[1]);
59 tVFS_Node {$prefix}_{$i} = {
61 .ACLs = &gVFS_ACL_EveryoneRX,
62 .Flags = VFS_FFLAG_DIRECTORY,
64 .ImplPtr = {$prefix}_{$i}_entries,
65 .ReadDir = InitRD_ReadDir,
66 .FindDir = InitRD_FindDir
72 $size = filesize($item[1]);
74 echo "Uint8 {$prefix}_{$i}_data[] = {\n";
75 $fp = fopen($item[1], "rb");
76 for( $j = 0; $j + 16 < $size; $j += 16 )
79 echo hd($fp),",",hd($fp),",";
80 echo hd($fp),",",hd($fp),",";
81 echo hd($fp),",",hd($fp),",";
82 echo hd($fp),",",hd($fp),",";
83 echo hd($fp),",",hd($fp),",";
84 echo hd($fp),",",hd($fp),",";
85 echo hd($fp),",",hd($fp),",";
86 echo hd($fp),",",hd($fp),",\n";
89 for( ; $j < $size; $j ++ )
91 if( $j & 15 ) echo ",";
97 tVFS_Node {$prefix}_{$i} = {
99 .ACLs = &gVFS_ACL_EveryoneRX,
102 .ImplPtr = {$prefix}_{$i}_data,
103 .Read = InitRD_ReadFile
111 ProcessFolder("gInitRD_Files", $lStack[0][1]);
113 echo "tInitRD_File gInitRD_Root_Files[] = {\n";
114 foreach($lStack[0][1] as $j=>$child)
117 echo "\t{\"".addslashes($child[0])."\",&gInitRD_Files_{$j}}";
121 tVFS_Node gInitRD_RootNode = {
123 .ACLs = &gVFS_ACL_EveryoneRX,
124 .Flags = VFS_FFLAG_DIRECTORY,
125 .Size = <?php echo count($lStack[0][1]);?>,
126 .ImplPtr = gInitRD_Root_Files,
127 .ReadDir = InitRD_ReadDir,
128 .FindDir = InitRD_FindDir