summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Bruederli <thomas@roundcube.net>2012-06-13 10:49:41 +0200
committerThomas Bruederli <thomas@roundcube.net>2012-06-13 10:49:41 +0200
commit5218701a4ac1507c472c2bddaca9941f4a4af1d7 (patch)
treee864c1c30bb873c0925df2df2689afd909783d12
parent2950ce49eff42eb08cd4363975a3292692cbccd8 (diff)
Improve getopt feature for command line scripts
-rw-r--r--program/include/clisetup.php34
1 files changed, 18 insertions, 16 deletions
diff --git a/program/include/clisetup.php b/program/include/clisetup.php
index c947570f2..039020bdc 100644
--- a/program/include/clisetup.php
+++ b/program/include/clisetup.php
@@ -5,7 +5,7 @@
| program/include/clisetup.php |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2010, The Roundcube Dev Team |
+ | Copyright (C) 2010-2012, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -31,27 +31,29 @@ require_once INSTALL_PATH . 'program/include/iniset.php';
/**
* Parse commandline arguments into a hash array
*/
-function get_opt($aliases=array())
+function get_opt($aliases = array())
{
$args = array();
- for ($i=1; $i<count($_SERVER['argv']); $i++)
- {
+ for ($i=1; $i < count($_SERVER['argv']); $i++) {
$arg = $_SERVER['argv'][$i];
- if (substr($arg, 0, 2) == '--')
- {
+ $value = true;
+ $key = null;
+
+ if ($arg[0] == '-') {
+ $key = preg_replace('/^-+/', '', $arg);
$sp = strpos($arg, '=');
- $key = substr($arg, 2, $sp - 2);
- $value = substr($arg, $sp+1);
- }
- else if ($arg{0} == '-')
- {
- $key = substr($arg, 1);
- $value = $_SERVER['argv'][++$i];
+ if ($sp > 0) {
+ $key = substr($key, 0, $sp - 2);
+ $value = substr($arg, $sp+1);
+ }
+ else if (strlen($_SERVER['argv'][$i+1]) && $_SERVER['argv'][$i+1][0] != '-') {
+ $value = $_SERVER['argv'][++$i];
+ }
+
+ $args[$key] = is_string($value) ? preg_replace(array('/^["\']/', '/["\']$/'), '', $value) : $value;
}
else
- continue;
-
- $args[$key] = preg_replace(array('/^["\']/', '/["\']$/'), '', $value);
+ $args[] = $arg;
if ($alias = $aliases[$key])
$args[$alias] = $args[$key];