From f23ef1c96859f6b01a9268c8606a22ceb719cf3d Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Fri, 26 Apr 2013 05:26:58 -0400
Subject: [PATCH] Fix error handling in CLI mode, use STDERR and non-empty exit code (#1489043)

---
 bin/updatedb.sh |   20 +++++++-------------
 1 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/bin/updatedb.sh b/bin/updatedb.sh
index 7fa8cce..aeeaf68 100755
--- a/bin/updatedb.sh
+++ b/bin/updatedb.sh
@@ -31,18 +31,15 @@
 ));
 
 if (empty($opts['dir'])) {
-  echo "ERROR: Database schema directory not specified (--dir).\n";
-  exit(1);
+    rcube::raise_error("Database schema directory not specified (--dir).", false, true);
 }
 if (empty($opts['package'])) {
-  echo "ERROR: Database schema package name not specified (--package).\n";
-  exit(1);
+    rcube::raise_error("Database schema package name not specified (--package).", false, true);
 }
 
 // Check if directory exists
 if (!file_exists($opts['dir'])) {
-  echo "ERROR: Specified database schema directory doesn't exist.\n";
-  exit(1);
+    rcube::raise_error("Specified database schema directory doesn't exist.", false, true);
 }
 
 $RC = rcube::get_instance();
@@ -51,8 +48,7 @@
 // Connect to database
 $DB->db_connect('w');
 if (!$DB->is_connected()) {
-    echo "Error connecting to database: " . $DB->is_error() . ".\n";
-    exit(1);
+    rcube::raise_error("Error connecting to database: " . $DB->is_error(), false, true);
 }
 
 // Read DB schema version from database (if 'system' table exists)
@@ -113,8 +109,7 @@
 
 $dir = $opts['dir'] . DIRECTORY_SEPARATOR . $DB->db_provider;
 if (!file_exists($dir)) {
-    echo "DDL Upgrade files for " . $DB->db_provider . " driver not found.\n";
-    exit(1);
+    rcube::raise_error("DDL Upgrade files for " . $DB->db_provider . " driver not found.", false, true);
 }
 
 $dh     = opendir($dir);
@@ -132,13 +127,12 @@
     $error = update_db_schema($opts['package'], $v, $dir . DIRECTORY_SEPARATOR . "$v.sql");
 
     if ($error) {
-        echo "\nError in DDL upgrade $v: $error\n";
-        exit(1);
+        echo "[FAILED]\n";
+        rcube::raise_error("Error in DDL upgrade $v: $error", false, true);
     }
     echo "[OK]\n";
 }
 
-exit(0);
 
 function update_db_schema($package, $version, $file)
 {

--
Gitblit v1.9.1