init: Unify kernel bootconfig parser with libfs_mgr
Right now there are two bootconfig parsers that gets linked into `init`. One is from libinit itself and the other is from libfs_mgr. The one in libinit removes all space characters between list elements, so `key = "val1", "val2"` gets unquoted and squeezed into: `key=val1,val2` The one in libfs_mgr doesn't remove spaces, it only unquotes: `key=val1, val2` The libinit behavior is due to existing systems (such as sysprop) expect the config value to be in the same format as kernel cmdline. (aosp/1757971) THe libfs_mgr behavior is due to the `androidboot.boot_device[s]` format explicitly allows quoted comma appear in its list value, thus relies on space, not comma, as the list value delimeter. This commit merges the two parsers into libfs_mgr. Since all usages in libfs_mgr besides `boot_device[s]` do not care about how list value are delimited, and most usages in init expects the bootconfig value format to be the same format as cmdline. We just special case the `boot_device` scenario. Also harden the test cases to cover all the different config value format and expected result. Note: The format of kernel bootconfig is described here https://docs.kernel.org/admin-guide/bootconfig.html Bug: 293695109 Test: CtsFsMgrTestCases Change-Id: I42b9bf626e8de38a60e8e09fac0693126b7efd91
Loading
Please register or sign in to comment