ifcfg-rh: add svGetValueInt64() utility function
Signed-off-by: Thomas Haller <thaller@redhat.com>
This commit is contained in:
@@ -34,6 +34,11 @@
|
|||||||
|
|
||||||
#include "shvar.h"
|
#include "shvar.h"
|
||||||
|
|
||||||
|
#include "NetworkManagerUtils.h"
|
||||||
|
#include "nm-logging.h"
|
||||||
|
|
||||||
|
#define PARSE_WARNING(msg...) nm_log_warn (LOGD_SETTINGS, " " msg)
|
||||||
|
|
||||||
/* Open the file <name>, returning a shvarFile on success and NULL on failure.
|
/* Open the file <name>, returning a shvarFile on success and NULL on failure.
|
||||||
* Add a wrinkle to let the caller specify whether or not to create the file
|
* Add a wrinkle to let the caller specify whether or not to create the file
|
||||||
* (actually, return a structure anyway) if it doesn't exist.
|
* (actually, return a structure anyway) if it doesn't exist.
|
||||||
@@ -306,6 +311,38 @@ svTrueValue (shvarFile *s, const char *key, gboolean def)
|
|||||||
return returnValue;
|
return returnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* svGetValueInt64:
|
||||||
|
* @s: fhe file
|
||||||
|
* @key: the name of the key to read
|
||||||
|
* @base: the numeric base (usually 10). Setting to 0 means "auto". Usually you want 10.
|
||||||
|
* @min: the minimum for range-check
|
||||||
|
* @max: the maximum for range-check
|
||||||
|
* @fallback: the fallback value in any error case
|
||||||
|
*
|
||||||
|
* Reads a value @key and converts it to an integer using nm_utils_ascii_str_to_int64().
|
||||||
|
* In case of error, @errno will be set and @fallback returned. */
|
||||||
|
gint64
|
||||||
|
svGetValueInt64 (shvarFile *s, const char *key, guint base, gint64 min, gint64 max, gint64 fallback)
|
||||||
|
{
|
||||||
|
char *tmp;
|
||||||
|
gint64 result;
|
||||||
|
int errsv;
|
||||||
|
|
||||||
|
tmp = svGetValue (s, key, FALSE);
|
||||||
|
if (!tmp) {
|
||||||
|
errno = 0;
|
||||||
|
return fallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = nm_utils_ascii_str_to_int64 (tmp, base, min, max, fallback);
|
||||||
|
errsv = errno;
|
||||||
|
if (errsv != 0)
|
||||||
|
PARSE_WARNING ("Error reading '%s' value '%s' as integer (%d)", key, tmp, errsv);
|
||||||
|
|
||||||
|
g_free (tmp);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set the variable <key> equal to the value <value>.
|
/* Set the variable <key> equal to the value <value>.
|
||||||
* If <key> does not exist, and the <current> pointer is set, append
|
* If <key> does not exist, and the <current> pointer is set, append
|
||||||
|
@@ -63,6 +63,8 @@ char *svGetValue (shvarFile *s, const char *key, gboolean verbatim);
|
|||||||
*/
|
*/
|
||||||
gboolean svTrueValue (shvarFile *s, const char *key, gboolean def);
|
gboolean svTrueValue (shvarFile *s, const char *key, gboolean def);
|
||||||
|
|
||||||
|
gint64 svGetValueInt64 (shvarFile *s, const char *key, guint base, gint64 min, gint64 max, gint64 fallback);
|
||||||
|
|
||||||
/* Set the variable <key> equal to the value <value>.
|
/* Set the variable <key> equal to the value <value>.
|
||||||
* If <key> does not exist, and the <current> pointer is set, append
|
* If <key> does not exist, and the <current> pointer is set, append
|
||||||
* the key=value pair after that line. Otherwise, prepend the pair
|
* the key=value pair after that line. Otherwise, prepend the pair
|
||||||
|
Reference in New Issue
Block a user