makedevs: support optional files

Add the 'F' file type to makedevs, that allows a file to be optional.
With this option, the line is just silently skipped if the file doesn't
exist (or is not a regular file).

This is useful for _PERMISSIONS where the file can be configured out
by package-specific configuration that is not directly handled by
Buildroot, like busybox.

Cc: Clayton Shotwell <clayton.shotwell@rockwellcollins.com>
Cc: Matthew Weber <matthew.weber@rockwellcollins.com>
Cc: Niranjan Reddy <niranjan.reddy@rockwellcollins.com>
Cc: Bryce Ferguson <bryce.ferguson@rockwellcollins.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Arnout Vandecappelle 2017-07-03 23:00:48 +02:00 committed by Thomas Petazzoni
parent 05b90f4513
commit bdbbc72934

View File

@ -570,9 +570,12 @@ int main(int argc, char **argv)
ret = EXIT_FAILURE; ret = EXIT_FAILURE;
goto loop; goto loop;
} }
} else if (type == 'f') { } else if (type == 'f' || type == 'F') {
struct stat st; struct stat st;
if ((stat(full_name, &st) < 0 || !S_ISREG(st.st_mode))) { if ((stat(full_name, &st) < 0 || !S_ISREG(st.st_mode))) {
if (type == 'F') {
continue; /*Ignore optional files*/
}
bb_perror_msg("line %d: regular file '%s' does not exist", linenum, full_name); bb_perror_msg("line %d: regular file '%s' does not exist", linenum, full_name);
ret = EXIT_FAILURE; ret = EXIT_FAILURE;
goto loop; goto loop;