@@ -546,26 +546,80 @@ print_options()
546
546
printf " %-23s:\n" " -----------------------"
547
547
}
548
548
549
- ext_label ()
549
+ dst_part_label ()
550
550
{
551
551
pnum=$1
552
552
fs_type=$2
553
- flag=$3
554
- label_arg=" "
553
+ label=" "
555
554
556
555
if [ " $ext_label " != " " ] && [[ " $fs_type " == * " ext" * ]]
557
556
then
558
557
rep=" ${ext_label: -1} "
559
558
if [ " $rep " == " #" ]
560
559
then
561
- label_arg=${ext_label:: -1}
562
- label_arg=" $flag $label_arg$pnum "
560
+ label=" ${ext_label:: -1} "
563
561
elif (( pnum == root_part_num))
564
562
then
565
- label_arg= " $flag $ext_label "
563
+ label= " $ext_label "
566
564
fi
567
565
fi
568
- printf -v " ${4} " " %s" " $label_arg "
566
+
567
+ if [ -z " $label " -a -n " ${src_label[$pnum]} " ]
568
+ then
569
+ label=" ${src_label[$pnum]} "
570
+ fi
571
+ printf -v " ${3} " " %s" " $label "
572
+ }
573
+
574
+ mkfs_label ()
575
+ {
576
+ pnum=$1
577
+ fs_type=$2
578
+
579
+ label_flag=" "
580
+ case " $fs_type " in
581
+ # This list is probably overcomplete, but might simplify
582
+ # future additions.
583
+ vfat|msdos|exfat|fat16|fat32)
584
+ label_flag=-n
585
+ ;;
586
+ ext2|ext3|ext4|ntfs|xfs)
587
+ label_flag=-L
588
+ ;;
589
+ hfs|hfsplus)
590
+ label_flag=-v
591
+ ;;
592
+ reiserfs)
593
+ label_flag=-l
594
+ ;;
595
+ esac
596
+
597
+
598
+ label_arg=" "
599
+ dst_part_label " $pnum " " $fs_type " label
600
+ if [ -n " $label " -a -n " $label_flag " ]
601
+ then
602
+ label_arg=" $label_flag $label "
603
+ fi
604
+ printf -v " ${3} " " %s" " $label_arg "
605
+ }
606
+
607
+ change_label ()
608
+ {
609
+ pnum=$1
610
+ fs_type=$2
611
+ dev=$3
612
+
613
+ dst_part_label " $pnum " " $fs_type " label
614
+ if [ " $label " != " " ] && [[ " $fs_type " == * " ext" * ]]
615
+ then
616
+ echo " e2label $dev $label "
617
+ e2label $dev $label
618
+ elif [ " $label " != " " ] && [[ " $fs_type " == * " fat" * ]]
619
+ then
620
+ echo " fatlabel $dev $label "
621
+ fatlabel $dev $label
622
+ fi
569
623
}
570
624
571
625
get_src_disk ()
@@ -1501,9 +1555,9 @@ Use -U for unattended even if initializing.
1501
1555
1502
1556
if [ " ${src_mounted_dir[p]} " == " /boot" ] && (( p == 1 ))
1503
1557
then
1504
- ext_label $p " $fs_type " " -L " label
1505
- printf " => mkfs -t $mkfs_type $label $dst_dev ..."
1506
- yes | mkfs -t $mkfs_type $label $dst_dev & >> /tmp/$PGM -output
1558
+ mkfs_label $p " $fs_type " label_opt
1559
+ printf " => mkfs -t $fs_type $label_opt $dst_dev ..."
1560
+ yes | mkfs -t $mkfs_type $label_opt $dst_dev & >> /tmp/$PGM -output
1507
1561
echo " "
1508
1562
else
1509
1563
if [ " $fs_type " == " swap" ]
@@ -1514,9 +1568,9 @@ Use -U for unattended even if initializing.
1514
1568
then
1515
1569
if [ " ${src_mounted_dir[p]} " != " " ] || (( p == n_image_parts))
1516
1570
then
1517
- ext_label $p $fs_type " -L " label
1518
- printf " => mkfs -t $mkfs_type $label $dst_dev ..."
1519
- yes | mkfs -t $mkfs_type $label $dst_dev & >> /tmp/$PGM -output
1571
+ mkfs_label " $p " " $fs_type " label_opt
1572
+ printf " => mkfs -t $mkfs_type $label_opt $dst_dev ..."
1573
+ yes | mkfs -t $mkfs_type $label_opt $dst_dev & >> /tmp/$PGM -output
1520
1574
echo " "
1521
1575
if (( p == n_image_parts))
1522
1576
then
@@ -1536,12 +1590,7 @@ Use -U for unattended even if initializing.
1536
1590
else
1537
1591
echo " "
1538
1592
fi
1539
- ext_label $p $fs_type " " label
1540
- if [ " $label " != " " ]
1541
- then
1542
- echo " e2label $dst_dev $label "
1543
- e2label $dst_dev $label
1544
- fi
1593
+ change_label " $p " " $fs_type " " $dst_dev "
1545
1594
fi
1546
1595
fi
1547
1596
fi
@@ -1663,13 +1712,7 @@ do
1663
1712
sync_msg_done=1
1664
1713
dst_dev=/dev/${dst_part_base}${p}
1665
1714
fs_type=${src_fs_type[$p]}
1666
- ext_label $p $fs_type " " label
1667
- if [ " $label " != " " ]
1668
- then
1669
- qecho " e2label $dst_dev $label "
1670
- e2label $dst_dev $label
1671
- fi
1672
-
1715
+ change_label " $p " " $fs_type " " $dst_dev "
1673
1716
mount_partition ${src_device[p]} $clone_src " "
1674
1717
mount_partition $dst_dev $clone " $clone_src "
1675
1718
unmount_list=" $clone_src $clone "
@@ -1681,12 +1724,7 @@ done
1681
1724
qprintf " Syncing mounted partitions:\n"
1682
1725
1683
1726
fs_type=${src_fs_type[$root_part_num]}
1684
- ext_label $root_part_num $fs_type " " label
1685
- if [ " $label " != " " ]
1686
- then
1687
- qecho " e2label $dst_root_dev $label "
1688
- e2label $dst_root_dev $label
1689
- fi
1727
+ change_label " $root_part_num " " $fs_type " " $dst_root_dev "
1690
1728
1691
1729
mount_partition $dst_root_dev $clone " "
1692
1730
unmount_list=" $clone "
@@ -1709,12 +1747,7 @@ do
1709
1747
1710
1748
dst_dev=/dev/${dst_part_base}${p}
1711
1749
fs_type=${src_fs_type[$p]}
1712
- ext_label $p $fs_type " " label
1713
- if [ " $label " != " " ]
1714
- then
1715
- qecho " e2label $dst_dev $label "
1716
- e2label $dst_dev $label
1717
- fi
1750
+ change_label " $p " " $fs_type " " $dst_dev "
1718
1751
1719
1752
mount_partition " $dst_dev " " $dst_dir " " $unmount_list "
1720
1753
rsync_file_system " ${src_mounted_dir[p]} /" " ${dst_dir} " " "
0 commit comments