diff options
Diffstat (limited to 'main/openrc/0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch')
-rw-r--r-- | main/openrc/0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch | 111 |
1 files changed, 106 insertions, 5 deletions
diff --git a/main/openrc/0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch b/main/openrc/0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch index 3d4106009a1..c2b4f024eb2 100644 --- a/main/openrc/0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch +++ b/main/openrc/0001-call-sbin-mkmntdirs-in-localmount-OpenRC-service.patch @@ -1,14 +1,19 @@ -From 78245081fe109ed7777b79ba9c99890d56c21272 Mon Sep 17 00:00:00 2001 +From 908f77d4f1930c1ac0be036d3d2e10ff15f84fbf Mon Sep 17 00:00:00 2001 From: Natanael Copa <ncopa@alpinelinux.org> Date: Wed, 1 Feb 2017 04:04:52 +0000 Subject: [PATCH] call /sbin/mkmntdirs in localmount OpenRC service --- - init.d/localmount.in | 2 ++ - 1 file changed, 2 insertions(+) + init.d/localmount.in | 2 ++ + src/meson.build | 1 + + src/mkmntdirs/meson.build | 5 +++ + src/mkmntdirs/mkmntdirs.c | 67 +++++++++++++++++++++++++++++++++++++++ + 4 files changed, 75 insertions(+) + create mode 100644 src/mkmntdirs/meson.build + create mode 100644 src/mkmntdirs/mkmntdirs.c diff --git a/init.d/localmount.in b/init.d/localmount.in -index c571504a..14189396 100644 +index 8a66eb8d..19693b6b 100644 --- a/init.d/localmount.in +++ b/init.d/localmount.in @@ -21,6 +21,8 @@ depend() @@ -20,6 +25,102 @@ index c571504a..14189396 100644 # Mount local filesystems in /etc/fstab. # The types variable must start with no, and must be a type local critical= types="noproc" x= no_netdev= rc= +diff --git a/src/meson.build b/src/meson.build +index 76f6d8a1..0f640eec 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -12,6 +12,7 @@ subdir('is_newer_than') + subdir('is_older_than') + subdir('kill_all') + subdir('mark_service') ++subdir('mkmntdirs') + subdir('mountinfo') + subdir('on_ac_power') + subdir('openrc') +diff --git a/src/mkmntdirs/meson.build b/src/mkmntdirs/meson.build +new file mode 100644 +index 00000000..20f9762d +--- /dev/null ++++ b/src/mkmntdirs/meson.build +@@ -0,0 +1,5 @@ ++executable('mkmntdirs', ++ ['mkmntdirs.c'], ++ c_args : cc_branding_flags, ++ install: true, ++ install_dir: sbindir) +diff --git a/src/mkmntdirs/mkmntdirs.c b/src/mkmntdirs/mkmntdirs.c +new file mode 100644 +index 00000000..eaeae732 +--- /dev/null ++++ b/src/mkmntdirs/mkmntdirs.c +@@ -0,0 +1,67 @@ ++/* ++ * Create mount directories in fstab ++ * ++ * Copyright(c) 2008 Natanael Copa <natanael.copa@gmail.com> ++ * May be distributed under the terms of GPL-2 ++ * ++ * usage: mkmntdirs [fstab] ++ * ++ */ ++ ++#include <sys/stat.h> ++#include <sys/types.h> ++ ++#include <err.h> ++#include <mntent.h> ++#include <stdio.h> ++#include <string.h> ++ ++ ++#ifdef DEBUG ++#define mkdir_recursive(p) puts((p)) ++#else ++static void mkdir_recursive(char *path) ++{ ++ char *s = path; ++ while (1) { ++ int c = '\0'; ++ while (*s) { ++ if (*s == '/') { ++ do { ++ ++s; ++ } while (*s == '/'); ++ c = *s; /* Save the current char */ ++ *s = '\0'; /* and replace it with nul. */ ++ break; ++ } ++ ++s; ++ } ++ mkdir(path, 0755); ++ if (c == '\0') ++ return; ++ *s = c; ++ } ++} ++#endif ++ ++int main(int argc, const char *argv[]) ++{ ++ const char *filename = "/etc/fstab"; ++ FILE *f; ++ struct mntent *ent; ++ if (argc == 2) ++ filename = argv[1]; ++ ++ f = setmntent(filename, "r"); ++ if (f == NULL) ++ err(1, "%s", filename); ++ ++ while ((ent = getmntent(f)) != NULL) { ++ if (strcmp(ent->mnt_dir, "none") != 0) ++ mkdir_recursive(ent->mnt_dir); ++ } ++ ++ endmntent(f); ++ return 0; ++} ++ -- -2.33.1 +2.37.1 |