Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
34ff191c
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
34ff191c
编写于
3月 25, 2014
作者:
J
Ján Tomko
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Indent top-level labels by one space in src/parallels/
上级
5d831597
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
78 addition
and
78 deletion
+78
-78
src/parallels/parallels_driver.c
src/parallels/parallels_driver.c
+32
-32
src/parallels/parallels_network.c
src/parallels/parallels_network.c
+11
-11
src/parallels/parallels_storage.c
src/parallels/parallels_storage.c
+34
-34
src/parallels/parallels_utils.c
src/parallels/parallels_utils.c
+1
-1
未找到文件。
src/parallels/parallels_driver.c
浏览文件 @
34ff191c
...
...
@@ -148,7 +148,7 @@ parallelsBuildCapabilities(void)
return
caps
;
error:
error:
virObjectUnref
(
caps
);
return
NULL
;
}
...
...
@@ -239,7 +239,7 @@ parallelsAddSerialInfo(virDomainChrDefPtr **serials, size_t *nserials,
return
0
;
cleanup:
cleanup:
virDomainChrDefFree
(
chr
);
return
-
1
;
}
...
...
@@ -284,7 +284,7 @@ parallelsAddVideoInfo(virDomainDefPtr def, virJSONValuePtr value)
return
0
;
error:
error:
VIR_FREE
(
accel
);
virDomainVideoDefFree
(
video
);
return
-
1
;
...
...
@@ -390,7 +390,7 @@ parallelsAddHddInfo(virDomainDefPtr def, const char *key, virJSONValuePtr value)
return
0
;
error:
error:
virDomainDiskDefFree
(
disk
);
return
-
1
;
}
...
...
@@ -422,7 +422,7 @@ parallelsMacAddrParse(const char *str, virMacAddrPtr addr)
}
return
0
;
error:
error:
virReportError
(
VIR_ERR_INVALID_ARG
,
_
(
"Invalid MAC address format '%s'"
),
str
);
return
-
1
;
...
...
@@ -488,7 +488,7 @@ parallelsGetNetInfo(virDomainNetDefPtr net,
return
0
;
error:
error:
return
-
1
;
}
...
...
@@ -510,7 +510,7 @@ parallelsAddNetInfo(virDomainDefPtr def, const char *key, virJSONValuePtr value)
return
0
;
error:
error:
virDomainNetDefFree
(
net
);
return
-
1
;
}
...
...
@@ -554,7 +554,7 @@ parallelsAddDomainHardware(virDomainDefPtr def, virJSONValuePtr jobj)
return
0
;
cleanup:
cleanup:
return
-
1
;
}
...
...
@@ -627,7 +627,7 @@ parallelsAddVNCInfo(virDomainDefPtr def, virJSONValuePtr jobj_root)
return
0
;
cleanup:
cleanup:
virDomainGraphicsDefFree
(
gr
);
return
ret
;
}
...
...
@@ -818,7 +818,7 @@ parallelsLoadDomain(parallelsConnPtr privconn, virJSONValuePtr jobj)
return
dom
;
cleanup:
cleanup:
virDomainDefFree
(
def
);
parallelsDomObjFreePrivate
(
pdom
);
return
NULL
;
...
...
@@ -867,7 +867,7 @@ parallelsLoadDomains(parallelsConnPtr privconn, const char *domain_name)
ret
=
0
;
cleanup:
cleanup:
virJSONValueFree
(
jobj
);
return
ret
;
}
...
...
@@ -908,7 +908,7 @@ parallelsOpenDefault(virConnectPtr conn)
return
VIR_DRV_OPEN_SUCCESS
;
error:
error:
virObjectUnref
(
privconn
->
domains
);
virObjectUnref
(
privconn
->
caps
);
virStoragePoolObjListFree
(
&
privconn
->
pools
);
...
...
@@ -1008,7 +1008,7 @@ parallelsConnectGetVersion(virConnectPtr conn ATTRIBUTE_UNUSED, unsigned long *h
ret
=
0
;
cleanup:
cleanup:
VIR_FREE
(
output
);
return
ret
;
}
...
...
@@ -1114,7 +1114,7 @@ parallelsDomainLookupByID(virConnectPtr conn, int id)
if
(
ret
)
ret
->
id
=
dom
->
def
->
id
;
cleanup:
cleanup:
if
(
dom
)
virObjectUnlock
(
dom
);
return
ret
;
...
...
@@ -1143,7 +1143,7 @@ parallelsDomainLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
if
(
ret
)
ret
->
id
=
dom
->
def
->
id
;
cleanup:
cleanup:
if
(
dom
)
virObjectUnlock
(
dom
);
return
ret
;
...
...
@@ -1170,7 +1170,7 @@ parallelsDomainLookupByName(virConnectPtr conn, const char *name)
if
(
ret
)
ret
->
id
=
dom
->
def
->
id
;
cleanup:
cleanup:
if
(
dom
)
virObjectUnlock
(
dom
);
return
ret
;
...
...
@@ -1199,7 +1199,7 @@ parallelsDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
info
->
cpuTime
=
0
;
ret
=
0
;
cleanup:
cleanup:
if
(
privdom
)
virObjectUnlock
(
privdom
);
return
ret
;
...
...
@@ -1222,7 +1222,7 @@ parallelsDomainGetOSType(virDomainPtr domain)
ignore_value
(
VIR_STRDUP
(
ret
,
privdom
->
def
->
os
.
type
));
cleanup:
cleanup:
if
(
privdom
)
virObjectUnlock
(
privdom
);
parallelsDriverUnlock
(
privconn
);
...
...
@@ -1245,7 +1245,7 @@ parallelsDomainIsPersistent(virDomainPtr domain)
ret
=
1
;
cleanup:
cleanup:
if
(
privdom
)
virObjectUnlock
(
privdom
);
parallelsDriverUnlock
(
privconn
);
...
...
@@ -1273,7 +1273,7 @@ parallelsDomainGetState(virDomainPtr domain,
*
state
=
virDomainObjGetState
(
privdom
,
reason
);
ret
=
0
;
cleanup:
cleanup:
if
(
privdom
)
virObjectUnlock
(
privdom
);
return
ret
;
...
...
@@ -1303,7 +1303,7 @@ parallelsDomainGetXMLDesc(virDomainPtr domain, unsigned int flags)
ret
=
virDomainDefFormat
(
def
,
flags
);
cleanup:
cleanup:
if
(
privdom
)
virObjectUnlock
(
privdom
);
return
ret
;
...
...
@@ -1328,7 +1328,7 @@ parallelsDomainGetAutostart(virDomainPtr domain, int *autostart)
*
autostart
=
privdom
->
autostart
;
ret
=
0
;
cleanup:
cleanup:
if
(
privdom
)
virObjectUnlock
(
privdom
);
return
ret
;
...
...
@@ -1371,7 +1371,7 @@ parallelsDomainChangeState(virDomainPtr domain,
ret
=
0
;
cleanup:
cleanup:
if
(
privdom
)
virObjectUnlock
(
privdom
);
...
...
@@ -1490,7 +1490,7 @@ parallelsApplyGraphicsParams(virDomainGraphicsDefPtr *oldgraphics, int nold,
}
return
0
;
error:
error:
virReportError
(
VIR_ERR_ARGUMENT_UNSUPPORTED
,
"%s"
,
_
(
"changing display parameters is not supported "
"by parallels driver"
));
...
...
@@ -1538,7 +1538,7 @@ parallelsApplySerialParams(virDomainChrDefPtr *oldserials, int nold,
}
return
0
;
error:
error:
virReportError
(
VIR_ERR_ARGUMENT_UNSUPPORTED
,
"%s"
,
_
(
"changing serial device parameters is "
"not supported by parallels driver"
));
...
...
@@ -1634,7 +1634,7 @@ static int parallelsAddHddByVolume(parallelsDomObjPtr pdom,
goto
cleanup
;
ret
=
0
;
cleanup:
cleanup:
virCommandFree
(
cmd
);
return
ret
;
}
...
...
@@ -1674,7 +1674,7 @@ static int parallelsAddHdd(virConnectPtr conn,
ret
=
parallelsAddHddByVolume
(
pdom
,
disk
,
pool
,
voldef
);
cleanup:
cleanup:
if
(
pool
)
virStoragePoolObjUnlock
(
pool
);
virObjectUnref
(
vol
);
...
...
@@ -1895,7 +1895,7 @@ static int parallelsApplyIfaceParams(parallelsDomObjPtr pdom,
ret
=
0
;
cleanup:
cleanup:
if
(
create
)
VIR_FREE
(
oldnet
);
virCommandFree
(
cmd
);
...
...
@@ -2262,9 +2262,9 @@ parallelsCreateVm(virConnectPtr conn, virDomainDefPtr def)
return
0
;
error2:
error2:
virStoragePoolObjUnlock
(
pool
);
error:
error:
virObjectUnref
(
vol
);
return
-
1
;
}
...
...
@@ -2295,7 +2295,7 @@ parallelsCreateCt(virConnectPtr conn ATTRIBUTE_UNUSED, virDomainDefPtr def)
return
0
;
error:
error:
return
-
1
;
}
...
...
@@ -2361,7 +2361,7 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
if
(
ret
)
ret
->
id
=
dom
->
def
->
id
;
cleanup:
cleanup:
virDomainDefFree
(
def
);
if
(
dom
)
virObjectUnlock
(
dom
);
...
...
src/parallels/parallels_network.c
浏览文件 @
34ff191c
...
...
@@ -94,7 +94,7 @@ static int parallelsGetBridgedNetInfo(virNetworkDefPtr def, virJSONValuePtr jobj
ret
=
0
;
cleanup:
cleanup:
VIR_FREE
(
bridgeLink
);
VIR_FREE
(
bridgePath
);
VIR_FREE
(
bridgeAddress
);
...
...
@@ -175,7 +175,7 @@ static int parallelsGetHostOnlyNetInfo(virNetworkDefPtr def, const char *name)
}
ret
=
0
;
cleanup:
cleanup:
virJSONValueFree
(
jobj
);
return
ret
;
}
...
...
@@ -236,7 +236,7 @@ parallelsLoadNetwork(parallelsConnPtr privconn, virJSONValuePtr jobj)
virNetworkObjUnlock
(
net
);
return
net
;
cleanup:
cleanup:
virNetworkDefFree
(
def
);
return
NULL
;
}
...
...
@@ -273,7 +273,7 @@ parallelsAddRoutedNetwork(parallelsConnPtr privconn)
return
net
;
cleanup:
cleanup:
virNetworkDefFree
(
def
);
return
NULL
;
}
...
...
@@ -317,7 +317,7 @@ static int parallelsLoadNetworks(parallelsConnPtr privconn)
ret
=
0
;
cleanup:
cleanup:
virJSONValueFree
(
jobj
);
return
ret
;
}
...
...
@@ -480,7 +480,7 @@ static virNetworkPtr parallelsNetworkLookupByUUID(virConnectPtr conn,
ret
=
virGetNetwork
(
conn
,
network
->
def
->
name
,
network
->
def
->
uuid
);
cleanup:
cleanup:
if
(
network
)
virNetworkObjUnlock
(
network
);
return
ret
;
...
...
@@ -504,7 +504,7 @@ static virNetworkPtr parallelsNetworkLookupByName(virConnectPtr conn,
ret
=
virGetNetwork
(
conn
,
network
->
def
->
name
,
network
->
def
->
uuid
);
cleanup:
cleanup:
if
(
network
)
virNetworkObjUnlock
(
network
);
return
ret
;
...
...
@@ -531,7 +531,7 @@ static char *parallelsNetworkGetXMLDesc(virNetworkPtr net,
ret
=
virNetworkDefFormat
(
network
->
def
,
flags
);
cleanup:
cleanup:
if
(
network
)
virNetworkObjUnlock
(
network
);
return
ret
;
...
...
@@ -552,7 +552,7 @@ static int parallelsNetworkIsActive(virNetworkPtr net)
}
ret
=
virNetworkObjIsActive
(
obj
);
cleanup:
cleanup:
if
(
obj
)
virNetworkObjUnlock
(
obj
);
return
ret
;
...
...
@@ -573,7 +573,7 @@ static int parallelsNetworkIsPersistent(virNetworkPtr net)
}
ret
=
obj
->
persistent
;
cleanup:
cleanup:
if
(
obj
)
virNetworkObjUnlock
(
obj
);
return
ret
;
...
...
@@ -598,7 +598,7 @@ static int parallelsNetworkGetAutostart(virNetworkPtr net,
*
autostart
=
network
->
autostart
;
ret
=
0
;
cleanup:
cleanup:
if
(
network
)
virNetworkObjUnlock
(
network
);
return
ret
;
...
...
src/parallels/parallels_storage.c
浏览文件 @
34ff191c
...
...
@@ -115,7 +115,7 @@ parallelsFindVolumes(virStoragePoolObjPtr pool)
}
ret
=
0
;
cleanup:
cleanup:
VIR_FREE
(
path
);
closedir
(
dir
);
return
ret
;
...
...
@@ -194,7 +194,7 @@ parallelsPoolCreateByPath(virConnectPtr conn, const char *path)
virStoragePoolObjUnlock
(
pool
);
return
pool
;
error:
error:
virStoragePoolDefFree
(
def
);
if
(
pool
)
virStoragePoolObjUnlock
(
pool
);
...
...
@@ -267,7 +267,7 @@ static int parallelsDiskDescParseNode(xmlDocPtr xml,
def
->
capacity
<<=
9
;
def
->
allocation
=
def
->
capacity
;
ret
=
0
;
cleanup:
cleanup:
xmlXPathFreeContext
(
ctxt
);
return
ret
;
...
...
@@ -315,9 +315,9 @@ static int parallelsAddDiskVolume(virStoragePoolObjPtr pool,
goto
error
;
return
0
;
no_memory:
no_memory:
virReportOOMError
();
error:
error:
virStorageVolDefFree
(
def
);
return
-
1
;
}
...
...
@@ -372,7 +372,7 @@ static int parallelsFindVmVolumes(virStoragePoolObjPtr pool,
}
ret
=
0
;
cleanup:
cleanup:
VIR_FREE
(
diskPath
);
VIR_FREE
(
diskDescPath
);
closedir
(
dir
);
...
...
@@ -446,7 +446,7 @@ static int parallelsLoadPools(virConnectPtr conn)
return
0
;
error:
error:
VIR_FREE
(
base
);
return
-
1
;
}
...
...
@@ -480,7 +480,7 @@ parallelsStorageOpen(virConnectPtr conn,
return
VIR_DRV_OPEN_SUCCESS
;
error:
error:
parallelsStorageUnlock
(
storageState
);
parallelsStorageClose
(
conn
);
return
-
1
;
...
...
@@ -524,7 +524,7 @@ parallelsConnectListStoragePools(virConnectPtr conn, char **const names, int nna
return
n
;
error:
error:
for
(
n
=
0
;
n
<
nnames
;
n
++
)
VIR_FREE
(
names
[
n
]);
parallelsDriverUnlock
(
privconn
);
...
...
@@ -573,7 +573,7 @@ parallelsConnectListDefinedStoragePools(virConnectPtr conn,
return
n
;
error:
error:
for
(
n
=
0
;
n
<
nnames
;
n
++
)
VIR_FREE
(
names
[
n
]);
parallelsDriverUnlock
(
privconn
);
...
...
@@ -597,7 +597,7 @@ parallelsStoragePoolIsActive(virStoragePoolPtr pool)
}
ret
=
virStoragePoolObjIsActive
(
obj
);
cleanup:
cleanup:
if
(
obj
)
virStoragePoolObjUnlock
(
obj
);
return
ret
;
...
...
@@ -628,7 +628,7 @@ parallelsStoragePoolLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
ret
=
virGetStoragePool
(
conn
,
pool
->
def
->
name
,
pool
->
def
->
uuid
,
NULL
,
NULL
);
cleanup:
cleanup:
if
(
pool
)
virStoragePoolObjUnlock
(
pool
);
return
ret
;
...
...
@@ -653,7 +653,7 @@ parallelsStoragePoolLookupByName(virConnectPtr conn, const char *name)
ret
=
virGetStoragePool
(
conn
,
pool
->
def
->
name
,
pool
->
def
->
uuid
,
NULL
,
NULL
);
cleanup:
cleanup:
if
(
pool
)
virStoragePoolObjUnlock
(
pool
);
return
ret
;
...
...
@@ -736,7 +736,7 @@ parallelsStoragePoolDefineXML(virConnectPtr conn,
ret
=
virGetStoragePool
(
conn
,
pool
->
def
->
name
,
pool
->
def
->
uuid
,
NULL
,
NULL
);
cleanup:
cleanup:
virStoragePoolDefFree
(
def
);
if
(
pool
)
virStoragePoolObjUnlock
(
pool
);
...
...
@@ -773,7 +773,7 @@ parallelsStoragePoolUndefine(virStoragePoolPtr pool)
virStoragePoolObjRemove
(
&
privconn
->
pools
,
privpool
);
ret
=
0
;
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
parallelsDriverUnlock
(
privconn
);
...
...
@@ -807,7 +807,7 @@ parallelsStoragePoolCreate(virStoragePoolPtr pool, unsigned int flags)
privpool
->
active
=
1
;
ret
=
0
;
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -840,7 +840,7 @@ parallelsStoragePoolDestroy(virStoragePoolPtr pool)
}
ret
=
0
;
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
parallelsDriverUnlock
(
privconn
);
...
...
@@ -872,7 +872,7 @@ parallelsStoragePoolRefresh(virStoragePoolPtr pool, unsigned int flags)
}
ret
=
0
;
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -905,7 +905,7 @@ parallelsStoragePoolGetInfo(virStoragePoolPtr pool, virStoragePoolInfoPtr info)
info
->
available
=
privpool
->
def
->
available
;
ret
=
0
;
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -931,7 +931,7 @@ parallelsStoragePoolGetXMLDesc(virStoragePoolPtr pool, unsigned int flags)
ret
=
virStoragePoolDefFormat
(
privpool
->
def
);
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -960,7 +960,7 @@ parallelsStoragePoolGetAutostart(virStoragePoolPtr pool, int *autostart)
}
ret
=
0
;
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -990,7 +990,7 @@ parallelsStoragePoolSetAutostart(virStoragePoolPtr pool, int autostart)
privpool
->
autostart
=
(
autostart
!=
0
);
ret
=
0
;
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -1020,7 +1020,7 @@ parallelsStoragePoolNumOfVolumes(virStoragePoolPtr pool)
ret
=
privpool
->
volumes
.
count
;
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -1061,7 +1061,7 @@ parallelsStoragePoolListVolumes(virStoragePoolPtr pool,
virStoragePoolObjUnlock
(
privpool
);
return
n
;
error:
error:
for
(
n
=
0
;
n
<
maxnames
;
n
++
)
VIR_FREE
(
names
[
i
]);
...
...
@@ -1107,7 +1107,7 @@ parallelsStorageVolLookupByName(virStoragePoolPtr pool,
privvol
->
name
,
privvol
->
key
,
NULL
,
NULL
);
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -1257,7 +1257,7 @@ parallelsStorageVolDefineXML(virStoragePoolObjPtr pool,
ret
=
privvol
;
privvol
=
NULL
;
cleanup:
cleanup:
virStorageVolDefFree
(
privvol
);
VIR_FREE
(
xml_path
);
return
ret
;
...
...
@@ -1296,7 +1296,7 @@ parallelsStorageVolCreateXML(virStoragePoolPtr pool,
ret
=
virGetStorageVol
(
pool
->
conn
,
privpool
->
def
->
name
,
privvol
->
name
,
privvol
->
key
,
NULL
,
NULL
);
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -1379,7 +1379,7 @@ parallelsStorageVolCreateXMLFrom(virStoragePoolPtr pool,
NULL
,
NULL
);
privvol
=
NULL
;
cleanup:
cleanup:
virStorageVolDefFree
(
privvol
);
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
...
...
@@ -1417,7 +1417,7 @@ int parallelsStorageVolDefRemove(virStoragePoolObjPtr privpool,
}
ret
=
0
;
cleanup:
cleanup:
VIR_FREE
(
xml_path
);
return
ret
;
}
...
...
@@ -1462,7 +1462,7 @@ parallelsStorageVolDelete(virStorageVolPtr vol, unsigned int flags)
ret
=
0
;
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -1478,7 +1478,7 @@ parallelsStorageVolTypeForPool(int pooltype)
case
VIR_STORAGE_POOL_FS
:
case
VIR_STORAGE_POOL_NETFS
:
return
VIR_STORAGE_VOL_FILE
;
default:
default:
return
VIR_STORAGE_VOL_BLOCK
;
}
}
...
...
@@ -1520,7 +1520,7 @@ parallelsStorageVolGetInfo(virStorageVolPtr vol, virStorageVolInfoPtr info)
info
->
allocation
=
privvol
->
allocation
;
ret
=
0
;
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -1561,7 +1561,7 @@ parallelsStorageVolGetXMLDesc(virStorageVolPtr vol, unsigned int flags)
ret
=
virStorageVolDefFormat
(
privpool
->
def
,
privvol
);
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
@@ -1600,7 +1600,7 @@ parallelsStorageVolGetPath(virStorageVolPtr vol)
ignore_value
(
VIR_STRDUP
(
ret
,
privvol
->
target
.
path
));
cleanup:
cleanup:
if
(
privpool
)
virStoragePoolObjUnlock
(
privpool
);
return
ret
;
...
...
src/parallels/parallels_utils.c
浏览文件 @
34ff191c
...
...
@@ -47,7 +47,7 @@ parallelsDoCmdRun(char **outbuf, const char *binary, va_list list)
ret
=
0
;
cleanup:
cleanup:
virCommandFree
(
cmd
);
if
(
ret
&&
outbuf
)
VIR_FREE
(
*
outbuf
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录