system/nxinit: Handle trailing file '\0'

When ETC_ROMFS is disabled to reduce the bin size, we can provide the init.rc
file via a pseudo-file in the boards/vendor directory. For example:
  - CONFIG_ETC_ROMFS=n
  - CONFIG_PSEUDOFS_FILE=y
  - CONFIG_DISABLE_PSEUDOFS_OPERATIONS=n
  ```C
  FAR const char *init_rc =
    "on init\n"
    "    start console\n";
    "service console sh\n"
    "    restart_period 100\n";

  int fd = open("/etc/init.d/init.rc", O_WRONLY | O_CREAT);
  /* ... */
  ssize_t n = write(fd, init_rc, strlen(init_rc) + 1);
  /* ... */
  close(fd);
  ```

The last character '\0' in the file content will be treated as a new line,
and the number of parsed parameters will be zero (abnormal, there should be
at least one keyword).

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
This commit is contained in:
wangjianyu3 2025-10-16 16:58:21 +08:00 committed by Xiang Xiao
parent e86c0b997d
commit df01c3cbfc

View file

@ -178,6 +178,10 @@ int init_parse_config_file(FAR const struct parser_s *parser,
*(nl++) = '\0';
n -= nl - buf;
init_debug("Line %3d: '%s'", ++line, buf);
if (*buf == '\0')
{
continue;
}
/* Skip empty lines and lines containing only whitespace */