[Nut-upsdev] [PATCH/RFC v2 1/3] drivers/dstate: add dstate_getflags() and status_set_uniq()
Michal Soltys
soltys at ziu.info
Mon Feb 7 13:11:57 UTC 2011
Add dstate_getflags() to the interface, allowing flag interrogation.
Add status_set_uniq() working similary to status_set() but making sure
that the added status word is not duplicated.
Signed-off-by: Michal Soltys <soltys at ziu.info>
---
drivers/dstate.c | 21 +++++++++++++++++++++
drivers/dstate.h | 2 ++
2 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/drivers/dstate.c b/drivers/dstate.c
index b95cec9..0cb5896 100644
--- a/drivers/dstate.c
+++ b/drivers/dstate.c
@@ -691,6 +691,11 @@ const char *dstate_getinfo(const char *var)
return state_getinfo(dtree_root, var);
}
+int dstate_getflags(const char *var)
+{
+ return state_getflags(dtree_root, var);
+}
+
void dstate_addcmd(const char *cmdname)
{
int ret;
@@ -806,6 +811,22 @@ void status_set(const char *buf)
}
}
+/* add a status element, making sure it's not already present */
+void status_set_uniq(const char *buf)
+{
+ const char *ptr = status_buf;
+ int len = strlen(buf);
+
+ /* make sure it's on a word boundary */
+ while ((ptr = strstr(ptr, buf))) {
+ if ((!ptr[len] || ptr[len] == ' ') && (ptr == status_buf || ptr[-1] == ' '))
+ return;
+ ptr += len;
+ }
+
+ status_set(buf);
+}
+
/* write the status_buf into the externally visible dstate storage */
void status_commit(void)
{
diff --git a/drivers/dstate.h b/drivers/dstate.h
index 7ffe899..91bf873 100644
--- a/drivers/dstate.h
+++ b/drivers/dstate.h
@@ -48,6 +48,7 @@ int dstate_addenum(const char *var, const char *fmt, ...)
void dstate_setflags(const char *var, int flags);
void dstate_setaux(const char *var, int aux);
const char *dstate_getinfo(const char *var);
+int dstate_getflags(const char *var);
void dstate_addcmd(const char *cmdname);
int dstate_delinfo(const char *var);
int dstate_delenum(const char *var, const char *val);
@@ -66,6 +67,7 @@ void status_init(void);
/* add a status element */
void status_set(const char *buf);
+void status_set_uniq(const char *buf);
/* write the temporary status_buf into ups.status */
void status_commit(void);
--
1.7.2.1
More information about the Nut-upsdev
mailing list