changeset 1006:cb23b23a2d8b

Improve commandline parsing, fix some potential bug situations.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 05 Apr 2015 15:35:55 +0300
parents f650ae251d8c
children 53e6bef6707b
files faptool.php msitegen.inc.php
diffstat 2 files changed, 17 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/faptool.php	Sun Mar 29 15:55:54 2015 +0300
+++ b/faptool.php	Sun Apr 05 15:35:55 2015 +0300
@@ -729,7 +729,7 @@
 
 
 // Act according to specified command
-switch (substr(stCArgLC(1), 0, 3))
+switch (stCArgLC(1, 3))
 {
   case "-?": case "--h":
     wtShowHelp();
@@ -810,12 +810,12 @@
     //
     // Entry files handling
     //
-    $mode = substr(stCArgLC(2), 0, 3);
+    $mode = stCArgLC(2, 3);
     switch ($mode)
     {
       case "sta":
       case "lis":
-        $sql = (stCArg(3) != "") ? " AND id=".intval(stCArg(3)) : "";
+        $sql = (stCArg(3) !== FALSE) ? " AND id=".intval(stCArg(3)) : "";
         foreach (stExecSQL("SELECT * FROM compos WHERE cpath <> '' AND cpath IS NOT NULL".$sql) as $compo)
         if (stFetchSQLColumn("SELECT COUNT(*) FROM entries WHERE compo_id=".$compo["id"]) > 0)
         {
@@ -830,7 +830,7 @@
         break;
 
       case "unp":
-        if (($setPrefix = stCArg(3)) == "")
+        if (($setPrefix = stCArg(3)) === FALSE)
           die("Unpack needs a destination path.\n");
 
         foreach (stExecSQL("SELECT * FROM compos WHERE cpath <> '' AND cpath IS NOT NULL") as $compo)
@@ -842,7 +842,7 @@
         break;
 
       case "rel":
-        if (($setPrefix = stCArg(3)) == "")
+        if (($setPrefix = stCArg(3)) === FALSE)
           die("Releases needs a destination path.\n");
 
         if (!file_exists($setPrefix) || is_dir($setPrefix))
@@ -899,14 +899,14 @@
     //
     // Preview files handling
     //
-    $mode = substr(stCArgLC(2), 0, 3);
+    $mode = stCArgLC(2, 3);
     switch ($mode)
     {
       case "gen":
       case "upd":
       case "sta":
       case "lis":
-        $sql = (stCArg(3) != "") ? " AND id=".intval(stCArg(3)) : "";
+        $sql = (stCArg(3) !== FALSE) ? " AND id=".intval(stCArg(3)) : "";
         foreach (stExecSQL("SELECT * FROM compos WHERE cpath <> '' AND cpath IS NOT NULL".$sql) as $compo)
         if (stFetchSQLColumn("SELECT COUNT(*) FROM entries WHERE compo_id=".$compo["id"]) > 0)
         {
--- a/msitegen.inc.php	Sun Mar 29 15:55:54 2015 +0300
+++ b/msitegen.inc.php	Sun Apr 05 15:35:55 2015 +0300
@@ -955,21 +955,27 @@
 }
 
 
-function stCArg($index)
+function stCArg($index, $clip = FALSE)
 {
   global $argc, $argv;
   if ($index < $argc)
-    return $argv[$index];
+  {
+    $str = $argv[$index];
+    return ($clip !== FALSE) ? substr($str, 0, $clip) : $str;
+  }
   else
     return FALSE;
 }
 
 
-function stCArgLC($index)
+function stCArgLC($index, $clip = FALSE)
 {
   global $argc, $argv;
   if ($index < $argc)
-    return strtolower($argv[$index]);
+  {
+    $str = strtolower($argv[$index]);
+    return ($clip !== FALSE) ? substr($str, 0, $clip) : $str;
+  }
   else
     return FALSE;
 }