diff options
Diffstat (limited to 'it.class')
| -rw-r--r-- | it.class | 11 | 
1 files changed, 6 insertions, 5 deletions
| @@ -275,8 +275,9 @@ function filter_keys($array, $keys)  /** - * Construct shell command, log it, execute it and return output as string. Options ONLY allowed in assoc arrays - * @param varargs: scalars for cmd and arguments, assoc arrays to specify opts and opt values, "-q"=>true for opts without args + * Construct shell command, log it, execute it and return output as string. Options ONLY allowed in assoc arrays. + * First scalar (usually command name) is not quoted, option names are not quoted (but option values are). + * @param varargs: scalars for cmd and arguments, assoc arrays to specify opts and opt values, '-q' => true for opts without args   * @return output of command. shell errors not detectable, see error_log in /www/server/logs   */  function exec(/* ... */) @@ -291,11 +292,11 @@ function exec(/* ... */)  			if (it::match('^-', $val))  				it::fatal("leading - in value");  			else if ($val === true || $val === false || $val === null) -				$parts[] = $val ? escapeshellarg($key) : ""; +				$parts[] = $val ? $key : "";  			else if (is_int($key)) -				$parts[] = escapeshellarg($val); +				$parts[] = $parts ? escapeshellarg($val) : $val;  			else -				$parts[] = escapeshellarg($key) . " " . escapeshellarg($val); +				$parts[] = "$key " . escapeshellarg($val);  		}  	} |