return ret;
}
-void system_info_tool_get(const char *key, bool verbose)
+void system_info_tool_get(const char *rawkey, bool verbose)
{
struct value api;
+ char key[BUFFER_MAX];
int retval;
+ retval = convert_raw_key(rawkey, key, sizeof(key));
+ if (retval < 0)
+ return;
+
retval = system_info_tool_get_api(key, &api);
if (retval < 0)
return;
printf(" -C|--clear-all Clear all user-defined keys\n");
}
-static int convert_raw_optargs(const char *rawtype, const char *rawvalue, struct value *out)
+static int convert_raw_value(const char *rawtype, const char *rawvalue, struct value *out)
{
system_info_type_e type = string_to_type(rawtype);
int system_info_tool_set(int argc, char *argv[])
{
int ret;
- char *key;
+ char key[BUFFER_MAX];
struct value value;
/* argv[optind] : key
return -ENOTSUP;
}
- key = argv[optind];
- ret = convert_raw_optargs(argv[optind + 1], argv[optind + 2], &value);
+ ret = convert_raw_key(argv[optind], key, sizeof(key));
+ if (ret < 0)
+ return ret;
+
+ ret = convert_raw_value(argv[optind + 1], argv[optind + 2], &value);
if (ret < 0)
return ret;
return system_info_tool_set_entry(key, value);
}
-int system_info_tool_clear_key(const char *key)
+int system_info_tool_clear_key(const char *rawkey)
{
int retval;
int ret;
int match = 0;
int i;
int select;
+ char key[BUFFER_MAX];
struct cache {
int match;
{ -1, },
};
+ ret = convert_raw_key(rawkey, key, sizeof(key));
+ if (ret < 0)
+ return ret;
+
for (i = 0; i < SYSTEM_INFO_TYPE_MAX; ++i) {
retval = system_info_tool_get_raw(key, i, DB_DEFAULT_RW, &cache[i].dbentry);
if (retval == 0)
#include "system-info-tool-get.h"
#include "system-info-tool-set.h"
+#define KEY_PREFIX "http://"
+
int runtime_env = C;
const struct db db[DB_END] = {
/* { dbpath, dbname, ticker } */
return SYSTEM_INFO_TYPE_MAX;
}
+int convert_raw_key(const char *rawkey, char *buffer, int len)
+{
+ int retval;
+
+ if (!rawkey || !buffer)
+ return -EINVAL;
+
+ if (strstr(rawkey, KEY_PREFIX) == rawkey)
+ retval = snprintf(buffer, len, "%s", rawkey + strlen(KEY_PREFIX));
+ else
+ retval = snprintf(buffer, len, "%s", rawkey);
+
+ if (retval >= len)
+ return -ENAMETOOLONG;
+
+ return 0;
+}
+
void print_value(struct value value)
{
if (value.type == SYSTEM_INFO_BOOL)
const char *type_to_string(system_info_type_e type);
system_info_type_e string_to_type(const char *type);
void print_value(struct value value);
+int convert_raw_key(const char *key, char *buffer, int len);
#endif