GK SDK 源码库: XMIPCLinuxV100R005C00SPC030 (kernel/tools/open_source excluded)
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
/*
|
||||
* Copyright (c) XMEDIA. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "config_svc.h"
|
||||
#include "iniparser.h"
|
||||
#include "log_base.h"
|
||||
|
||||
#define CONFIG_MAX_PATH 256
|
||||
|
||||
typedef struct {
|
||||
char* config_file;
|
||||
} config_svc_t;
|
||||
|
||||
static config_svc_t* __config_svc = NULL;
|
||||
|
||||
int create_config_svc(char *config_path)
|
||||
{
|
||||
assert(config_path != NULL);
|
||||
|
||||
if (__config_svc != NULL) {
|
||||
free(__config_svc);
|
||||
}
|
||||
|
||||
__config_svc = (config_svc_t*)malloc(sizeof(config_svc_t));
|
||||
if (__config_svc == NULL) {
|
||||
LOGE("create config svc failure\n");
|
||||
goto ERR;
|
||||
}
|
||||
|
||||
__config_svc->config_file = malloc(sizeof(char) * CONFIG_MAX_PATH);
|
||||
if (__config_svc->config_file == NULL) {
|
||||
LOGE("malloc config file memory failure\n");
|
||||
goto ERR;
|
||||
}
|
||||
|
||||
if (strlen(config_path) > CONFIG_MAX_PATH) {
|
||||
LOGE("config path is too length\n");
|
||||
goto ERR;
|
||||
}
|
||||
|
||||
strcpy(__config_svc->config_file, config_path);
|
||||
|
||||
return 0;
|
||||
|
||||
ERR:
|
||||
if (__config_svc) {
|
||||
if (__config_svc->config_file) {
|
||||
free(__config_svc->config_file);
|
||||
}
|
||||
|
||||
free(__config_svc);
|
||||
}
|
||||
|
||||
__config_svc = NULL;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
void release_cofnig_svc()
|
||||
{
|
||||
if (__config_svc) {
|
||||
if (__config_svc->config_file) {
|
||||
free(__config_svc->config_file);
|
||||
}
|
||||
|
||||
free(__config_svc);
|
||||
}
|
||||
|
||||
__config_svc = NULL;
|
||||
}
|
||||
|
||||
int get_config_value(const char *key, int default_value)
|
||||
{
|
||||
dictionary *config_dic;
|
||||
int value = default_value;
|
||||
|
||||
assert(key != NULL);
|
||||
assert(__config_svc != NULL);
|
||||
|
||||
config_dic = iniparser_load(__config_svc->config_file);
|
||||
|
||||
if (config_dic == NULL) {
|
||||
LOGE("open config file failuer[%s], returen default value:%d\n", __config_svc->config_file, default_value);
|
||||
return value;
|
||||
}
|
||||
|
||||
value = iniparser_getint(config_dic, key, default_value);
|
||||
iniparser_freedict(config_dic);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
int get_config_string(const char *key, char *buf, int size)
|
||||
{
|
||||
dictionary *config_dic;
|
||||
int copy_size;
|
||||
int ret = -1;
|
||||
char* value = NULL;
|
||||
|
||||
assert(key != NULL);
|
||||
assert(buf != NULL);
|
||||
assert(__config_svc != NULL);
|
||||
|
||||
config_dic = iniparser_load(__config_svc->config_file);
|
||||
if (config_dic == NULL) {
|
||||
LOGE("open config file failuer[%s], returen NULL\n", __config_svc->config_file);
|
||||
return ret;
|
||||
}
|
||||
|
||||
value = iniparser_getstring(config_dic, key, NULL);
|
||||
if (value != NULL) {
|
||||
copy_size = strlen(value);
|
||||
if (copy_size <= size) {
|
||||
memcpy(buf, value, copy_size);
|
||||
ret = 0;
|
||||
} else {
|
||||
LOGE("buffer is small too get %s.\n", key);
|
||||
}
|
||||
} else {
|
||||
LOGD("getstring (%s) fail.\n", key);
|
||||
}
|
||||
|
||||
iniparser_freedict(config_dic);
|
||||
|
||||
return ret;
|
||||
}
|
||||
Reference in New Issue
Block a user