More code refactoring, renamed some files.
authorMarty Connor <mdc@etherboot.org>
Sat, 15 Aug 2009 17:36:05 +0000 (13:36 -0400)
committerMarty Connor <mdc@etherboot.org>
Sat, 15 Aug 2009 17:36:05 +0000 (13:36 -0400)
while -> foreach in a number of places.

bottom.php
build.php
customize-flags.php [moved from flags.php with 89% similarity]
flag-table.php [moved from flag_table.php with 96% similarity]
index.php
utils.php [moved from configinfo.php with 72% similarity]

index f287b93..bac576a 100644 (file)
@@ -7,7 +7,7 @@ Helpful information for users downloading images
 <hr>\r
 \r
 <h4>\r
-Notes:\r
+Resources:\r
 </h4>\r
 \r
 <ul>\r
@@ -27,9 +27,9 @@ Notes:
   </li>\r
     \r
   <li>\r
-    For Email-based support for gPXE please join the \r
+    For Email-based support for gPXE please join  \r
     <a href="http://etherboot.org/wiki/mailinglists" target="_blank">\r
-    project mailing lists.</a>\r
+    Etherboot Project mailing lists.</a>\r
     <br><br>\r
   </li>\r
 \r
index 92e04ac..7afadd2 100644 (file)
--- a/build.php
+++ b/build.php
@@ -4,7 +4,7 @@
 if ( $_GET['A'] == "Configure" ) {
 
     // Enable  more extensive customization of options
-    require_once "flags.php";
+    require_once "customize-flags.php";
        
     exit ();
 
@@ -48,7 +48,7 @@ if ( $_GET['A'] == "Configure" ) {
 // OK, we're going to try to use whatever options have been set
 // to build an image.
 
-require_once "configinfo.php";
+require_once "config-info.php";
 
 $flags = get_flags ();
 
@@ -59,22 +59,17 @@ $flags = get_flags ();
 
 // Make temporary copy of src directory
 $dir = mktempcopy ( "$src_dir", "/tmp" );
+$config_dir = $dir . "/config";
 
-// For debugging
+// Or, for debugging, we can define our own source tree.
 // $dir = "/var/romtmp/src";
 
-// Create a config.h file for this build
-write_config_file ( "$dir/config.h", "all", $flags );
-// exec ( "/bin/touch '$dir/config.h' 2>&1", $touchtxt, $status );
-
-// (debug) show flags
-// echo "<p>Flags: </p>";
-// showflags ( $flags );
-// exit ();
-
-$nicfile = get_nicfile();
+$nicfile     = get_nicfile();
 $nicfilename = "gpxe-$version-$nicfile";
-$target = "bin/$nicfile";
+$target      = "bin/$nicfile";
+
+// Write config files
+write_gpxe_config_files ( $config_dir, $flags );
 
 // Make the requested image.  $status is set to 0 on success
 exec ( "make -C '$dir' '$target' 2>&1", $maketxt, $status );
@@ -83,7 +78,6 @@ exec ( "make -C '$dir' '$target' 2>&1", $maketxt, $status );
 //echo "<blockquote>"."<pre>";
 //echo htmlentities ( implode("\n", $maketxt ) );
 //echo "</pre>"."</blockquote>";
-// Kill the temporary directory
 //deltempdir ( $dir );
 //exit ();
 
similarity index 89%
rename from flags.php
rename to customize-flags.php
index 3d2c337..aa7dbdd 100644 (file)
--- a/flags.php
@@ -1,12 +1,13 @@
 <?php // -*- Mode: PHP; -*-
 
-require_once "configinfo.php";
+require_once "config-info.php";
 
 $nics = get_nics();
 $flags = get_flags();
 $nicfile = get_nicfile();
 $arch = cleanstring($_GET['arch']);
 
+// Begin html output
 include_once $top_inc;
 
 ?>
@@ -28,9 +29,13 @@ include_once $top_inc;
 ?>
 
 <h3>
-Make configuration changes and press <? echo $build ?> <br>
-to generate and download the ROM image, or <? echo $restart ?> <br>
-to return to the main page.
+<ul>
+<li>
+Make configuration changes and press <? echo $build ?> to generate and download an image,
+</li>
+<li>
+Or press <? echo $restart ?> to return to the main page.
+</li>
 </h3>
 
 <p></p>
similarity index 96%
rename from flag_table.php
rename to flag-table.php
index 985e0af..a13d052 100644 (file)
@@ -382,21 +382,22 @@ function init_flag_tables ()
 {
     global $flag_table;
 
-    reset($flag_table);
     $i = 1;
-    while ( list ( $key, $props ) = each ( $flag_table ) ) {
-       $is = ( string ) $i;
 
-       if ( $i < 10 )
-           $is = "0" . $is;
+    foreach ( $flag_table as $key => $props ) {
 
-        $props["code"] = $is;
-       $props["flag"] = $key;
+               $is = ( string ) $i;
 
-        $flag_table[$key] = $props;
-       $flag_codes[$is] = $props;
+               if ( $i < 10 )
+                   $is = "0" . $is;
+
+           $props["code"] = $is;
+               $props["flag"] = $key;
+
+           $flag_table[$key] = $props;
+               $flag_codes[$is] = $props;
        
-       $i = $i + 1;
+               $i = $i + 1;
     }
 }
 
index ecda2fa..2a8e3aa 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1,13 +1,14 @@
 <?php // -*- Mode: PHP; -*-
 
-  require_once "configinfo.php";
+require_once "config-info.php";
 
-  $nics = get_nics();
-  $flags = get_flags();
-  $encoded_flags = encode_flags ( $flags );
+$families = get_families ();
+$nics = get_nics ();
+$flags = get_flags ();
+$encoded_flags = encode_flags ( $flags );
 
-  // Begin html output
-  include_once $top_inc;
+// Begin html output
+include_once $top_inc;
 
 ?>
 
@@ -26,14 +27,14 @@ To create a gPXE image:
 
 <li>
 
-  Choose output format: <? echo keys_menubox("ofmt", $ofmts, isset($_GET['ofmt']) ? $_GET['ofmt'] : "") ?>
+  Choose an output format: <? echo keys_menubox("ofmt", $ofmts, isset($_GET['ofmt']) ? $_GET['ofmt'] : "") ?>
   <br><br>
   
 </li>
 
 <li>
 
-  Choose NIC type: <? echo keys_menubox("nic", $nics, isset($_GET['nic']) ? $_GET['nic'] : "") ?>
+  Choose a NIC type: <? echo keys_menubox("nic", $families, isset($_GET['nic']) ? $_GET['nic'] : "") ?>
   <br><br>
 
   PCI IDs for available NICs are documented
similarity index 72%
rename from configinfo.php
rename to utils.php
index 249c3ce..7d3492d 100644 (file)
+++ b/utils.php
@@ -1,6 +1,6 @@
 <? // -*- Mode: PHP; -*-
 
-require_once "flag_table.php";
+require_once "flag-table.php";
 
 // Some debugging calls:
 // dump_flag_table ();
@@ -16,20 +16,20 @@ include_once "local-config.php";
 
 // echo "$version<br>"; exit ();
 
-function value_key ($ofmt
+function value_key ( $ofmt 
 {
-       // Here we decide which $flag_table key is associated with
-       // the variable we want to retrieve.  The reason for this is
-       // that we might want to return a different value based on 
-       // what kind of build we are doing.  In particular, if we ever
-       // Support EFI or LinuxBIOS builds, we might want to return
-       // different values than for PC BIOS builds. In which 
-       // case we could do someting like:
+        // Here we decide which $flag_table key is associated with
+        // the variable we want to retrieve.  The reason for this is
+        // that we might want to return a different value based on 
+        // what kind of build we are doing.  In particular, if we ever
+        // Support EFI or LinuxBIOS builds, we might want to return
+        // different values than for PC BIOS builds. In which 
+        // case we could do someting like:
     //    return (strpos ($ofmt, "LinuxBIOS" ) === false 
-    //           ? "value" : "valuelnx" );
+    //            ? "value" : "valuelnx" );
 
-       // For now, we return the key "value", since that is the 
-       // slot that contains the usual value associated with this key
+        // For now, we return the key "value", since that is the 
+        // slot that contains the usual value associated with this key
     return ( "value" );
 }
 
@@ -80,7 +80,7 @@ function get_nics ()
             settype ( $rom, "string" );
 
             if ( $pci_ids == "-" ) 
-                               $pci_ids = "";
+                                $pci_ids = "";
 
             $fam_name = substr ( $family, strrpos ( $family, "/" ) + 1, 
                          strlen ( $family ) - strrpos ( $family, "/" ) + 1 );
@@ -88,7 +88,7 @@ function get_nics ()
 
             // * Kludge - fix incoming $nic if any.
             if ( $nic == $rom ) 
-                               $nic = $option;
+                                $nic = $option;
 
             // ISA drivers are per-family, PCI are per-ROM. If ever decide
             // to cache the drivers, can use this key.
@@ -105,6 +105,45 @@ function get_nics ()
     return( $nics );
 }
 
+function get_families () 
+{
+    global $version, $src_dir;
+
+    $nic = ( isset ( $_GET['nic'] ) ? $_GET['nic'] : '' );
+
+    $fd = fopen( "$src_dir/bin/NIC", "r" );
+
+    if ( $fd < 1 ) {
+        trigger_error ( "Missing NIC Config Info" );
+        exit ();
+    }
+
+    $families = array ();
+    $family = "";
+
+    while ( !feof ( $fd ) ) {
+
+        $line = trim ( fgets ( $fd, 200 ) );
+
+        if ( strpos ( $line, "family" ) === 0 ) {
+
+            list ( $dummy, $family ) = split( "[ \t]+", $line );
+            $fam_name = substr ( $family, strrpos ( $family, "/" ) + 1, 
+                         strlen ( $family ) - strrpos ( $family, "/" ) + 1 );
+            settype ( $family, "string" );
+            
+            $families[$fam_name] = $fam_name;
+        }
+    }
+    fclose ( $fd );
+
+    // Add special cases
+    $families["all-drivers"] = "gpxe";
+        
+    ksort ( $families );
+    return ( $families );
+}
+
 function get_nicfile () 
 {
     global $ofmts;
@@ -117,8 +156,8 @@ function get_nicfile ()
 
     $rom = ( $n > 0 ? 
          substr ( $nic, strpos ( $nic, ":" ) + 1, 
-              $n - ( strlen ( $family ) + 1 ) ) :  
-         $family );
+                 $n - ( strlen ( $family ) + 1 ) ) :  
+                  $family );
 
     $ftype = $ofmts[$ofmt];
     if ( $ftype == "" ) $ftype = "dsk"; 
@@ -166,9 +205,9 @@ function textbox ( $flag, $value, $size )
 function menubox ( $name, $options, $value ) 
 {
     $s="<select name=\"$name\">";
-    reset ( $options );
 
-    while ( list ( $ignore, $option ) = each ( $options ) ) {
+       foreach ( $options as $ignore => $option ) {
+        if ( !$value ) $value = $option;
         $s .= "<option" . ( $option == $value ? " selected>" : ">" ) .
             htmlentities ( $option ) . "</option>";
     }
@@ -178,9 +217,8 @@ function menubox ( $name, $options, $value )
 function keys_menubox ( $name, $options, $value ) 
 {
     $s="<select name=\"$name\">";
-    reset ( $options );
-
-    while ( list ( $option, $ignore ) = each ( $options ) ) {
+    
+    foreach ( $options as $option => $ignore ) {
         if ( !$value ) $value = $option;
         $s .= "<option" . ( $option == $value ? " selected>" : ">" ) .
             htmlentities ( $option ) . "</option>";
@@ -190,15 +228,14 @@ function keys_menubox ( $name, $options, $value )
 
 function encode_flags ( $flags ) 
 {
-       // Encode flags to keep size down, so can use GET's instead of POST's
-       // Note that the value may need to be urlencoded.
+    // Encode flags to keep size down, so can use GET's instead of POST's
+    // Note that the value may need to be urlencoded.
 
     global $flag_table;
 
     $s = "";
-    reset ( $flags );
 
-    while ( list ( $flag, $value ) = each ( $flags ) ) {
+       foreach ( $flags as $flag => $value ) {
         $prop = $flag_table[$flag];
         $type = $prop["type"];
         $s .= $prop["code"];
@@ -269,8 +306,7 @@ function default_flags ()
          ( ( isset ( $nic ) && isset ( $ofmt ) ) || isset ( $nicfile ) ) ) {
         $vkey = value_key($ofmt);
 
-        reset($flag_table);
-        while ( list ( $key, $props ) = each ( $flag_table ) ) {
+               foreach ( $flag_table as $key => $props ) {
 
             $farch = isset ( $props["arch"] ) ? $props["arch"] : "";
 
@@ -292,14 +328,12 @@ function default_flags ()
 function get_flags () 
 {
     global $flag_table;
-    $flags = default_flags();
-
-    // echo "<p>Flags in get_flags(): </p>";
-    // show_flags($flags);
+    $flags = default_flags ();
 
-    reset ( $flag_table );
-    while ( list ( $key, $props ) = each ( $flag_table ) ) {
+    // echo "<p>Flags in get_flags (): </p>";
+    // show_flags ( $flags );
 
+    foreach ( $flag_table as $key => $props ) {
         $flag = $props["flag"];
         if ( isset ( $_GET["$flag"] ) ) {
             $flags[$flag] = $_GET["$flag"];
@@ -317,8 +351,7 @@ function echo_flags ( $flags )
 
     echo "<table>\n";
 
-    reset($flag_table);
-    while ( list ( $index, $props ) = each ( $flag_table ) ) {
+       foreach ( $flag_table as $key => $props ) {
 
         $farch = isset ( $props["arch"] ) ? $props["arch"] : "";
 
@@ -403,17 +436,15 @@ function pprint_flag ( $key, $value )
     } else {
         $s = "#define $key " . cleanstring($value);
     }
-    // print ($s . "<br>" );
-
+    // print ( $s . "<br>" );
+    
     return $s;
 }
 
 function pprint_flags ( $flags ) 
 {
     $s = "";
-    reset ($flags);
-
-    while (list($key, $value) = each($flags)) {
+       foreach ( $flags as $key => $value ) {
         $f = pprint_flag($key, $value);
         if ($f != "" )
             $s .= $f . " ";
@@ -463,25 +494,59 @@ function write_config_file ( $fname, $arch, $flags )
     fclose($fp);
 }
 
-function cleanstring ($s
+function write_gpxe_config_files ( $config_dir, $flags 
 {
-    $len = strlen($s);
-    if ($len > 80) {
-        $s = substr ($s, 0, 80);
+    global $flag_table;
+
+    $cfgsecs = get_cfgsecs ();
+
+    foreach ( $cfgsecs as $cfgsec ) {
+
+        $fname = $config_dir . "/" . $cfgsec . ".h";
+
+        $fp = fopen ( $fname, "wb" );
+        if ( $fp <= 0 ) {
+            die ( "Unable to open $fname file for output!" );
+        }
+
+        $ifdef_secname = "CONFIG_" . strtoupper ( $cfgsec ) . "_H";
+
+        fwrite ( $fp, "#ifndef ${ifdef_secname}\n" );
+        fwrite ( $fp, "#define ${ifdef_secname}\n" );
+        fwrite ( $fp, "#include <config/defaults.h>\n" );
+
+        foreach ( $flags as $key => $value ) {
+            // When the flag matches this section name, write it out
+            if ( $flag_table[$key]["cfgsec"] == $cfgsec ) {
+                fwrite ( $fp, pprint_flag ( $key, $value ) . "\n" );
+            } 
+        }
+        fwrite ( $fp, "#endif /* ${ifdef_secname} */\n" );
+        fclose ( $fp );
     }
-    $s = trim($s);
-    $pos = 0;
+}
+
+function cleanstring ( $s ) 
+{
+    $len = strlen ( $s );
+    if ( $len > 80 ) {
+        $s = substr ( $s, 0, 80 );
+    }
+
+    $s      = trim ( $s );
+    $pos    = 0;
     $result = "";
-    while($pos < $len) {
-        $ltr = ord( ucfirst( $s[$pos]));
-        if ( ($ltr >= ord( "A" )) && ($ltr <= ord( "Z" )) || 
-             ($ltr >= ord( "0" )) && ($ltr <= ord( "9" )) || 
-             ($ltr == ord( "." )) && (strlen($result) > 0) ||
-             ($ltr == ord( "_" )) ||
-             ($ltr == ord( "+" )) ||
-             ($ltr == ord( ":" )) ||
-             ($ltr == ord( "/" )) ||
-             ($ltr == ord( "-" )) ) {
+
+    while ( $pos < $len ) {
+        $ltr = ord ( ucfirst ( $s[$pos] ) );
+        if ( ( $ltr >= ord ( "A" ) ) && ( $ltr <= ord ( "Z" ) ) || 
+             ( $ltr >= ord ( "0" ) ) && ( $ltr <= ord ( "9" ) ) || 
+             ( $ltr == ord ( "." ) ) && ( strlen ( $result ) > 0 ) ||
+             ( $ltr == ord ( "_" ) ) ||
+             ( $ltr == ord ( "+" ) ) ||
+             ( $ltr == ord ( ":" ) ) ||
+             ( $ltr == ord ( "/" ) ) ||
+             ( $ltr == ord ( "-" ) ) ) {
             $result .= $s[$pos];
         }
         $pos++;
@@ -518,7 +583,7 @@ function copydir ( $src, $dst )
 function mktempcopy ( $src, $dst ) 
 {
     if ( $src[0] != "/" ) {
-        $src = dirname($_SERVER['SCRIPT_FILENAME']) . "/" . $src;
+        $src = dirname ( $_SERVER['SCRIPT_FILENAME'] ) . "/" . $src;
     }
 
     $dir = tempnam ( $dst, "ROM" );
@@ -534,7 +599,7 @@ function mktempcopy ( $src, $dst )
     return ( $dir );
 }
 
-function deltempdir ($dir
+function deltempdir ( $dir 
 {
     $dp = opendir ( $dir );
     if ($dp < 1) {
@@ -558,6 +623,8 @@ function deltempdir ($dir)
     }
 }
 
+// Debugging functions
+
 function debug_info () 
 {
     $F = $_GET['F'];
@@ -571,10 +638,9 @@ function debug_info ()
     return $s;
 }
 
-function showflags ($flags
+function showflags ( $flags 
 {
-    reset($flags);
-    while (list ($key, $flag) = each ($flags)) {
+       foreach ( $flags as $key => $flag ) {
         print ( "flag[".$key."]="."\"$flag\""."<br>" );
     }
 }
@@ -582,12 +648,11 @@ function showflags ($flags)
 function dump_flag_table () 
 {
     global $flag_table;
-    reset ( $flag_table );
 
-    while ( list ( $key, $props ) = each ( $flag_table ) ) {
+       foreach ( $flag_table as $key => $props ) {
         print ( "flag_table[" . $key . "] = " . "<br>" );
 
-        while ( list ( $key2, $props2 ) = each ( $props ) ) {
+               foreach ( $props as $key2 => $props2 ) {
             print ( "&nbsp;&nbsp;&nbsp;" . $key2 . " = " . $props2 . "<br>" );
         }
     }
@@ -596,10 +661,10 @@ function dump_flag_table ()
 function dump_flag_table_keys_sorted () 
 {
     global $flag_table;
-    reset ( $flag_table );
+
     ksort ( $flag_table );
 
-    while ( list ( $key, $props ) = each ( $flag_table ) ) {
+    foreach ( $flag_table as $key => $props ) {
         print ( $key . ".html<br>" );
     }
 }
@@ -607,12 +672,11 @@ function dump_flag_table_keys_sorted ()
 function dump_flag_codes () 
 {
     global $flag_codes;
-    reset ( $flag_codes );
 
-    while ( list ( $key, $props ) = each ( $flag_codes ) ) {
+       foreach ( $flag_codes as $key => $props ) {
         print ( "flag_codes[" . $key . "] = " . "<br>" );
 
-        while ( list ( $key2, $props2 ) = each ( $props ) ) {
+               foreach ( $props as $keys2 => $props2 ) {
             print ( "&nbsp;&nbsp;&nbsp;" . $key2 . " = " . $props2 . "<br>" );
         }
     }
@@ -636,23 +700,23 @@ function curPageURL ()
 
 function curDirURL () 
 {
-       $dir = dirname ( $_SERVER['PHP_SELF'] );
+        $dir = dirname ( $_SERVER['PHP_SELF'] );
 
-       if ( $dir == "." || $dir == "/" ) {
-               $dir = "";
-       }
+        if ( $dir == "." || $dir == "/" ) {
+                $dir = "";
+        }
 
-       $isHTTPS = ( isset ( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" );
-       $port = ( isset($_SERVER["SERVER_PORT"] ) && 
-                         ( ( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || 
-                               ( $isHTTPS  && $_SERVER["SERVER_PORT"] != "443" ) ) );
+        $isHTTPS = ( isset ( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" );
+        $port = ( isset($_SERVER["SERVER_PORT"] ) && 
+                          ( ( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || 
+                                ( $isHTTPS  && $_SERVER["SERVER_PORT"] != "443" ) ) );
 
-       $port = ( $port ) ? ':' . $_SERVER["SERVER_PORT"] : '';
+        $port = ( $port ) ? ':' . $_SERVER["SERVER_PORT"] : '';
 
-       $dest = ( $isHTTPS ? 'https://' : 'http://' ) .
-               $_SERVER["SERVER_NAME"] . $dir . "/";
+        $dest = ( $isHTTPS ? 'https://' : 'http://' ) .
+                $_SERVER["SERVER_NAME"] . $dir . "/";
 
-       return $dest;
+        return $dest;
 }
 
 // For emacs: