xref: /aosp_15_r20/external/e2fsprogs/install-utils/convfstab (revision 6a54128f25917bfc36a8a6e9d722c04a0b4641b6)
1*6a54128fSAndroid Build Coastguard Worker#!/bin/sh
2*6a54128fSAndroid Build Coastguard Worker#  Make /etc/fstab standard compliant.
3*6a54128fSAndroid Build Coastguard Worker#  M.Weller ([email protected]) 13.11.1994.
4*6a54128fSAndroid Build Coastguard Worker#  This script is public domain. Still if only slightly
5*6a54128fSAndroid Build Coastguard Worker#  modified a credit to me might be nice.
6*6a54128fSAndroid Build Coastguard Worker
7*6a54128fSAndroid Build Coastguard WorkerROOT_PASS=1		# Pass for root file system
8*6a54128fSAndroid Build Coastguard WorkerNON_ROOT_PASS=2		# Pass for non root file systems
9*6a54128fSAndroid Build Coastguard WorkerDEF_FLAGS="defaults"	# Default filesysflags
10*6a54128fSAndroid Build Coastguard WorkerDEF_DUMP=0		# Default dumpfreq.
11*6a54128fSAndroid Build Coastguard Worker
12*6a54128fSAndroid Build Coastguard Workerwhile read LINE
13*6a54128fSAndroid Build Coastguard Workerdo
14*6a54128fSAndroid Build Coastguard Worker  set -- $LINE
15*6a54128fSAndroid Build Coastguard Worker  if [ $# != 0 ]
16*6a54128fSAndroid Build Coastguard Worker  then
17*6a54128fSAndroid Build Coastguard Worker    case $1 in
18*6a54128fSAndroid Build Coastguard Worker      \#* | !* )
19*6a54128fSAndroid Build Coastguard Worker	echo "$LINE"
20*6a54128fSAndroid Build Coastguard Worker	#  Actually there are no comments allowed in /etc/fstab
21*6a54128fSAndroid Build Coastguard Worker	echo "Warning: comment in /etc/fstab detected." >&2
22*6a54128fSAndroid Build Coastguard Worker	echo "Please remove it by hand." >&2
23*6a54128fSAndroid Build Coastguard Worker	;;
24*6a54128fSAndroid Build Coastguard Worker      * )
25*6a54128fSAndroid Build Coastguard Worker	if [ $# -gt 6 ] || [ $# -lt 3 ]
26*6a54128fSAndroid Build Coastguard Worker	then
27*6a54128fSAndroid Build Coastguard Worker	  echo "Don't have a clue about \"$LINE\"." >&2
28*6a54128fSAndroid Build Coastguard Worker	  echo "$LINE"
29*6a54128fSAndroid Build Coastguard Worker	else
30*6a54128fSAndroid Build Coastguard Worker	  case $2 in
31*6a54128fSAndroid Build Coastguard Worker	    / )
32*6a54128fSAndroid Build Coastguard Worker	      PASS=$ROOT_PASS
33*6a54128fSAndroid Build Coastguard Worker	      ;;
34*6a54128fSAndroid Build Coastguard Worker	    none )
35*6a54128fSAndroid Build Coastguard Worker	      PASS=0
36*6a54128fSAndroid Build Coastguard Worker	      ;;
37*6a54128fSAndroid Build Coastguard Worker	    * )
38*6a54128fSAndroid Build Coastguard Worker	      PASS=$NON_ROOT_PASS
39*6a54128fSAndroid Build Coastguard Worker	      ;;
40*6a54128fSAndroid Build Coastguard Worker	  esac
41*6a54128fSAndroid Build Coastguard Worker	  DUMP=$DEF_DUMP
42*6a54128fSAndroid Build Coastguard Worker	  case $3 in
43*6a54128fSAndroid Build Coastguard Worker	    ignore | iso9660 | msdos | hpfs | sysv | \
44*6a54128fSAndroid Build Coastguard Worker		  xenix | coherent | nfs | proc | sw | swap )
45*6a54128fSAndroid Build Coastguard Worker	      DUMP=0;
46*6a54128fSAndroid Build Coastguard Worker	      PASS=0;
47*6a54128fSAndroid Build Coastguard Worker	      ;;
48*6a54128fSAndroid Build Coastguard Worker	  esac
49*6a54128fSAndroid Build Coastguard Worker	  case $# in
50*6a54128fSAndroid Build Coastguard Worker	    3 )
51*6a54128fSAndroid Build Coastguard Worker	      echo "$LINE	$DEF_FLAGS	$DUMP	$PASS"
52*6a54128fSAndroid Build Coastguard Worker	      ;;
53*6a54128fSAndroid Build Coastguard Worker	    4 )
54*6a54128fSAndroid Build Coastguard Worker	      echo "$LINE	$DUMP	$PASS"
55*6a54128fSAndroid Build Coastguard Worker	      ;;
56*6a54128fSAndroid Build Coastguard Worker	    5 )
57*6a54128fSAndroid Build Coastguard Worker	      echo "$LINE	$PASS"
58*6a54128fSAndroid Build Coastguard Worker	      ;;
59*6a54128fSAndroid Build Coastguard Worker	    6)
60*6a54128fSAndroid Build Coastguard Worker	      echo "$LINE"
61*6a54128fSAndroid Build Coastguard Worker	      ;;
62*6a54128fSAndroid Build Coastguard Worker	  esac
63*6a54128fSAndroid Build Coastguard Worker	fi
64*6a54128fSAndroid Build Coastguard Worker	;;
65*6a54128fSAndroid Build Coastguard Worker    esac
66*6a54128fSAndroid Build Coastguard Worker  else
67*6a54128fSAndroid Build Coastguard Worker    echo "Warning: One empty line removed." >&2
68*6a54128fSAndroid Build Coastguard Worker  fi
69*6a54128fSAndroid Build Coastguard Workerdone </etc/fstab >/tmp/newfstab.$$
70*6a54128fSAndroid Build Coastguard Workermv -f /etc/fstab /etc/fstab.bak
71*6a54128fSAndroid Build Coastguard Workermv -f /tmp/newfstab.$$ /etc/fstab
72*6a54128fSAndroid Build Coastguard Workerif [ $? != 0 ]
73*6a54128fSAndroid Build Coastguard Workerthen
74*6a54128fSAndroid Build Coastguard Worker  echo "Installation of patched /etc/fstab failed."
75*6a54128fSAndroid Build Coastguard Worker  echo "It would have been:"
76*6a54128fSAndroid Build Coastguard Worker  cat /tmp/newfstab.$$
77*6a54128fSAndroid Build Coastguard Worker  rm -f /tmp/newfstab.$$
78*6a54128fSAndroid Build Coastguard Workerfi
79