makedevs: support optional files
authorArnout Vandecappelle <arnout@mind.be>
Mon, 3 Jul 2017 21:00:48 +0000 (23:00 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mon, 3 Jul 2017 22:54:36 +0000 (00:54 +0200)
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>
package/makedevs/makedevs.c

index 7092b1475ec4dc847b95308bf8cb05fde80c0a63..1ba5936342abb02052f7033de02e3897ea64ccf6 100644 (file)
@@ -570,9 +570,12 @@ int main(int argc, char **argv)
                                ret = EXIT_FAILURE;
                                goto loop;
                        }
-               } else if (type == 'f') {
+               } else if (type == 'f' || type == 'F') {
                        struct stat st;
                        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);
                                ret = EXIT_FAILURE;
                                goto loop;