未验证 提交 d07d2f9e 编写于 作者: O openharmony_ci 提交者: Gitee

!881 fix:修改module install 命令错误

Merge pull request !881 from Mupceet/moduleinstall
...@@ -129,7 +129,7 @@ int ModuleMgrInstall(MODULE_MGR *moduleMgr, const char *moduleName, ...@@ -129,7 +129,7 @@ int ModuleMgrInstall(MODULE_MGR *moduleMgr, const char *moduleName,
int argc, const char *argv[]) int argc, const char *argv[])
{ {
MODULE_ITEM *module; MODULE_ITEM *module;
BEGET_LOGV("ModuleMgrInstall moduleName %s", moduleName);
// Get module manager // Get module manager
BEGET_CHECK(!(moduleMgr == NULL || moduleName == NULL), return -1); BEGET_CHECK(!(moduleMgr == NULL || moduleName == NULL), return -1);
// Create module item // Create module item
...@@ -148,6 +148,7 @@ int ModuleMgrInstall(MODULE_MGR *moduleMgr, const char *moduleName, ...@@ -148,6 +148,7 @@ int ModuleMgrInstall(MODULE_MGR *moduleMgr, const char *moduleName,
// Install // Install
module->handle = moduleInstall(module, argc, argv); module->handle = moduleInstall(module, argc, argv);
if (module->handle == NULL) { if (module->handle == NULL) {
BEGET_LOGE("Failed to install module %s", moduleName);
moduleDestroy((ListNode *)module); moduleDestroy((ListNode *)module);
return -1; return -1;
} }
...@@ -201,7 +202,12 @@ static void scanModules(MODULE_MGR *moduleMgr, const char *path) ...@@ -201,7 +202,12 @@ static void scanModules(MODULE_MGR *moduleMgr, const char *path)
} }
file->d_name[end] = '\0'; file->d_name[end] = '\0';
ret = ModuleMgrInstall(moduleMgr, file->d_name, 0, NULL); BEGET_LOGV("scanModules module %s", file->d_name);
if (strncmp(file->d_name, "lib", strlen("lib")) == 0) {
ret = ModuleMgrInstall(moduleMgr, file->d_name + strlen("lib"), 0, NULL);
} else {
ret = ModuleMgrInstall(moduleMgr, file->d_name, 0, NULL);
}
} }
closedir(dir); closedir(dir);
...@@ -249,10 +255,10 @@ void ModuleMgrUninstall(MODULE_MGR *moduleMgr, const char *name) ...@@ -249,10 +255,10 @@ void ModuleMgrUninstall(MODULE_MGR *moduleMgr, const char *name)
ListRemoveAll(&(moduleMgr->modules), moduleDestroy); ListRemoveAll(&(moduleMgr->modules), moduleDestroy);
return; return;
} }
BEGET_LOGV("ModuleMgrUninstall moduleName %s", name);
// Find module by name // Find module by name
module = (MODULE_ITEM *)ListFind(&(moduleMgr->modules), (void *)name, moduleCompare); module = (MODULE_ITEM *)ListFind(&(moduleMgr->modules), (void *)name, moduleCompare);
BEGET_CHECK(module != NULL, return); BEGET_ERROR_CHECK(module != NULL, return, "Can not find module %s", name);
// Remove from the list // Remove from the list
ListRemove((ListNode *)module); ListRemove((ListNode *)module);
......
...@@ -19,33 +19,45 @@ ...@@ -19,33 +19,45 @@
#include "begetctl.h" #include "begetctl.h"
#include "control_fd.h" #include "control_fd.h"
#include "init_utils.h" #include "init_utils.h"
#include "init_param.h"
#include "securec.h" #include "securec.h"
#include "shell_utils.h"
#define MODULE_CTL_CMD_ARGS 2 #define MODULE_CTL_CMD_ARGS 2
static int main_cmd(BShellHandle shell, int argc, char **argv) static int32_t ModuleInstallCmd(BShellHandle shell, int32_t argc, char *argv[])
{ {
if (argc != MODULE_CTL_CMD_ARGS) {
BShellCmdHelp(shell, argc, argv);
return 0;
}
BSH_LOGV("ModuleInstallCmd %s %s \n", argv[0], argv[1]);
char combinedArgs[MAX_BUFFER_LEN]; char combinedArgs[MAX_BUFFER_LEN];
int ret = sprintf_s(combinedArgs, sizeof(combinedArgs), "ohos.servicectrl.%s", argv[0]);
BSH_CHECK(ret > 0, return -1, "Invalid buffer");
combinedArgs[ret] = '\0';
SystemSetParameter(combinedArgs, argv[1]);
return 0;
}
if (argc < MODULE_CTL_CMD_ARGS) { static int ModuleDisplayCmd(BShellHandle shell, int argc, char **argv)
{
if (argc < 1) {
BShellCmdHelp(shell, argc, argv); BShellCmdHelp(shell, argc, argv);
return 0; return 0;
} }
if (argc > MODULE_CTL_CMD_ARGS) { CmdClientInit(INIT_CONTROL_FD_SOCKET_PATH, ACTION_MODULEMGR, argv[0], "FIFO");
(void)snprintf_s(combinedArgs, sizeof(combinedArgs),
sizeof(combinedArgs) - 1, "%s:%s", argv[1], argv[2]);
CmdClientInit(INIT_CONTROL_FD_SOCKET_PATH, ACTION_MODULEMGR, combinedArgs, "FIFO");
} else {
CmdClientInit(INIT_CONTROL_FD_SOCKET_PATH, ACTION_MODULEMGR, argv[1], "FIFO");
}
return 0; return 0;
} }
MODULE_CONSTRUCTOR(void) MODULE_CONSTRUCTOR(void)
{ {
const CmdInfo infos[] = { const CmdInfo infos[] = {
{"modulectl", main_cmd, "dump all modules installed", "modulectl list", NULL}, {"modulectl", ModuleDisplayCmd, "dump all modules installed",
{"modulectl", main_cmd, "install or uninstall specified module", "modulectl list", "modulectl list"},
"modulectl install|uninstall moduleName", NULL}, {"modulectl", ModuleInstallCmd, "install specified module",
"modulectl install moduleName", "modulectl install"},
{"modulectl", ModuleInstallCmd, "uninstall specified module",
"modulectl uninstall moduleName", "modulectl uninstall"},
}; };
for (size_t i = 0; i < sizeof(infos) / sizeof(infos[0]); i++) { for (size_t i = 0; i < sizeof(infos) / sizeof(infos[0]); i++) {
BShellEnvRegitsterCmd(GetShellHandle(), &infos[i]); BShellEnvRegitsterCmd(GetShellHandle(), &infos[i]);
......
...@@ -57,29 +57,14 @@ static void ProcessDumpServiceControlFd(uint16_t type, const char *serviceCmd) ...@@ -57,29 +57,14 @@ static void ProcessDumpServiceControlFd(uint16_t type, const char *serviceCmd)
static void ProcessModuleMgrControlFd(uint16_t type, const char *serviceCmd) static void ProcessModuleMgrControlFd(uint16_t type, const char *serviceCmd)
{ {
#define MODULE_INSTALL_PREFIX "install:"
#define MODULE_UNINSTALL_PREFIX "uninstall:"
int cmdLen;
if ((type != ACTION_MODULEMGR) || (serviceCmd == NULL)) { if ((type != ACTION_MODULEMGR) || (serviceCmd == NULL)) {
return; return;
} }
INIT_LOGE("ProcessModuleMgrControlFd argc [%s] \n", serviceCmd);
if (strcmp(serviceCmd, "list") == 0) { if (strcmp(serviceCmd, "list") == 0) {
InitModuleMgrDump(); InitModuleMgrDump();
return; return;
} }
cmdLen = strlen(MODULE_INSTALL_PREFIX);
if (strncmp(serviceCmd, MODULE_INSTALL_PREFIX, cmdLen) == 0) {
INIT_LOGI("Install %s now ...\n", serviceCmd + cmdLen);
InitModuleMgrInstall(serviceCmd + cmdLen);
return;
}
cmdLen = strlen(MODULE_UNINSTALL_PREFIX);
if (strncmp(serviceCmd, MODULE_UNINSTALL_PREFIX, cmdLen) == 0) {
INIT_LOGI("Uninstall %s now ...\n", serviceCmd + cmdLen);
InitModuleMgrUnInstall(serviceCmd + cmdLen);
return;
}
} }
static void ProcessParamShellControlFd(uint16_t type, const char *serviceCmd) static void ProcessParamShellControlFd(uint16_t type, const char *serviceCmd)
......
...@@ -92,18 +92,18 @@ HWTEST_F(ModuleMgrUnitTest, ModuleInstallTest, TestSize.Level1) ...@@ -92,18 +92,18 @@ HWTEST_F(ModuleMgrUnitTest, ModuleInstallTest, TestSize.Level1)
ASSERT_EQ(cnt, 0); ASSERT_EQ(cnt, 0);
// Install one module // Install one module
ret = ModuleMgrInstall(moduleMgr, "libbootchart", 0, NULL); ret = ModuleMgrInstall(moduleMgr, "bootchart", 0, NULL);
ASSERT_EQ(ret, 0); ASSERT_EQ(ret, 0);
cnt = ModuleMgrGetCnt(moduleMgr); cnt = ModuleMgrGetCnt(moduleMgr);
ASSERT_EQ(cnt, 1); ASSERT_EQ(cnt, 1);
// Uninstall the module // Uninstall the module
ModuleMgrUninstall(moduleMgr, "libbootchart"); ModuleMgrUninstall(moduleMgr, "bootchart");
cnt = ModuleMgrGetCnt(moduleMgr); cnt = ModuleMgrGetCnt(moduleMgr);
ASSERT_EQ(cnt, 0); ASSERT_EQ(cnt, 0);
// Install two module // Install two module
ret = ModuleMgrInstall(moduleMgr, "libbootchart", 0, NULL); ret = ModuleMgrInstall(moduleMgr, "bootchart", 0, NULL);
ASSERT_EQ(ret, 0); ASSERT_EQ(ret, 0);
cnt = ModuleMgrGetCnt(moduleMgr); cnt = ModuleMgrGetCnt(moduleMgr);
ASSERT_EQ(cnt, 1); ASSERT_EQ(cnt, 1);
...@@ -113,7 +113,7 @@ HWTEST_F(ModuleMgrUnitTest, ModuleInstallTest, TestSize.Level1) ...@@ -113,7 +113,7 @@ HWTEST_F(ModuleMgrUnitTest, ModuleInstallTest, TestSize.Level1)
ASSERT_EQ(cnt, 1); ASSERT_EQ(cnt, 1);
// Uninstall the module // Uninstall the module
ModuleMgrUninstall(moduleMgr, "libbootchart"); ModuleMgrUninstall(moduleMgr, "bootchart");
cnt = ModuleMgrGetCnt(moduleMgr); cnt = ModuleMgrGetCnt(moduleMgr);
ASSERT_EQ(cnt, 0); ASSERT_EQ(cnt, 0);
ModuleMgrUninstall(moduleMgr, "notexist"); ModuleMgrUninstall(moduleMgr, "notexist");
......
...@@ -366,10 +366,8 @@ void PrepareInitUnitTestEnv(void) ...@@ -366,10 +366,8 @@ void PrepareInitUnitTestEnv(void)
PrepareInnerKitsCfg(); PrepareInnerKitsCfg();
PrepareModCfg(); PrepareModCfg();
PrepareGroupTestCfg(); PrepareGroupTestCfg();
EnableInitLog(INIT_DEBUG);
#if !(defined __LITEOS_A__ || defined __LITEOS_M__) #if !(defined __LITEOS_A__ || defined __LITEOS_M__)
PrepareCmdLineHasSn();
// for dac // for dac
std::string dacData = "ohos.servicectrl. = system:servicectrl:0775 \n"; std::string dacData = "ohos.servicectrl. = system:servicectrl:0775 \n";
dacData += "test.permission. = root:root:0770\n"; dacData += "test.permission. = root:root:0770\n";
...@@ -377,12 +375,16 @@ void PrepareInitUnitTestEnv(void) ...@@ -377,12 +375,16 @@ void PrepareInitUnitTestEnv(void)
dacData += "test.permission.write.= root:root:0772\n"; dacData += "test.permission.write.= root:root:0772\n";
dacData += "test.permission.watcher. = root:root:0771\n"; dacData += "test.permission.watcher. = root:root:0771\n";
CreateTestFile(STARTUP_INIT_UT_PATH "/system/etc/param/ohos.para.dac", dacData.c_str()); CreateTestFile(STARTUP_INIT_UT_PATH "/system/etc/param/ohos.para.dac", dacData.c_str());
CreateTestFile(STARTUP_INIT_UT_PATH"/trigger_test.cfg", g_triggerData); CreateTestFile(STARTUP_INIT_UT_PATH"/trigger_test.cfg", g_triggerData);
TestSetSelinuxOps();
#endif #endif
InitParamService(); InitParamService();
#if !(defined __LITEOS_A__ || defined __LITEOS_M__)
PrepareCmdLineHasSn();
TestSetSelinuxOps();
LoadSpecialParam();
#endif
// read system parameters // read system parameters
LoadDefaultParams("/system/etc/param/ohos_const", LOAD_PARAM_NORMAL); LoadDefaultParams("/system/etc/param/ohos_const", LOAD_PARAM_NORMAL);
LoadDefaultParams("/vendor/etc/param", LOAD_PARAM_NORMAL); LoadDefaultParams("/vendor/etc/param", LOAD_PARAM_NORMAL);
...@@ -408,6 +410,7 @@ int TestFreeLocalSecurityLabel(ParamSecurityLabel *srcLabel) ...@@ -408,6 +410,7 @@ int TestFreeLocalSecurityLabel(ParamSecurityLabel *srcLabel)
static __attribute__((constructor(101))) void ParamTestStubInit(void) static __attribute__((constructor(101))) void ParamTestStubInit(void)
{ {
EnableInitLog(INIT_DEBUG);
PARAM_LOGI("ParamTestStubInit"); PARAM_LOGI("ParamTestStubInit");
PrepareInitUnitTestEnv(); PrepareInitUnitTestEnv();
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册