diff --git a/services/include/init_utils.h b/services/include/init_utils.h index 7d241a83be71d2a06ba6f36e0374f053646d7e8e..944be66c158ab11a724fcdb12e2fd9c34a730eab 100644 --- a/services/include/init_utils.h +++ b/services/include/init_utils.h @@ -79,6 +79,8 @@ int GetMapValue(const char *name, const InitArgInfo *infos, int argNum, int defV const InitArgInfo *GetServieStatusMap(int *size); uint32_t GetRandom(void); void OpenConsole(void); +void TrimTail(char *str, char c); +char *TrimHead(char *str, char c); INIT_LOCAL_API int StringToULL(const char *str, unsigned long long int *out); INIT_LOCAL_API int StringToLL(const char *str, long long int *out); diff --git a/services/init/standard/init.c b/services/init/standard/init.c index f81e6f197d167218a9bc3460bc463410c3d99862..9392217006ecf9d7721b85741c37961d6f8680b7 100755 --- a/services/init/standard/init.c +++ b/services/init/standard/init.c @@ -367,8 +367,8 @@ void SystemConfig(void) options.preHook = InitPreHook; options.postHook = InitPostHook; - HookMgrExecute(GetBootStageHookMgr(), INIT_GLOBAL_INIT, (void *)&timingStat, (void *)&options); InitServiceSpace(); + HookMgrExecute(GetBootStageHookMgr(), INIT_GLOBAL_INIT, (void *)&timingStat, (void *)&options); HookMgrExecute(GetBootStageHookMgr(), INIT_PRE_PARAM_SERVICE, (void *)&timingStat, (void *)&options); InitParamService(); diff --git a/services/init/standard/init_mount.c b/services/init/standard/init_mount.c index 862e62032f906b2804bf48502d694d9b7791f01f..7930f676eeebe6f867432b36495766a46cef133c 100644 --- a/services/init/standard/init_mount.c +++ b/services/init/standard/init_mount.c @@ -75,6 +75,7 @@ static Fstab* LoadFstabFromCommandLine(void) bool isDone = false; INIT_ERROR_CHECK(cmdline != NULL, return NULL, "Read from \'/proc/cmdline\' failed, err = %d", errno); + TrimTail(cmdline, '\n'); INIT_ERROR_CHECK((fstab = (Fstab *)calloc(1, sizeof(Fstab))) != NULL, return NULL, "Allocate memory for FS table failed, err = %d", errno); char *start = cmdline; diff --git a/services/utils/init_utils.c b/services/utils/init_utils.c index 717f4ea54c39ff8b5c9055d15de477875f8eba70..5b67a63ff2ad7f963dedb0e7e1da379ec79d81fd 100644 --- a/services/utils/init_utils.c +++ b/services/utils/init_utils.c @@ -287,7 +287,7 @@ char **SplitStringExt(char *buffer, const char *del, int *returnCount, int maxIt INIT_LOGV("Too many items,expand size"); char **expand = (char **)(realloc(items, sizeof(char *) * itemCounts)); INIT_ERROR_CHECK(expand != NULL, FreeStringVector(items, count); - return NULL, "Failed to expand memory for uevent config parser"); + return NULL, "Failed to expand memory"); items = expand; } size_t len = strlen(p); @@ -630,3 +630,23 @@ INIT_LOCAL_API int StringToULL(const char *str, unsigned long long int *out) BEGET_CHECK(*end == '\0', return -1); return 0; } + +void TrimTail(char *str, char c) +{ + char *end = str + strlen(str) - 1; + while (end >= str && *end == c) { + *end = '\0'; + end--; + } +} + +char *TrimHead(char *str, char c) +{ + char *head = str; + const char *end = str + strlen(str); + while (head < end && *head == c) { + *head = '\0'; + head++; + } + return head; +}