Hello community,
here is the log from the commit of package yast2-core
checked in at Mon Apr 14 22:41:36 CEST 2008.
--------
--- yast2-core/yast2-core.changes 2008-04-10 16:53:44.000000000 +0200
+++ yast2-core/yast2-core.changes 2008-04-14 20:48:48.000000000 +0200
@@ -1,0 +2,8 @@
+Mon Apr 14 20:47:27 CEST 2008 - mvidner@suse.cz
+
+- If Y2DEBUGONCRASH is set, the crash handler will also print the
+ last few debugging log messages, even if Y2DEBUG is not set
+ (fate#302166).
+- 2.16.48
+
+-------------------------------------------------------------------
Old:
----
yast2-core-2.16.47.tar.bz2
New:
----
yast2-core-2.16.48.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-core.spec ++++++
--- /var/tmp/diff_new_pack.G22051/_old 2008-04-14 22:40:28.000000000 +0200
+++ /var/tmp/diff_new_pack.G22051/_new 2008-04-14 22:40:28.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package yast2-core (Version 2.16.47)
+# spec file for package yast2-core (Version 2.16.48)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -12,12 +12,12 @@
Name: yast2-core
-Version: 2.16.47
+Version: 2.16.48
Release: 1
License: GPL v2 or later
Group: System/YaST
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source0: yast2-core-2.16.47.tar.bz2
+Source0: yast2-core-2.16.48.tar.bz2
Prefix: /usr
# obviously
BuildRequires: gcc-c++
@@ -84,7 +84,7 @@
Stanislav Visnovsky
%prep
-%setup -n yast2-core-2.16.47
+%setup -n yast2-core-2.16.48
%build
%{prefix}/bin/y2tool y2autoconf
@@ -161,6 +161,11 @@
%doc %{prefix}/share/doc/packages/yast2-core
/usr/share/YaST2/data/devtools/bin/generateYCPWrappers
%changelog
+* Mon Apr 14 2008 mvidner@suse.cz
+- If Y2DEBUGONCRASH is set, the crash handler will also print the
+ last few debugging log messages, even if Y2DEBUG is not set
+ (fate#302166).
+- 2.16.48
* Thu Apr 10 2008 mvidner@suse.cz
- New builtin: dpgettext ("animals", "/mnt/share/locale", "Giraffe")
(fate#2826, by juhliarik).
++++++ yast2-core-2.16.47.tar.bz2 -> yast2-core-2.16.48.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-core-2.16.47/configure new/yast2-core-2.16.48/configure
--- old/yast2-core-2.16.47/configure 2008-04-10 16:54:34.000000000 +0200
+++ new/yast2-core-2.16.48/configure 2008-04-14 21:39:24.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for yast2-core 2.16.47.
+# Generated by GNU Autoconf 2.61 for yast2-core 2.16.48.
#
# Report bugs to http://bugs.opensuse.org/.
#
@@ -728,8 +728,8 @@
# Identity of this package.
PACKAGE_NAME='yast2-core'
PACKAGE_TARNAME='yast2-core'
-PACKAGE_VERSION='2.16.47'
-PACKAGE_STRING='yast2-core 2.16.47'
+PACKAGE_VERSION='2.16.48'
+PACKAGE_STRING='yast2-core 2.16.48'
PACKAGE_BUGREPORT='http://bugs.opensuse.org/'
ac_unique_file="RPMNAME"
@@ -1451,7 +1451,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures yast2-core 2.16.47 to adapt to many kinds of systems.
+\`configure' configures yast2-core 2.16.48 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1522,7 +1522,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of yast2-core 2.16.47:";;
+ short | recursive ) echo "Configuration of yast2-core 2.16.48:";;
esac
cat <<\_ACEOF
@@ -1629,7 +1629,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-yast2-core configure 2.16.47
+yast2-core configure 2.16.48
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1643,7 +1643,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by yast2-core $as_me 2.16.47, which was
+It was created by yast2-core $as_me 2.16.48, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -2464,7 +2464,7 @@
# Define the identity of the package.
PACKAGE='yast2-core'
- VERSION='2.16.47'
+ VERSION='2.16.48'
cat >>confdefs.h <<_ACEOF
@@ -2692,7 +2692,7 @@
-VERSION="2.16.47"
+VERSION="2.16.48"
RPMNAME="yast2-core"
MAINTAINER="Martin Vidner "
@@ -23003,7 +23003,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by yast2-core $as_me 2.16.47, which was
+This file was extended by yast2-core $as_me 2.16.48, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -23056,7 +23056,7 @@
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-yast2-core config.status 2.16.47
+yast2-core config.status 2.16.48
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-core-2.16.47/configure.in new/yast2-core-2.16.48/configure.in
--- old/yast2-core-2.16.47/configure.in 2008-04-10 16:54:18.000000000 +0200
+++ new/yast2-core-2.16.48/configure.in 2008-04-14 21:39:12.000000000 +0200
@@ -3,7 +3,7 @@
dnl -- This file is generated by y2autoconf 2.16.8 - DO NOT EDIT! --
dnl (edit configure.in.in instead)
-AC_INIT(yast2-core, 2.16.47, http://bugs.opensuse.org/, yast2-core)
+AC_INIT(yast2-core, 2.16.48, http://bugs.opensuse.org/, yast2-core)
dnl Check for presence of file 'RPMNAME'
AC_CONFIG_SRCDIR([RPMNAME])
@@ -18,7 +18,7 @@
AM_INIT_AUTOMAKE(tar-ustar -Wno-portability)
dnl Important YaST2 variables
-VERSION="2.16.47"
+VERSION="2.16.48"
RPMNAME="yast2-core"
MAINTAINER="Martin Vidner "
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-core-2.16.47/liby2/src/genericfrontend.cc new/yast2-core-2.16.48/liby2/src/genericfrontend.cc
--- old/yast2-core-2.16.47/liby2/src/genericfrontend.cc 2008-04-08 12:36:20.000000000 +0200
+++ new/yast2-core-2.16.48/liby2/src/genericfrontend.cc 2008-04-14 21:16:25.000000000 +0200
@@ -58,6 +58,22 @@
static bool is_ycp_value (const char* arg);
string demangle( const char * mangled );
+static
+bool
+log_blanik (const string & s)
+{
+ y2lograw (s.c_str ());
+ return true;
+}
+
+// fate#302166 "cache yast debugging logs in case of failure"
+static
+void log_stored_debug ()
+{
+ y2error ("Liberating suppressed debugging messages:");
+ blanik.for_each (log_blanik);
+ y2error ("End of suppressed debugging messages");
+}
// FATE 302167, info '(libc) Backtraces'
void
@@ -131,6 +147,7 @@
sig, ee.filename ().c_str (), ee.linenumber ());
y2error ("got signal %d at YCP file %s:%d",
sig, ee.filename ().c_str (), ee.linenumber ());
+ log_stored_debug ();
log_backtrace ();
// bye
signal (sig, SIG_DFL);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-core-2.16.47/liby2util-r/src/include/y2util/y2log.h new/yast2-core-2.16.48/liby2util-r/src/include/y2util/y2log.h
--- old/yast2-core-2.16.47/liby2util-r/src/include/y2util/y2log.h 2007-11-13 10:45:17.000000000 +0100
+++ new/yast2-core-2.16.48/liby2util-r/src/include/y2util/y2log.h 2008-04-14 20:48:51.000000000 +0200
@@ -7,7 +7,7 @@
* Authors: Mathias Kettner
* Michal Svec
*
- * $Id: y2log.h 41993 2007-11-13 09:45:16Z mvidner $
+ * $Id: y2log.h 46620 2008-04-14 18:48:50Z mvidner $
*/
#ifndef _y2log_h
@@ -31,12 +31,21 @@
/* Logging functions */
+// Implements y2_logger
void y2_logger_function (loglevel_t level, const char *component, const char *file,
const int line, const char *func, const char *format, ...)
__attribute__ ((format (printf, 6, 7)));
+// The knights of Blanik only show up when nothing else can help, and so will
+// the messages logged here. fate#302166
+void y2_logger_blanik (loglevel_t level, const char *component, const char *file,
+ const int line, const char *func, const char *format, ...)
+ __attribute__ ((format (printf, 6, 7)));
+// Same as above, but with va_list
void y2_vlogger_function (loglevel_t level, const char *component, const char *file,
const int line, const char *func, const char *format, va_list ap);
+void y2_vlogger_blanik (loglevel_t level, const char *component, const char *file,
+ const int line, const char *func, const char *format, va_list ap);
void y2_logger_raw( const char* message );
@@ -63,12 +72,16 @@
do { \
if (should_be_logged (level, comp)) \
y2_logger_function (level,comp,file,line,function,format,##args);\
+ else if (should_be_buffered ()) \
+ y2_logger_blanik (level,comp,file,line,function,format,##args); \
} while (0)
#define y2_vlogger(level,comp,file,line,function,format,args) \
do { \
if (should_be_logged (level, comp)) \
y2_vlogger_function (level,comp,file,line,function,format,args);\
+ else if (should_be_buffered ()) \
+ y2_vlogger_blanik (level,comp,file,line,function,format,args); \
} while (0)
/*
@@ -103,8 +116,13 @@
#define y2lograw(message) y2_logger_raw(message)
/**
+ * Should we bother evaluating the arguments to the logging function?
*/
bool should_be_logged (int loglevel, string componentname);
+/**
+ * Should we bother evaluating the arguments to the buffering function?
+ */
+bool should_be_buffered ();
/**
* Set an alternate logfile name for @ref y2log. If this is not done by the
@@ -141,4 +159,23 @@
*/
bool get_log_debug();
+// stores a few strings. can append one. can return all. old are forgotten.
+class LogTail {
+public:
+ typedef string Data;
+ LogTail (size_t max_size = 42);
+ ~LogTail ();
+ void push_back (const Data &);
+
+ // consumer returns true to continue iterating
+ typedef bool (* Consumer) (const Data &);
+ void for_each (Consumer c);
+private:
+ class Impl;
+ Impl *m_impl;
+};
+
+// the instance used for last resort logging
+extern LogTail blanik;
+
#endif /* _y2log_h */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-core-2.16.47/liby2util-r/src/y2log.cc new/yast2-core-2.16.48/liby2util-r/src/y2log.cc
--- old/yast2-core-2.16.47/liby2util-r/src/y2log.cc 2008-04-08 18:15:33.000000000 +0200
+++ new/yast2-core-2.16.48/liby2util-r/src/y2log.cc 2008-04-14 21:39:06.000000000 +0200
@@ -10,7 +10,7 @@
* Arvin Schnell
* Martin Vidner
*
- * $Id: y2log.cc 46256 2008-04-08 16:15:32Z mvidner $
+ * $Id: y2log.cc 46623 2008-04-14 19:39:05Z mvidner $
*/
#include
@@ -26,6 +26,7 @@
#include
#include
#include <limits>
+#include <list>
#include "y2util/y2log.h"
#include "y2util/miniini.h"
@@ -38,11 +39,16 @@
#define _GNU_SOURCE 1 /* Needed for vasprintf below */
#define Y2LOG_DATE "%Y-%m-%d %H:%M:%S" /* The date format */
-#define Y2LOG_FORMAT "%s <%d> %s(%d)%s %s%s:%d %s%s"
+
+// 1 component, 2 file, 3 func, 4 line, 5 logtext, 6 eol
+#define Y2LOG_COMMON "%s %s%s:%d %s%s"
#define Y2LOG_SIMPLE "%2$s%3$s:%4$d %1$s %5$s%6$s" /* this is GNU gettext parameter reordering */
-#define Y2LOG_SYSLOG "<%d>%s %s%s:%d %s%s"
-#define Y2LOG_RAW "%s"
-#define Y2LOG_SYSLOGRAW "%s"
+
+// 1 timestamp, 2 level, 3 hostname, 4 pid
+#define Y2LOG_FORMAT "%s <%d> %s(%d)"
+// 1 level, 2 common part
+#define Y2LOG_SYSLOG "<%d>%s"
+
#define Y2LOG_MAXSIZE 10* 1024 * 1024 /* Maximal logfile size */
#define Y2LOG_MAXNUM 10 /* Maximum logfiles number */
@@ -57,6 +63,7 @@
#define Y2LOG_VAR_DEBUG "Y2DEBUG"
#define Y2LOG_VAR_ALL "Y2DEBUGALL"
+#define Y2LOG_VAR_ONCRASH "Y2DEBUGONCRASH"
#define Y2LOG_VAR_SIZE "Y2MAXLOGSIZE"
#define Y2LOG_VAR_NUM "Y2MAXLOGNUM"
@@ -82,6 +89,8 @@
static FILE *Y2LOG_STDERR = stderr; /* Default output */
/* static prototypes */
+static void do_log_syslog( const char* logmessage );
+static void do_log_yast( const char* logmessage );
static void shift_log_files(string filename);
static const char *log_messages[] = {
@@ -150,19 +159,25 @@
{
va_list ap;
va_start(ap, format);
- y2_vlogger(level, component, file, line, func, format, ap);
+ y2_vlogger_function(level, component, file, line, func, format, ap);
+ va_end(ap);
+}
+
+void y2_logger_blanik(loglevel_t level, const char *component, const char *file,
+ const int line, const char *func, const char *format, ...)
+{
+ va_list ap;
+ va_start(ap, format);
+ y2_vlogger_blanik(level, component, file, line, func, format, ap);
va_end(ap);
}
/**
- * The universal logger function
+ * Formats the common part
*/
-void y2_vlogger_function(loglevel_t level, const char *component, const char *file,
+string y2_logfmt_common(bool simple, const char *component, const char *file,
const int line, const char *function, const char *format, va_list ap)
{
- /* Prepare the logfile name */
- if(!did_set_logname) set_log_filename("");
-
/* Prepare the log text */
char *logtext = NULL;
vasprintf(&logtext, format, ap); /* GNU extension needs the define above */
@@ -192,7 +207,7 @@
}
}
- /* Prepare the component */
+ /* Prepare the function */
string func = function;
if (!func.empty ())
func = "(" + func + ")";
@@ -203,16 +218,18 @@
if ((len==0) || ((len>0) && (logtext[len-1]!='\n')))
eol = true;
- if(log_to_syslog) {
- syslog (LOG_NOTICE, Y2LOG_SYSLOG, level, comp.c_str (),
- file, func.c_str (), line, logtext, eol?"\n":"");
- }
+ char * result_c;
+ asprintf(&result_c, simple? Y2LOG_SIMPLE: Y2LOG_COMMON,
+ comp.c_str (), file, func.c_str (), line, logtext, eol?"\n":"");
+ string result = result_c;
+ free (result_c);
- if(!log_to_file) {
- if(logtext) free(logtext);
- return;
- }
+ free (logtext);
+ return result;
+}
+string y2_logfmt_prefix (loglevel_t level)
+{
/* Prepare the PID */
pid_t pid = getpid();
@@ -221,13 +238,6 @@
if (gethostname(hostname, 1024))
strncpy(hostname, "unknown", 1024);
- /* Prepare the logfile */
- shift_log_files (string (logname));
-
- FILE *logfile = open_logfile ();
- if (!logfile)
- return;
-
/* Prepare the date */
#if 1
// just 1 second precision
@@ -257,37 +267,76 @@
strcat (date, tmp2);
#endif
- /* Do the log */
- if(log_simple)
- fprintf (logfile, Y2LOG_SIMPLE, comp.c_str (),
- file, func.c_str (), line, logtext, eol?"\n":"");
- else
- fprintf (logfile, Y2LOG_FORMAT, date, level, hostname, pid, comp.c_str (),
- file, func.c_str (), line, logtext, eol?"\n":"");
+ char * result_c = NULL;
+ asprintf (&result_c, Y2LOG_FORMAT, date, level, hostname, pid);
+ string result = result_c;
+ free (result_c);
- /* Clean everything */
- if (logfile && logfile != Y2LOG_STDERR)
- fclose (logfile);
- else
- fflush (logfile);
+ return result;
+}
+
+
+void y2_vlogger_function(loglevel_t level, const char *component, const char *file,
+ const int line, const char *function, const char *format, va_list ap)
+{
+ string common = y2_logfmt_common (log_simple,
+ component, file, line, function,
+ format, ap);
+
+ if(log_to_syslog) {
+ syslog (LOG_NOTICE, Y2LOG_SYSLOG, level, common.c_str ());
+ }
- if (logtext)
- free (logtext);
+ if(log_to_file) {
+ string tolog;
+ if (log_simple)
+ tolog = common;
+ else
+ tolog = y2_logfmt_prefix (level) + common;
+ do_log_yast (tolog.c_str ());
+ }
}
-void y2_logger_raw( const char* logmessage )
+void y2_vlogger_blanik(loglevel_t level, const char *component, const char *file,
+ const int line, const char *function, const char *format, va_list ap)
{
-#warning cut'n'paste copy, need a clean up
- /* Prepare the logfile name */
- if(!did_set_logname) set_log_filename("");
+ string common = y2_logfmt_common (log_simple,
+ component, file, line, function,
+ format, ap);
+
+ if(log_to_syslog || log_to_file) {
+ string tolog;
+ if (log_simple || (log_to_syslog > log_to_file))
+ tolog = common;
+ else
+ tolog = y2_logfmt_prefix (level) + common;
+ // store the message for worse times
+ blanik.push_back (tolog);
+ }
+}
+void y2_logger_raw( const char* logmessage )
+{
if(log_to_syslog) {
- syslog (LOG_NOTICE, Y2LOG_SYSLOGRAW, logmessage);
+ do_log_syslog (logmessage);
}
- if(!log_to_file) {
- return;
+ if(log_to_file) {
+ do_log_yast (logmessage);
}
+}
+
+static
+void do_log_syslog( const char* logmessage )
+{
+ syslog (LOG_NOTICE, "%s", logmessage);
+}
+
+static
+void do_log_yast( const char* logmessage )
+{
+ /* Prepare the logfile name */
+ if(!did_set_logname) set_log_filename("");
/* Prepare the logfile */
shift_log_files (string (logname));
@@ -296,7 +345,7 @@
if (!logfile)
return;
- fprintf (logfile, Y2LOG_RAW, logmessage);
+ fprintf (logfile, "%s", logmessage);
/* Clean everything */
if (logfile && logfile != Y2LOG_STDERR)
@@ -536,4 +585,62 @@
return log_debug;
}
+// buffer the debugging log and show it only if yast crashes
+// fate#302166
+
+bool should_be_buffered ()
+{
+ return getenv (Y2LOG_VAR_ONCRASH) != NULL;
+}
+
+// stores a few strings. can append one. can return all. old are forgotten.
+class LogTail::Impl {
+ size_t m_size;
+ size_t m_max_size;
+ std::list<Data> m_items;
+public:
+ Impl(size_t max_size = 42)
+ : m_size (0)
+ , m_max_size (max_size)
+ {}
+
+ void push_back (const Data &d) {
+ if (m_size >= m_max_size)
+ m_items.pop_front ();
+ else
+ ++m_size;
+
+ m_items.push_back (d);
+ }
+
+ void for_each (Consumer c) {
+ std::list<Data>::iterator i;
+ for (i = m_items.begin (); i != m_items.end (); ++i)
+ if (! c(*i))
+ break;
+ }
+};
+
+LogTail::LogTail (size_t max_size)
+{
+ m_impl = new Impl (max_size);
+}
+
+LogTail::~LogTail ()
+{
+ delete m_impl;
+}
+
+void LogTail::push_back (const Data &d)
+{
+ m_impl->push_back (d);
+}
+void LogTail::for_each (LogTail::Consumer c)
+{
+ m_impl->for_each (c);
+}
+
+// define the singleton
+LogTail blanik = LogTail ();
+
/* EOF */
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-core-2.16.47/libycp/src/YCPBuiltinFloat.cc new/yast2-core-2.16.48/libycp/src/YCPBuiltinFloat.cc
--- old/yast2-core-2.16.47/libycp/src/YCPBuiltinFloat.cc 2008-04-07 18:20:29.000000000 +0200
+++ new/yast2-core-2.16.48/libycp/src/YCPBuiltinFloat.cc 2008-04-14 13:45:33.000000000 +0200
@@ -135,7 +135,7 @@
f_trunc(const YCPFloat &f)
{
/**
- * @builtins trunc
+ * @builtin trunc
* @short round to integer, towards zero
* @description
* Returns f round to the nearest integer, towards zero.
@@ -156,7 +156,7 @@
f_pow(const YCPFloat &f1, const YCPFloat &f2)
{
/**
- * @builtins pow
+ * @builtin pow
* @short power function
* @description
* Returns the value of f1 raised to the power of f2.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-core-2.16.47/VERSION new/yast2-core-2.16.48/VERSION
--- old/yast2-core-2.16.47/VERSION 2008-04-10 16:53:14.000000000 +0200
+++ new/yast2-core-2.16.48/VERSION 2008-04-14 20:45:40.000000000 +0200
@@ -1 +1 @@
-2.16.47
+2.16.48
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/yast2-core-2.16.47/wfm/src/Y2WFMComponent.cc new/yast2-core-2.16.48/wfm/src/Y2WFMComponent.cc
--- old/yast2-core-2.16.47/wfm/src/Y2WFMComponent.cc 2008-02-07 10:25:56.000000000 +0100
+++ new/yast2-core-2.16.48/wfm/src/Y2WFMComponent.cc 2008-04-11 13:56:40.000000000 +0200
@@ -531,7 +531,10 @@
* @param path path Path
* @optarg any options
* @return any
- *
+ * @description
+ * WFM::Read (.local.foo, ... ) works like SCR::Read (.target.foo, ...)
+ * but in the inst-sys rather than on the system being installed.
+ * It only works for paths starting with .local
*/
if (!local.start ())
@@ -567,6 +570,10 @@
* @param path path Path
* @optarg any options
* @return boolean
+ * @description
+ * WFM::Write (.local.foo, ... ) works like SCR::Write (.target.foo, ...)
+ * but in the inst-sys rather than on the system being installed.
+ * It only works for paths starting with .local
*/
if (!local.start ())
@@ -595,6 +602,10 @@
* @param path path Path
* @optarg any options
* @return any
+ * @description
+ * WFM::Execute (.local.foo, ... ) works like SCR::Execute (.target.foo, ...)
+ * but in the inst-sys rather than on the system being installed.
+ * It only works for paths starting with .local
*/
if (!local.start ())
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org