diff options
author | Richard Purdie <richard@openedhand.com> | 2006-07-21 10:10:31 +0000 |
---|---|---|
committer | Richard Purdie <richard@openedhand.com> | 2006-07-21 10:10:31 +0000 |
commit | b2f192faabe412adce79534e22efe9fb69ee40e2 (patch) | |
tree | 7076c49d4286f8a1733650bd8fbc7161af200d57 /meta/packages/initscripts/initscripts-1.0/populate-volatile.sh | |
parent | 2cf0eadf9f730027833af802d7e6c90b44248f80 (diff) | |
download | poky-b2f192faabe412adce79534e22efe9fb69ee40e2.tar.gz |
Rename /openembedded/ -> /meta/
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@530 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta/packages/initscripts/initscripts-1.0/populate-volatile.sh')
-rwxr-xr-x | meta/packages/initscripts/initscripts-1.0/populate-volatile.sh | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/meta/packages/initscripts/initscripts-1.0/populate-volatile.sh b/meta/packages/initscripts/initscripts-1.0/populate-volatile.sh new file mode 100755 index 0000000000..99a469d576 --- /dev/null +++ b/meta/packages/initscripts/initscripts-1.0/populate-volatile.sh | |||
@@ -0,0 +1,138 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | . /etc/default/rcS | ||
4 | |||
5 | CFGDIR="/etc/default/volatiles" | ||
6 | TMPROOT="/var/tmp" | ||
7 | COREDEF="00_core" | ||
8 | |||
9 | [ "${VERBOSE}" != "no" ] && echo "Populating volatile Filesystems." | ||
10 | |||
11 | |||
12 | check_requirements() { | ||
13 | |||
14 | cleanup() { | ||
15 | rm "${TMP_INTERMED}" | ||
16 | rm "${TMP_DEFINED}" | ||
17 | rm "${TMP_COMBINED}" | ||
18 | } | ||
19 | |||
20 | CFGFILE="$1" | ||
21 | |||
22 | [ `basename "${CFGFILE}"` = "${COREDEF}" ] && return 0 | ||
23 | |||
24 | TMP_INTERMED="${TMPROOT}/tmp.$$" | ||
25 | TMP_DEFINED="${TMPROOT}/tmpdefined.$$" | ||
26 | TMP_COMBINED="${TMPROOT}/tmpcombined.$$" | ||
27 | |||
28 | |||
29 | cat /etc/passwd | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}" | ||
30 | cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 2 > "${TMP_INTERMED}" | ||
31 | cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}" | ||
32 | |||
33 | NR_DEFINED_USERS="`cat "${TMP_DEFINED}" | wc -l`" | ||
34 | NR_COMBINED_USERS="`cat "${TMP_COMBINED}" | wc -l`" | ||
35 | |||
36 | [ "${NR_DEFINED_USERS}" -ne "${NR_COMBINED_USERS}" ] && { | ||
37 | echo "Undefined users:" | ||
38 | diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>" | ||
39 | cleanup | ||
40 | return 1 | ||
41 | } | ||
42 | |||
43 | |||
44 | cat /etc/group | sed 's@\(^:\)*:.*@\1@' | sort | uniq > "${TMP_DEFINED}" | ||
45 | cat ${CFGFILE} | grep -v "^#" | cut -d " " -f 3 > "${TMP_INTERMED}" | ||
46 | cat "${TMP_DEFINED}" "${TMP_INTERMED}" | sort | uniq > "${TMP_COMBINED}" | ||
47 | |||
48 | NR_DEFINED_GROUPS="`cat "${TMP_DEFINED}" | wc -l`" | ||
49 | NR_COMBINED_GROUPS="`cat "${TMP_COMBINED}" | wc -l`" | ||
50 | |||
51 | [ "${NR_DEFINED_GROUPS}" -ne "${NR_COMBINED_GROUPS}" ] && { | ||
52 | echo "Undefined groups:" | ||
53 | diff "${TMP_DEFINED}" "${TMP_COMBINED}" | grep "^>" | ||
54 | cleanup | ||
55 | return 1 | ||
56 | } | ||
57 | |||
58 | # Add checks for required directories here | ||
59 | |||
60 | cleanup | ||
61 | return 0 | ||
62 | } | ||
63 | |||
64 | apply_cfgfile() { | ||
65 | |||
66 | CFGFILE="$1" | ||
67 | |||
68 | check_requirements "${CFGFILE}" || { | ||
69 | echo "Skipping ${CFGFILE}" | ||
70 | return 1 | ||
71 | } | ||
72 | |||
73 | cat ${CFGFILE} | grep -v "^#" | \ | ||
74 | while read LINE; do | ||
75 | TTYPE=`echo ${LINE} | cut -d " " -f 1` | ||
76 | TUSER=`echo ${LINE} | cut -d " " -f 2` | ||
77 | TGROUP=`echo ${LINE} | cut -d " " -f 3` | ||
78 | TMODE=`echo ${LINE} | cut -d " " -f 4` | ||
79 | TNAME=`echo ${LINE} | cut -d " " -f 5` | ||
80 | |||
81 | [ "${VERBOSE}" != "no" ] && echo "Checking for -${TNAME}-." | ||
82 | |||
83 | [ "${TTYPE}" = "l" ] && { | ||
84 | [ -e "${TNAME}" ] && { | ||
85 | echo "Cannot create link over existing -${TNAME}-." >&2 | ||
86 | } || { | ||
87 | TSOURCE=`echo ${LINE} | cut -d " " -f 6` | ||
88 | [ "${VERBOSE}" != "no" ] && echo "Creating link -${TNAME}- pointing to -${TSOURCE}-." | ||
89 | ln -s "${TSOURCE}" "${TNAME}" | ||
90 | } | ||
91 | continue | ||
92 | } | ||
93 | |||
94 | [ -L "${TNAME}" ] && { | ||
95 | [ "${VERBOSE}" != "no" ] && echo "Found link." | ||
96 | NEWNAME=`ls -l "${TNAME}" | sed -e 's/^.*-> \(.*\)$/\1/'` | ||
97 | echo ${NEWNAME} | grep -v "^/" >/dev/null && { | ||
98 | TNAME="`echo ${TNAME} | sed -e 's@\(.*\)/.*@\1@'`/${NEWNAME}" | ||
99 | [ "${VERBOSE}" != "no" ] && echo "Converted relative linktarget to absolute path -${TNAME}-." | ||
100 | } || { | ||
101 | TNAME="${NEWNAME}" | ||
102 | [ "${VERBOSE}" != "no" ] && echo "Using absolute link target -${TNAME}-." | ||
103 | } | ||
104 | } | ||
105 | |||
106 | [ -e "${TNAME}" ] && { | ||
107 | [ "${VERBOSE}" != "no" ] && echo "Target already exists. Skipping." | ||
108 | continue | ||
109 | } | ||
110 | |||
111 | case "${TTYPE}" in | ||
112 | "f") [ "${VERBOSE}" != "no" ] && echo "Creating file -${TNAME}-." | ||
113 | touch "${TNAME}" | ||
114 | ;; | ||
115 | "d") [ "${VERBOSE}" != "no" ] && echo "Creating directory -${TNAME}-." | ||
116 | mkdir -p "${TNAME}" | ||
117 | # Add check to see if there's an entry in fstab to mount. | ||
118 | ;; | ||
119 | *) [ "${VERBOSE}" != "no" ] && echo "Invalid type -${TTYPE}-." | ||
120 | continue | ||
121 | ;; | ||
122 | esac | ||
123 | |||
124 | chown ${TUSER} ${TNAME} || echo "Failed to set owner -${TUSER}- for -${TNAME}-." >&2 | ||
125 | chgrp ${TGROUP} ${TNAME} || echo "Failed to set group -${TGROUP}- for -${TNAME}-." >&2 | ||
126 | chmod ${TMODE} ${TNAME} || echo "Failed to set mode -${TMODE}- for -${TNAME}-." >&2 | ||
127 | |||
128 | done | ||
129 | |||
130 | return 0 | ||
131 | |||
132 | } | ||
133 | |||
134 | |||
135 | for file in `ls -1 "${CFGDIR}" | sort`; do | ||
136 | apply_cfgfile "${CFGDIR}/${file}" | ||
137 | done | ||
138 | |||