Mailinglist Archive: opensuse-commit (1206 mails)

< Previous Next >
commit yast2-packager
  • From: root@xxxxxxx (h_root)
  • Date: Tue, 2 May 2006 15:30:24 +0200 (CEST)
  • Message-id: <20060502133024.B73308C568@xxxxxxxxxxxxxxx>

Hello community,

here is the log from the commit of package yast2-packager
checked in at Tue May 2 15:30:24 CEST 2006.

--------
--- yast2-packager/yast2-packager.changes 2006-04-28 09:58:00.000000000 +0200
+++ STABLE/yast2-packager/yast2-packager.changes 2006-05-02 15:09:07.000000000 +0200
@@ -1,0 +2,23 @@
+Tue May 2 15:08:42 CEST 2006 - locilka@xxxxxxx
+
+- Splitting inst_rpmcopy source code into smaller functions
+- Calling first stage installation packages commit limited to first
+ media, unlimited in other cases (such as second stage
+ installation) (#170079)
+- 2.13.106
+
+-------------------------------------------------------------------
+Tue May 2 14:43:30 CEST 2006 - mvidner@xxxxxxx
+
+- Reverted the redirection, ag_background will be changed instead
+ (#169648#c39).
+
+-------------------------------------------------------------------
+Tue May 2 13:11:50 CEST 2006 - mvidner@xxxxxxx
+
+- Redirect rug stdout to null because it can block (#169648).
+- Sometimes rug ping gives the exit code 0xff_ffff_ffff_ffff so
+ declare success if stderr is empty (#170549).
+- 2.13.105
+
+-------------------------------------------------------------------

Old:
----
yast2-packager-2.13.104.tar.bz2

New:
----
yast2-packager-2.13.106.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-packager.spec ++++++
--- /var/tmp/diff_new_pack.9TUZ2t/_old 2006-05-02 15:27:26.000000000 +0200
+++ /var/tmp/diff_new_pack.9TUZ2t/_new 2006-05-02 15:27:26.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-packager (Version 2.13.104)
+# spec file for package yast2-packager (Version 2.13.106)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -11,12 +11,12 @@
# norootforbuild

Name: yast2-packager
-Version: 2.13.104
-Release: 2
+Version: 2.13.106
+Release: 1
License: GPL
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-packager-2.13.104.tar.bz2
+Source0: yast2-packager-2.13.106.tar.bz2
prefix: /usr
BuildRequires: docbook-xsl-stylesheets doxygen gcc-c++ libxcrypt-devel libxslt perl-XML-Writer sgml-skel update-desktop-files yast2 yast2-country yast2-devtools yast2-installation yast2-testsuite yast2-xml
Requires: yast2 yast2-installation checkmedia yast2-country
@@ -41,7 +41,7 @@
Arvin Schnell <arvin@xxxxxxx>

%prep
-%setup -n yast2-packager-2.13.104
+%setup -n yast2-packager-2.13.106

%build
%{prefix}/bin/y2tool y2autoconf
@@ -78,6 +78,20 @@
%doc %{prefix}/share/doc/packages/yast2-packager

%changelog -n yast2-packager
+* Tue May 02 2006 - locilka@xxxxxxx
+- Splitting inst_rpmcopy source code into smaller functions
+- Calling first stage installation packages commit limited to first
+ media, unlimited in other cases (such as second stage
+ installation) (#170079)
+- 2.13.106
+* Tue May 02 2006 - mvidner@xxxxxxx
+- Reverted the redirection, ag_background will be changed instead
+ (#169648#c39).
+* Tue May 02 2006 - mvidner@xxxxxxx
+- Redirect rug stdout to null because it can block (#169648).
+- Sometimes rug ping gives the exit code 0xff_ffff_ffff_ffff so
+ declare success if stderr is empty (#170549).
+- 2.13.105
* Fri Apr 28 2006 - jsuchome@xxxxxxx
- show reasonable error message when rug fails
- 2.13.104

++++++ yast2-packager-2.13.104.tar.bz2 -> yast2-packager-2.13.106.tar.bz2 ++++++
++++ 2970 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-packager-2.13.104/Makefile.am new/yast2-packager-2.13.106/Makefile.am
--- old/yast2-packager-2.13.104/Makefile.am 2006-04-07 11:33:00.000000000 +0200
+++ new/yast2-packager-2.13.106/Makefile.am 2006-05-02 15:10:39.000000000 +0200
@@ -8,6 +8,7 @@

#where devtools are
PREFIX := $(shell pkg-config --print-errors --variable=prefix yast2-devtools)
+Y2TOOL = $(PREFIX)/bin/y2tool

VERSION = $(shell cat $(srcdir)/VERSION)
RPMNAME = $(shell cat $(srcdir)/RPMNAME)
@@ -95,7 +96,7 @@
done

pot:
- y2tool y2makepot -s $(srcdir)
+ $(Y2TOOL) y2makepot -s $(srcdir)

install-pot: pot
@POT_DST=`find -type d -name testsuite -prune , \
@@ -116,7 +117,7 @@
fi

spellcheck: pot
- y2tool pot-spellcheck
+ $(Y2TOOL) pot-spellcheck

# all-local: $(if $(IS_DEVTOOLS),,$(POT_DST))

@@ -143,20 +144,20 @@
rm -f package/*.bak
rm -f package/*.auto
mv $(RPMNAME)-$(VERSION).tar.bz2 package/
- if ! test -x $(PREFIX)/bin/y2tool; then \
- echo "$(PREFIX)/bin/y2tool: not found."; \
+ if ! test -x $(Y2TOOL); then \
+ echo "$(Y2TOOL): not found."; \
echo "You have to install yast2-devtools to making a package"; \
false; \
fi
here=`pwd`; \
cd $(srcdir) && for i in $(RPMNAME)*.spec.in; do \
newname="`echo "$$i" | sed "s/\.in$$//g"`"; \
- $(PREFIX)/bin/y2tool create-spec < $$i > $$here/package/$${newname} ; \
+ $(Y2TOOL) create-spec < $$i > $$here/package/$${newname} ; \
done

-package: check-up-to-date check-tagversion check-all-packages package-local
+package: check-up-to-date check-tagversion check-all-packages check-textdomain package-local

-TAGVERSION = $(PREFIX)/bin/y2tool tagversion
+TAGVERSION = $(Y2TOOL) tagversion

check-up-to-date check-cvs-up-to-date check-svn-up-to-date:
if [ -d $(srcdir)/CVS ]; then \
@@ -199,10 +200,13 @@
false; \
fi

+check-textdomain:
+ $(Y2TOOL) check-textdomain $(srcdir)
+
stable: checkin-stable

checkin-stable: package
- $(PREFIX)/bin/y2tool checkin-stable
+ $(Y2TOOL) checkin-stable


# For po/ modules
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-packager-2.13.104/VERSION new/yast2-packager-2.13.106/VERSION
--- old/yast2-packager-2.13.104/VERSION 2006-04-28 09:51:28.000000000 +0200
+++ new/yast2-packager-2.13.106/VERSION 2006-05-02 15:01:25.000000000 +0200
@@ -1 +1 @@
-2.13.104
+2.13.106
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-packager-2.13.104/configure.in new/yast2-packager-2.13.106/configure.in
--- old/yast2-packager-2.13.104/configure.in 2006-04-07 11:33:00.000000000 +0200
+++ new/yast2-packager-2.13.106/configure.in 2006-05-02 15:10:39.000000000 +0200
@@ -1,9 +1,9 @@
dnl configure.in for yast2-packager
dnl
-dnl -- This file is generated by y2autoconf - DO NOT EDIT! --
+dnl -- This file is generated by y2autoconf 2.13.17 - DO NOT EDIT! --
dnl (edit configure.in.in instead)

-AC_INIT(yast2-packager, 2.13.70, http://www.suse.de/feedback, yast2-packager)
+AC_INIT(yast2-packager, 2.13.106, http://www.suse.de/feedback, yast2-packager)
dnl Check for presence of file 'RPMNAME'
AC_CONFIG_SRCDIR([RPMNAME])

@@ -17,7 +17,7 @@
AM_INIT_AUTOMAKE(tar-ustar) dnl searches for some needed programs

dnl Important YaST2 variables
-VERSION="2.13.70"
+VERSION="2.13.106"
RPMNAME="yast2-packager"
MAINTAINER="Jiri Srain <jsrain@xxxxxxx>"

diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-packager-2.13.104/src/clients/inst_rpmcopy.ycp new/yast2-packager-2.13.106/src/clients/inst_rpmcopy.ycp
--- old/yast2-packager-2.13.104/src/clients/inst_rpmcopy.ycp 2006-04-06 16:01:05.000000000 +0200
+++ new/yast2-packager-2.13.106/src/clients/inst_rpmcopy.ycp 2006-05-02 15:09:34.000000000 +0200
@@ -13,7 +13,7 @@
* Packages module :
* "installed"
*
- * $Id: inst_rpmcopy.ycp 29756 2006-04-05 16:09:06Z mvidner $
+ * $Id: inst_rpmcopy.ycp 30607 2006-05-02 13:09:30Z locilka $
*/

{
@@ -500,54 +500,50 @@
// end of installation source caching functions
// ------------------------------------------------------------------------------------------------------

- Pkg::SetLocale (Language::language);
-
- SlideShow::SetLanguage (Language::language);
-
- // start target, create new rpmdb if none is existing
- // FIXME error checking is missing all around here, initialization could actually fail!
- //Pkg::TargetInit (Installation::destdir, true);
- if(Pkg::TargetInit (Installation::destdir,true) != true)
- {
- // continue-cancel popup
- if(Popup::ContinueCancel(_("Initializing the target directory failed")) == false)
- {
- return `abort;
- }
- }
-
+ // ------------------------------------------------------------------------------------------------------
+ // begin of commit installation functions
+ // ------------------------------------------------------------------------------------------------------

- if (Stage::cont ())
- {
- // initialize the package agent in continue mode
- Packages::Init( true );
- RestoreDiskCacheSettings ();
- }
+ void InstallRemainingAndBinarySource () {
+ // second stage of package installation, re-read list of remaining binary and source
+ // packages

- SlideShow::OpenSlideShowDialog ();
+ list<string> remaining = (list<string>) SCR::Read (.target.ycp, ["/var/lib/YaST2/remaining", []]);
+ if (remaining == nil)
+ remaining = [];

- Pkg::TargetLogfile (Installation::destdir + Directory::logdir + "/y2logRPM");
+ list<string> srcremaining = (list<string>) SCR::Read (.target.ycp, ["/var/lib/YaST2/srcremaining", []]);
+ if (srcremaining == nil)
+ srcremaining = [];

+ string backupPath = (string) SCR::Read(.target.string, [Installation::destdir + "/var/lib/YaST2/backup_path", ""]);
+ if ( backupPath != nil && backupPath != "")
+ {
+ y2milestone("create package backups in %1",backupPath);
+ Pkg::CreateBackups (true);
+ Pkg::SetBackupPath (backupPath);
+ }

- if (Mode::autoinst ()
- && Stage::cont ())
- {
- import "AutoinstSoftware";
+ integer failed_packages = 0;
+ y2milestone ("%1 binary packages remaining", size (remaining));
+ foreach (string pkg, remaining, ``{
+ if (! Pkg::PkgInstall (pkg))
+ failed_packages = failed_packages + 1;
+ });

- // post packages from autoinstall
- map <string, any> res = Pkg::DoProvide (AutoinstSoftware::post_packages);
- if (size (res) > 0)
+ y2milestone ("%1 source packages remaining", size (srcremaining));
+ foreach (string pkg, srcremaining, ``{
+ if (! Pkg::PkgSrcInstall (pkg))
+ failed_packages = failed_packages + 1;
+ });
+ if (failed_packages > 0)
{
- foreach (string s, any a, res, ``{
- y2warning ("Pkg::DoProvide failed for %1: %2", s, a);
- });
+ // error report, %1 is number
+ Report::Error (sformat(_("Failed to select %1 packages for installation"), failed_packages));
}
-
- Pkg::PkgSolve (false);
}

- if (Stage::initial ()) // initial mode, move download area, check for source caching
- {
+ void InstInitAndInitialSourceCaching () {
map spaces = Pkg::TargetGetDU ();
list root_info = spaces["/tmp"]:spaces["/tmp/"]:spaces["/"]:[];
integer total = root_info[0]:0;
@@ -620,83 +616,30 @@
}
}
}
- else // continue mode, check for remaining packages
- {
- // second stage of package installation, re-read list of remaining binary and source
- // packages
-
- list<string> remaining = (list<string>) SCR::Read (.target.ycp, ["/var/lib/YaST2/remaining", []]);
- if (remaining == nil)
- remaining = [];
-
- list<string> srcremaining = (list<string>) SCR::Read (.target.ycp, ["/var/lib/YaST2/srcremaining", []]);
- if (srcremaining == nil)
- srcremaining = [];
-
- string backupPath = (string) SCR::Read(.target.string, [Installation::destdir + "/var/lib/YaST2/backup_path", ""]);
- if ( backupPath != nil && backupPath != "")
- {
- y2milestone("create package backups in %1",backupPath);
- Pkg::CreateBackups (true);
- Pkg::SetBackupPath (backupPath);
- }

- integer failed_packages = 0;
- y2milestone ("%1 binary packages remaining", size (remaining));
- foreach (string pkg, remaining, ``{
- if (! Pkg::PkgInstall (pkg))
- failed_packages = failed_packages + 1;
- });
+ void AutoinstPostPackages () {
+ import "AutoinstSoftware";

- y2milestone ("%1 source packages remaining", size (srcremaining));
- foreach (string pkg, srcremaining, ``{
- if (! Pkg::PkgSrcInstall (pkg))
- failed_packages = failed_packages + 1;
- });
- if (failed_packages > 0)
+ // post packages from autoinstall
+ map <string, any> res = Pkg::DoProvide (AutoinstSoftware::post_packages);
+ if (size (res) > 0)
{
- // error report, %1 is number
- Report::Error (sformat(_("Failed to select %1 packages for installation"), failed_packages));
+ foreach (string s, any a, res, ``{
+ y2warning ("Pkg::DoProvide failed for %1: %2", s, a);
+ });
}
- }
-
- // Install the software from Medium1 to Mediummax, but not the already
- // installed base packages.
- // This part is also used for installation in running system (Stage::cont ())

- integer maxnumbercds = 10;
- integer current_cd_no = 1;
-
- if (Stage::initial ())
- {
- maxnumbercds = 1; // only the first CD will be installed
- }
- else if (Mode::autoinst () && Stage::cont () && size( AutoinstSoftware::post_packages ) > 0)
- {
- // one more compatibility feature to old YaST, post-packages
- // Simply install a list of package after initial installation (only
- // makes sense with nfs installatons)
- current_cd_no = 1;
- }
- else if (Stage::cont ())
- {
- current_cd_no = 2; // continue with second CD but only in continue mode
- }
- else if (DirInstall::installing_into_dir)
- {
- current_cd_no = 1;
+ Pkg::PkgSolve (false);
}

- if (Packages::metadir_used) // all is in ramdisk
- {
- current_cd_no = 0; // we can install all sources now
- maxnumbercds = 0;
- }
+ symbol InstallPackagesFromMedia (integer current_cd_no, integer maxnumbercds) {
+ symbol result = `next;

- symbol result = `next;
+ y2milestone("Installing packages from media %1 -> %2", current_cd_no, maxnumbercds);

- while (current_cd_no <= maxnumbercds)
- {
+ // 1->1 for default fist stage installation
+ // 0->0 for default second stage (or other) installation
+ while (current_cd_no <= maxnumbercds) {
boolean go_on = true;
list<map<string,any> > pkgs = Pkg::ResolvableProperties ("", `package, "");
pkgs = filter (map<string,any> p, pkgs, {
@@ -758,8 +701,107 @@
break;

current_cd_no = current_cd_no + 1;
+ }
+ return result;
+ }
+
+ map <string, integer> CountStartingAndMaxMediaNumber () {
+ // Bugzilla #170079
+ // Default - unrestricted
+ map <string, integer> ret = $["maxnumbercds" : 0, "current_cd_no" : 0];
+
+ if (Stage::initial ()) {
+ // only the first CD will be installed
+ ret["current_cd_no"] = 1;
+ ret["maxnumbercds"] = 1;
+ y2milestone("StartingAndMaxMediaNumber: Stage initial %1/%2", ret["current_cd_no"]:nil, ret["maxnumbercds"]:nil);
+
+ // Four following cases have the same solution, CDstart = 0, CDfinish = 0
+ // ZYPP should solve what it needs and when.
+ // Leaving it here as the backward compatibility if someone decides to change it back.
+
+ } else if (Packages::metadir_used) {
+ // all is in ramdisk, we can install all sources now
+ ret["current_cd_no"] = 0;
+ ret["maxnumbercds"] = 0;
+ y2milestone("StartingAndMaxMediaNumber: MetaDir used %1/%2", ret["current_cd_no"]:nil, ret["maxnumbercds"]:nil);
+ } else if (Mode::autoinst () && Stage::cont () && size( AutoinstSoftware::post_packages ) > 0) {
+ // one more compatibility feature to old YaST, post-packages
+ // Simply install a list of package after initial installation (only
+ // makes sense with nfs installatons)
+ ret["current_cd_no"] = 0; // was 1
+ ret["maxnumbercds"] = 0; // was 10
+ y2milestone("StartingAndMaxMediaNumber: Autoinst in cont %1/%2", ret["current_cd_no"]:nil, ret["maxnumbercds"]:nil);
+ } else if (Stage::cont ()) {
+ // continue with second CD but only in continue mode
+ // bug #170079, let zypp solve needed CDs
+ ret["current_cd_no"] = 0;
+ ret["maxnumbercds"] = 0;
+ y2milestone("StartingAndMaxMediaNumber: Stage cont %1/%2", ret["current_cd_no"]:nil, ret["maxnumbercds"]:nil);
+ } else if (DirInstall::installing_into_dir) {
+ // All in one
+ ret["current_cd_no"] = 0; // was 1
+ ret["maxnumbercds"] = 0; // was 10
+ y2milestone("StartingAndMaxMediaNumber: Dir install %1/%2", ret["current_cd_no"]:nil, ret["maxnumbercds"]:nil);
+ }
}

+ // ------------------------------------------------------------------------------------------------------
+ // end of commit installation functions
+ // ------------------------------------------------------------------------------------------------------
+
+ Pkg::SetLocale (Language::language);
+
+ SlideShow::SetLanguage (Language::language);
+
+ // start target, create new rpmdb if none is existing
+ // FIXME error checking is missing all around here, initialization could actually fail!
+ //Pkg::TargetInit (Installation::destdir, true);
+ if(Pkg::TargetInit (Installation::destdir,true) != true)
+ {
+ // continue-cancel popup
+ if(Popup::ContinueCancel(_("Initializing the target directory failed")) == false)
+ {
+ return `abort;
+ }
+ }
+
+
+ if (Stage::cont ())
+ {
+ // initialize the package agent in continue mode
+ Packages::Init( true );
+ RestoreDiskCacheSettings ();
+ }
+
+ SlideShow::OpenSlideShowDialog ();
+
+ Pkg::TargetLogfile (Installation::destdir + Directory::logdir + "/y2logRPM");
+
+
+ if (Mode::autoinst () && Stage::cont ()) {
+ AutoinstPostPackages();
+ }
+
+ // initial mode, move download area, check for source caching
+ if (Stage::initial ()) {
+ InstInitAndInitialSourceCaching();
+ // continue mode, check for remaining packages
+ } else {
+ InstallRemainingAndBinarySource();
+ }
+
+ // Install the software from Medium1 to Mediummax, but not the already
+ // installed base packages.
+ // This part is also used for installation in running system (Stage::cont ())
+
+ map <string, integer> cdnumbers = CountStartingAndMaxMediaNumber();
+ integer maxnumbercds = cdnumbers["maxnumbercds"]:10;
+ integer current_cd_no = cdnumbers["current_cd_no"]:1;
+
+ // install packages from CD current_cd_no to CD maxnumbercds
+ symbol result = InstallPackagesFromMedia (current_cd_no, maxnumbercds);
+
// sync package manager FIXME
if (result != `abort)
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-packager-2.13.104/src/modules/PackageInstallation.ycp new/yast2-packager-2.13.106/src/modules/PackageInstallation.ycp
--- old/yast2-packager-2.13.104/src/modules/PackageInstallation.ycp 2006-04-26 10:09:05.000000000 +0200
+++ new/yast2-packager-2.13.106/src/modules/PackageInstallation.ycp 2006-05-02 13:34:43.000000000 +0200
@@ -81,6 +81,8 @@
global define list CommitPackages (integer media_number,
integer packages_installed)
{
+ y2milestone("CommitPackages called: media nr. %1, packages %2", media_number, packages_installed);
+
if ( Mode::test () )
{
FakePackager( [],
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/yast2-packager-2.13.104/src/modules/SourceManager.ycp new/yast2-packager-2.13.106/src/modules/SourceManager.ycp
--- old/yast2-packager-2.13.104/src/modules/SourceManager.ycp 2006-04-28 09:50:35.000000000 +0200
+++ new/yast2-packager-2.13.106/src/modules/SourceManager.ycp 2006-05-02 15:07:42.000000000 +0200
@@ -7,7 +7,7 @@
* Martin Vidner <mvidner@xxxxxxx>
* Status: Work in Progress
*
- * $Id: SourceManager.ycp 30549 2006-04-27 14:49:55Z mvidner $
+ * $Id: SourceManager.ycp 30606 2006-05-02 12:46:47Z mvidner $
*
* Representation of the configuration of source-manager.
* Input and output routines.
@@ -773,7 +773,8 @@
* @return map with out, err and ret_code
*/
global map RunDumbTimeout (string command, integer seconds) {
- map ret = RunCommandWithTimeout ("TERM=dumb; " + command + "; exit $?", seconds);
+ // explicit export in case TERM was not in the environment
+ map ret = RunCommandWithTimeout ("export TERM=dumb; " + command + "; exit $?", seconds);
if (ret == nil) ret = $[];
return ret;
}
@@ -803,7 +804,8 @@
string rug_command = "/usr/bin/rug";
map zmd_status = RunLong (rug_command + " ping >/dev/null");
y2milestone("ZMD status: %1, err: %2", zmd_status["exit"]:nil, zmd_status["stderr"]:[]);
- return zmd_status["exit"]:nil == 0;
+ // Argh zis suks so mutch! #170549
+ return zmd_status["exit"]:nil == 0 || zmd_status["stderr"]:[] == [];
}

/**


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...


< Previous Next >