ACK, with some last minor tweaks:
On 08/19/2011 01:37 PM, Adam Stokes wrote:
This allows 3 ways to test for configuration
status
1) If file exists then in the least the execution
was issued
2) If file exists and contents of file report an
error, then process failed with at least 1 execution
3) If file exists and contents contain a success
message, then binary was executed and successfully
completed.
Signed-off-by: Adam Stokes<astokes(a)fedoraproject.org>
---
src/include/matahari/sysconfig.h | 15 ++++++++++-----
src/lib/sysconfig.c | 28 ++++++++++------------------
src/lib/sysconfig_linux.c | 20 +++++++++++++++-----
src/sysconfig/sysconfig-qmf.cpp | 27 +++++++++++++--------------
src/tests/mh_api_sysconfig.h | 4 ++--
5 files changed, 50 insertions(+), 44 deletions(-)
diff --git a/src/include/matahari/sysconfig.h b/src/include/matahari/sysconfig.h
index 0390528..0b43cb8 100644
--- a/src/include/matahari/sysconfig.h
+++ b/src/include/matahari/sysconfig.h
@@ -77,21 +77,24 @@ mh_sysconfig_query(const char *query, uint32_t flags, const char
*scheme);
* Set system as configured
*
* \param[in] key config item to define
+ * \param[in] contents specifies success/fail with error where applicable
*
- * \return TRUE if applying key to config succeeds
+ * \retval[1] if writing to file suceeds
+ * \retval[0] failed to write to file
\retval 1 ...
\retval 0 ...
*/
extern gboolean
-mh_sysconfig_set_configured(const char *key);
+mh_sysconfig_set_configured(const char *key, const char *contents);
diff --git a/src/lib/sysconfig_linux.c b/src/lib/sysconfig_linux.c
index a809267..8e605cc 100644
--- a/src/lib/sysconfig_linux.c
+++ b/src/lib/sysconfig_linux.c
@@ -32,6 +32,7 @@
#include "matahari/utilities.h"
#include "sysconfig_private.h"
+#define BUFSIZE 1024
I don't feel like this #define adds any value. Just remove it.
diff --git a/src/sysconfig/sysconfig-qmf.cpp
b/src/sysconfig/sysconfig-qmf.cpp
index 962ca3d..ad847a1 100644
--- a/src/sysconfig/sysconfig-qmf.cpp
+++ b/src/sysconfig/sysconfig-qmf.cpp
@@ -74,7 +74,7 @@ ConfigAgent::setup(qmf::AgentSession session)
gboolean
ConfigAgent::invoke(qmf::AgentSession session, qmf::AgentEvent event, gpointer
user_data)
{
- int rc = 0;
+ char *status = NULL;
const std::string& methodName(event.getMethodName());
if (event.getType() != qmf::AGENT_METHOD) {
@@ -84,23 +84,19 @@ ConfigAgent::invoke(qmf::AgentSession session, qmf::AgentEvent event,
gpointer u
qpid::types::Variant::Map& args = event.getArguments();
if (methodName == "run_uri") {
- rc = mh_sysconfig_run_uri(args["uri"].asString().c_str(),
+ mh_sysconfig_run_uri(args["uri"].asString().c_str(),
args["flags"].asUint32(),
args["scheme"].asString().c_str(),
args["key"].asString().c_str());
- if (rc == 0) {
- mh_sysconfig_set_configured(args["key"].asString().c_str());
- }
- event.addReturnArgument("status", rc);
+ status = mh_sysconfig_is_configured(args["key"].asString().c_str());
+ event.addReturnArgument("status", status);
} else if (methodName == "run_string") {
- rc = mh_sysconfig_run_string(args["data"].asString().c_str(),
+ mh_sysconfig_run_string(args["data"].asString().c_str(),
args["flags"].asUint32(),
args["scheme"].asString().c_str(),
args["key"].asString().c_str());
- if (rc == 0) {
- mh_sysconfig_set_configured(args["key"].asString().c_str());
- }
- event.addReturnArgument("status", rc);
+ status = mh_sysconfig_is_configured(args["key"].asString().c_str());
+ event.addReturnArgument("status", status);
} else if (methodName == "query") {
const char *data = NULL;
data = mh_sysconfig_query(args["query"].asString().c_str(),
@@ -108,14 +104,17 @@ ConfigAgent::invoke(qmf::AgentSession session, qmf::AgentEvent
event, gpointer u
args["scheme"].asString().c_str());
event.addReturnArgument("query", data);
} else if (methodName == "is_configured") {
- rc = mh_sysconfig_is_configured(args["key"].asString().c_str());
- _instance.setProperty("is_postboot_configured", rc);
- event.addReturnArgument("status", rc ? "ok" :
"no");
+ status = mh_sysconfig_is_configured(args["key"].asString().c_str());
+ _instance.setProperty("is_postboot_configured", status);
+ event.addReturnArgument("status", status);
} else {
session.raiseException(event, MH_NOT_IMPLEMENTED);
goto bail;
}
+ if (status != NULL) {
+ free(status);
+ }
Changing this isn't strictly necessary, but just FYI, the NULL check
isn't needed here. free(NULL) is safe.
--
Russell Bryant