]> code.ossystems Code Review - openembedded-core.git/blob
2359381b93802b30f2db73f84210ba0e2e5443d6
[openembedded-core.git] /
1 From eec0503cfc36f63d777f5cb3f2719cecedcb8468 Mon Sep 17 00:00:00 2001
2 From: Haris Okanovic <haris.okanovic@ni.com>
3 Date: Mon, 7 Jan 2019 13:22:09 -0600
4 Subject: [PATCH] Workaround busybox limitation in Linux dhclient-script
5
6 Busybox is a lightweight implementation of coreutils commonly used on
7 space-constrained embedded Linux distributions. It's implementation of
8 chown and chmod doesn't provide a "--reference" option added to
9 client/scripts/linux as of commit 9261cb14. This change works around
10 that limitation by using stat to read ownership and permissions flags
11 and simple chown/chmod calls supported in both coreutils and busybox.
12
13     modified:   client/scripts/linux
14
15 Signed-off-by: Haris Okanovic <haris.okanovic@ni.com>
16 Upstream-Status: Pending [ISC-Bugs #48771]
17 ---
18  client/scripts/linux | 17 +++++++++++++----
19  1 file changed, 13 insertions(+), 4 deletions(-)
20
21 diff --git a/client/scripts/linux b/client/scripts/linux
22 index 0c429697..2435a44b 100755
23 --- a/client/scripts/linux
24 +++ b/client/scripts/linux
25 @@ -32,6 +32,17 @@
26  # if your system holds ip tool in a non-standard location.
27  ip=/sbin/ip
28  
29 +chown_chmod_by_reference() {
30 +    local reference_file="$1"
31 +    local target_file="$2"
32 +
33 +    local owner=$(stat -c "%u:%g" "$reference_file")
34 +    local perm=$(stat -c "%a" "$reference_file")
35 +
36 +    chown "$owner" "$target_file"
37 +    chmod "$perm" "$target_file"
38 +}
39 +
40  # update /etc/resolv.conf based on received values
41  # This updated version mostly follows Debian script by Andrew Pollock et al.
42  make_resolv_conf() {
43 @@ -74,8 +85,7 @@ make_resolv_conf() {
44          fi
45  
46         if [ -f /etc/resolv.conf ]; then
47 -           chown --reference=/etc/resolv.conf $new_resolv_conf
48 -           chmod --reference=/etc/resolv.conf $new_resolv_conf
49 +           chown_chmod_by_reference /etc/resolv.conf $new_resolv_conf
50         fi
51          mv -f $new_resolv_conf /etc/resolv.conf
52      # DHCPv6
53 @@ -101,8 +111,7 @@ make_resolv_conf() {
54          fi
55  
56         if [ -f /etc/resolv.conf ]; then
57 -            chown --reference=/etc/resolv.conf $new_resolv_conf
58 -            chmod --reference=/etc/resolv.conf $new_resolv_conf
59 +           chown_chmod_by_reference /etc/resolv.conf $new_resolv_conf
60         fi
61          mv -f $new_resolv_conf /etc/resolv.conf
62      fi
63 -- 
64 2.20.0
65