@@ -45,17 +45,16 @@ _GET_SELINUX_LABEL()
45
45
FILE=" /$FILE "
46
46
fi
47
47
48
- local PATTERN
49
48
local LABEL
50
49
while IFS= read -r l; do
51
- l=" $( tr -s " " <<< " $l" ) "
52
- PATTERN=" $( cut -d " " -f 1 <<< " $l" ) "
53
- LABEL=" $( cut -d " " -f 2 <<< " $l" ) "
54
- if grep -q -P " $PATTERN " <<< " $FILE" ; then
55
- echo " $LABEL "
50
+ l=" $( tr -s " \t" " " <<< " $l" ) "
51
+ if [[ " $FILE " =~ ^$( cut -d " " -f 1 <<< " $l" ) $ ]]; then
52
+ LABEL=" $( cut -d " " -f 2 <<< " $l" ) "
56
53
break
57
54
fi
58
- done < " $FC_FILE "
55
+ done <<< " $(tac " $FC_FILE " )"
56
+
57
+ echo " $LABEL "
59
58
}
60
59
61
60
_IS_VALID_PARTITION_NAME ()
@@ -131,7 +130,7 @@ _GET_PROP_FILES_PATH()
131
130
_GET_PROP_LOCATION ()
132
131
{
133
132
local FILES
134
- FILES=$( _GET_PROP_FILES_PATH " ${1:? } " )
133
+ FILES=" $( _GET_PROP_FILES_PATH " ${1:? } " ) "
135
134
136
135
if _IS_VALID_PARTITION_NAME " ${1:? } " ; then
137
136
shift
@@ -201,19 +200,27 @@ ADD_TO_WORK_DIR()
201
200
local SOURCE_FILE=" $SOURCE "
202
201
local TARGET_FILE=" $WORK_DIR "
203
202
if [[ " $PARTITION " == " system_ext" ]]; then
204
- if [[ " $SOURCE " != " $FW_DIR " * ]] || $SOURCE_HAS_SYSTEM_EXT ; then
205
- SOURCE_FILE+=" /$PARTITION /$FILE "
203
+ if [ -d " $SOURCE /system_ext " ] ; then
204
+ SOURCE_FILE+=" /system_ext /$FILE "
206
205
else
207
206
SOURCE_FILE+=" /system/system/system_ext/$FILE "
208
207
fi
209
208
210
209
if $TARGET_HAS_SYSTEM_EXT ; then
211
- TARGET_FILE+=" /$PARTITION /$FILE "
210
+ TARGET_FILE+=" /system_ext /$FILE "
212
211
else
213
212
PARTITION=" system"
214
213
FILE=" system/system_ext/$FILE "
215
214
TARGET_FILE+=" /system/$FILE "
216
215
fi
216
+ elif [[ " $PARTITION " == " system" ]]; then
217
+ if [ -d " $SOURCE /system/system" ]; then
218
+ SOURCE_FILE+=" /system/$FILE "
219
+ TARGET_FILE+=" /system/$FILE "
220
+ else
221
+ SOURCE_FILE+=" /system/${FILE// system\/ / } "
222
+ TARGET_FILE+=" /system/system/${FILE// system\/ / } "
223
+ fi
217
224
else
218
225
SOURCE_FILE+=" /$PARTITION /$FILE "
219
226
TARGET_FILE+=" /$PARTITION /$FILE "
@@ -234,6 +241,7 @@ ADD_TO_WORK_DIR()
234
241
local TMP
235
242
TMP=" ${TARGET_FILE// $WORK_DIR \/ / } "
236
243
[[ " $PARTITION " == " system" ]] && TMP=" ${TMP// system\/ system\/ / system/ } "
244
+ TMP=" ${TMP%/ .} "
237
245
if ! grep -q -F " $TMP " " $WORK_DIR /configs/fs_config-$PARTITION " 2> /dev/null; then
238
246
echo " $TMP $USER $GROUP $MODE capabilities=0x0" >> " $WORK_DIR /configs/fs_config-$PARTITION "
239
247
fi
@@ -244,26 +252,30 @@ ADD_TO_WORK_DIR()
244
252
245
253
if [ -d " $TARGET_FILE " ]; then
246
254
local FILES
247
- FILES=" $( find " $SOURCE_FILE " ) "
255
+ FILES=" $( find " ${ SOURCE_FILE%/ .} " ) "
248
256
FILES=" ${FILES// $SOURCE \/ / } "
249
257
[[ " $PARTITION " == " system" ]] && FILES=" ${FILES// system\/ system\/ / system/ } "
258
+ $TARGET_HAS_SYSTEM_EXT || FILES=" ${FILES// system_ext\/ / system/ system_ext/ } "
250
259
260
+ # shellcheck disable=SC2116
251
261
for f in $( echo " $FILES " ) ; do
262
+ _IS_VALID_PARTITION_NAME " $f " && continue
263
+
252
264
if ! grep -q -F " $f " " $WORK_DIR /configs/fs_config-$PARTITION " 2> /dev/null; then
253
265
if grep -q -F " $f " " $SOURCE /fs_config-$PARTITION " 2> /dev/null; then
254
266
grep -F " $f " " $SOURCE /fs_config-$PARTITION " >> " $WORK_DIR /configs/fs_config-$PARTITION "
255
267
else
256
- if [ -d " $SOURCE /$f " ] || [ -d " $SOURCE /system/$f " ]; then
268
+ if [ -d " $SOURCE /$f " ] || [ -d " $SOURCE /system/$f " ] || [ -d " $SOURCE / ${f // system \/ / } " ] ; then
257
269
if [[ " $PARTITION " == " vendor" ]]; then
258
- echo " $TMP 0 2000 755 capabilities=0x0" >> " $WORK_DIR /configs/fs_config-vendor"
270
+ echo " $f 0 2000 755 capabilities=0x0" >> " $WORK_DIR /configs/fs_config-vendor"
259
271
else
260
- echo " $TMP 0 0 755 capabilities=0x0" >> " $WORK_DIR /configs/fs_config-$PARTITION "
272
+ echo " $f 0 0 755 capabilities=0x0" >> " $WORK_DIR /configs/fs_config-$PARTITION "
261
273
fi
262
274
else
263
275
if [[ " $PARTITION " == " vendor" ]]; then
264
- echo " $TMP 0 2000 644 capabilities=0x0" >> " $WORK_DIR /configs/fs_config-vendor"
276
+ echo " $f 0 2000 644 capabilities=0x0" >> " $WORK_DIR /configs/fs_config-vendor"
265
277
else
266
- echo " $TMP 0 0 644 capabilities=0x0" >> " $WORK_DIR /configs/fs_config-$PARTITION "
278
+ echo " $f 0 0 644 capabilities=0x0" >> " $WORK_DIR /configs/fs_config-$PARTITION "
267
279
fi
268
280
fi
269
281
fi
@@ -278,9 +290,12 @@ ADD_TO_WORK_DIR()
278
290
fi
279
291
done
280
292
else
281
- TMP=" $( dirname " ${TARGET_FILE// $WORK_DIR \/ / } " ) "
293
+ TMP=" ${TARGET_FILE%/ .} "
294
+ TMP=" $( dirname " ${TMP// $WORK_DIR \/ / } " ) "
282
295
[[ " $PARTITION " == " system" ]] && TMP=" ${TMP// system\/ system\/ / system/ } "
283
296
while [[ " $TMP " != " ." ]]; do
297
+ _IS_VALID_PARTITION_NAME " $TMP " && break
298
+
284
299
if ! grep -q -F " $TMP " " $WORK_DIR /configs/fs_config-$PARTITION " 2> /dev/null; then
285
300
if grep -q -F " $TMP " " $SOURCE /fs_config-$PARTITION " 2> /dev/null; then
286
301
grep -F " $TMP " " $SOURCE /fs_config-$PARTITION " >> " $WORK_DIR /configs/fs_config-$PARTITION "
@@ -298,10 +313,13 @@ ADD_TO_WORK_DIR()
298
313
TMP=" $( dirname " $TMP " ) "
299
314
done
300
315
301
- TMP=" $( dirname " ${TARGET_FILE// $WORK_DIR \/ / } " ) "
316
+ TMP=" ${TARGET_FILE%/ .} "
317
+ TMP=" $( dirname " ${TMP// $WORK_DIR \/ / } " ) "
302
318
[[ " $PARTITION " == " system" ]] && TMP=" ${TMP// system\/ system\/ / system/ } "
303
319
while [[ " $TMP " != " ." ]]
304
320
do
321
+ _IS_VALID_PARTITION_NAME " $TMP " && break
322
+
305
323
if ! grep -q -F " /${TMP// \. / \\ .} " " $WORK_DIR /configs/file_context-$PARTITION " 2> /dev/null; then
306
324
if grep -q -F " /${TMP// \. / \\ .} " " $SOURCE /file_context-$PARTITION " 2> /dev/null; then
307
325
grep -F " /${TMP// \. / \\ .} " " $SOURCE /file_context-$PARTITION " >> " $WORK_DIR /configs/file_context-$PARTITION "
@@ -354,7 +372,7 @@ DELETE_FROM_WORK_DIR()
354
372
fi
355
373
356
374
FILE_PATH=" $( _GET_WORK_DIR_PARTITION_PATH " $PARTITION " ) /$FILE "
357
- if [ ! -e " $FILE_PATH " ]; then
375
+ if [ ! -e " $FILE_PATH " ] && [ ! -L " $FILE_PATH " ] ; then
358
376
echo " File not found: $FILE_PATH "
359
377
return 0
360
378
fi
@@ -414,7 +432,7 @@ GET_PROP()
414
432
FILES=" $1 "
415
433
shift
416
434
else
417
- FILES=$( _GET_PROP_FILES_PATH " ${1:? } " )
435
+ FILES=" $( _GET_PROP_FILES_PATH " ${1:? } " ) "
418
436
if _IS_VALID_PARTITION_NAME " ${1:? } " ; then
419
437
shift
420
438
fi
0 commit comments