Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
f5e08cdf
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
f5e08cdf
编写于
2月 25, 2022
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
tfs cfg
上级
0a38853f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
49 addition
and
33 deletion
+49
-33
include/util/tconfig.h
include/util/tconfig.h
+1
-1
source/util/src/tconfig.c
source/util/src/tconfig.c
+48
-32
未找到文件。
include/util/tconfig.h
浏览文件 @
f5e08cdf
...
...
@@ -59,7 +59,6 @@ typedef struct SConfigItem {
int32_t
i32
;
int64_t
i64
;
char
*
str
;
SArray
*
array
;
// SDiskCfg
};
union
{
int64_t
imin
;
...
...
@@ -69,6 +68,7 @@ typedef struct SConfigItem {
int64_t
imax
;
double
fmax
;
};
SArray
*
array
;
// SDiskCfg
}
SConfigItem
;
typedef
struct
{
...
...
source/util/src/tconfig.c
浏览文件 @
f5e08cdf
...
...
@@ -79,9 +79,25 @@ int32_t cfgLoadArray(SConfig *pCfg, SArray *pArgs) {
return
0
;
}
static
void
cfgFreeItem
(
SConfigItem
*
pItem
)
{
if
(
pItem
->
dtype
==
CFG_DTYPE_STRING
||
pItem
->
dtype
==
CFG_DTYPE_DIR
||
pItem
->
dtype
==
CFG_DTYPE_LOCALE
||
pItem
->
dtype
==
CFG_DTYPE_CHARSET
||
pItem
->
dtype
==
CFG_DTYPE_TIMEZONE
)
{
tfree
(
pItem
->
str
);
}
if
(
pItem
->
array
)
{
taosArrayDestroy
(
pItem
->
array
);
pItem
->
array
=
NULL
;
}
}
void
cfgCleanup
(
SConfig
*
pCfg
)
{
if
(
pCfg
!=
NULL
)
{
if
(
pCfg
->
hash
!=
NULL
)
{
SConfigItem
*
pItem
=
taosHashIterate
(
pCfg
->
hash
,
NULL
);
while
(
pItem
!=
NULL
)
{
cfgFreeItem
(
pItem
);
pItem
=
taosHashIterate
(
pCfg
->
hash
,
pItem
);
}
taosHashCleanup
(
pCfg
->
hash
);
pCfg
->
hash
==
NULL
;
}
...
...
@@ -96,7 +112,7 @@ SConfigItem *cfgIterate(SConfig *pCfg, SConfigItem *pIter) { return taosHashIter
void
cfgCancelIterate
(
SConfig
*
pCfg
,
SConfigItem
*
pIter
)
{
return
taosHashCancelIterate
(
pCfg
->
hash
,
pIter
);
}
static
int32_t
cfgCheckAndSetTimezone
(
SConfigItem
*
pItem
,
const
char
*
timezone
)
{
tfree
(
pItem
->
str
);
cfgFreeItem
(
pItem
);
pItem
->
str
=
strdup
(
timezone
);
if
(
pItem
->
str
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -107,7 +123,7 @@ static int32_t cfgCheckAndSetTimezone(SConfigItem *pItem, const char *timezone)
}
static
int32_t
cfgCheckAndSetCharset
(
SConfigItem
*
pItem
,
const
char
*
charset
)
{
tfree
(
pItem
->
str
);
cfgFreeItem
(
pItem
);
pItem
->
str
=
strdup
(
charset
);
if
(
pItem
->
str
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -118,7 +134,7 @@ static int32_t cfgCheckAndSetCharset(SConfigItem *pItem, const char *charset) {
}
static
int32_t
cfgCheckAndSetLocale
(
SConfigItem
*
pItem
,
const
char
*
locale
)
{
tfree
(
pItem
->
str
);
cfgFreeItem
(
pItem
);
pItem
->
str
=
strdup
(
locale
);
if
(
pItem
->
str
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -147,7 +163,7 @@ static int32_t cfgCheckAndSetDir(SConfigItem *pItem, const char *inputDir) {
return
-
1
;
}
tfree
(
pItem
->
str
);
cfgFreeItem
(
pItem
);
pItem
->
str
=
strdup
(
fullDir
);
if
(
pItem
->
str
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -288,6 +304,33 @@ static int32_t cfgSetTimezone(SConfigItem *pItem, const char *value, ECfgSrcType
return
0
;
}
static
int32_t
cfgSetTfsItem
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
value
,
const
char
*
level
,
const
char
*
primary
,
ECfgSrcType
stype
)
{
SConfigItem
*
pItem
=
cfgGetItem
(
pCfg
,
name
);
if
(
pItem
==
NULL
)
return
-
1
;
if
(
pItem
->
array
==
NULL
)
{
pItem
->
array
=
taosArrayInit
(
16
,
sizeof
(
SDiskCfg
));
if
(
pItem
->
array
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
}
SDiskCfg
cfg
=
{
0
};
tstrncpy
(
cfg
.
dir
,
value
,
sizeof
(
cfg
.
dir
));
cfg
.
level
=
atoi
(
level
);
cfg
.
primary
=
atoi
(
primary
);
void
*
ret
=
taosArrayPush
(
pItem
->
array
,
&
cfg
);
if
(
ret
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
pItem
->
stype
=
stype
;
return
0
;
}
int32_t
cfgSetItem
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
value
,
ECfgSrcType
stype
)
{
SConfigItem
*
pItem
=
cfgGetItem
(
pCfg
,
name
);
if
(
pItem
==
NULL
)
{
...
...
@@ -322,32 +365,6 @@ int32_t cfgSetItem(SConfig *pCfg, const char *name, const char *value, ECfgSrcTy
return
-
1
;
}
static
int32_t
cfgSetTfsItem
(
SConfig
*
pCfg
,
const
char
*
name
,
const
char
*
value
,
const
char
*
level
,
const
char
*
primary
,
ECfgSrcType
stype
)
{
SConfigItem
*
pItem
=
cfgGetItem
(
pCfg
,
name
);
if
(
pItem
==
NULL
)
return
-
1
;
if
(
pItem
->
array
==
NULL
)
{
pItem
->
array
=
taosArrayInit
(
16
,
sizeof
(
SDiskCfg
));
if
(
pItem
->
array
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
}
SDiskCfg
cfg
=
{
0
};
tstrncpy
(
cfg
.
dir
,
name
,
sizeof
(
cfg
.
dir
));
cfg
.
level
=
atoi
(
level
);
cfg
.
primary
=
atoi
(
primary
);
void
*
ret
=
taosArrayPush
(
pItem
->
array
,
&
cfg
);
if
(
ret
==
NULL
)
{
terrno
=
TSDB_CODE_OUT_OF_MEMORY
;
return
-
1
;
}
return
0
;
}
SConfigItem
*
cfgGetItem
(
SConfig
*
pCfg
,
const
char
*
name
)
{
char
lowcaseName
[
CFG_NAME_MAX_LEN
+
1
]
=
{
0
};
memcpy
(
lowcaseName
,
name
,
CFG_NAME_MAX_LEN
);
...
...
@@ -620,7 +637,6 @@ int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) {
}
while
(
!
taosEOFFile
(
pFile
))
{
name
=
value
=
value2
=
value3
=
NULL
;
olen
=
vlen
=
vlen2
=
vlen3
=
0
;
...
...
@@ -653,7 +669,7 @@ int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) {
}
taosCloseFile
(
&
pFile
);
if
(
line
!=
NULL
)
tfree
(
line
);
if
(
line
!=
NULL
)
tfree
(
line
);
uInfo
(
"load from cfg file %s success"
,
filepath
);
return
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录