summaryrefslogtreecommitdiffstats
path: root/PCBSD/pc-sysinstall/backend-partmanager/delete-part.sh
blob: a1f0a1dd7c526a97232408ef4a8efc4e519b1769 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/sh
# Delete a specified partition, takes effect immediately
########################################################

. ${PROGDIR}/backend/functions.sh
. ${PROGDIR}/backend/functions-disk.sh

if [ -z "${1}" ]
then
  echo "Error: No partition specified!"
  exit 1
fi

if [ ! -e "/dev/${1}" ]
then
  echo "Error: Partition /dev/${1} does not exist!"
  exit 1
fi

PARTITION="${1}"

# First lets figure out the partition number for the given device
##################################################################

# Get the number of characters in this dev
CHARS="`echo $PARTITION | wc -c`"

PARTINDEX=""

# Lets read through backwards until we get the part number
while 
z=1
do
  CHARS=`expr $CHARS - 1`
  LAST_CHAR=`echo "${PARTITION}" | cut -c $CHARS`
  echo "${LAST_CHAR}" | grep "^[0-9]$" >/dev/null 2>/dev/null
  if [ "$?" = "0" ] ; then
    PARTINDEX="${LAST_CHAR}${PARTINDEX}"
  else
    break
  fi
done

# Now get current disk we are working on
CHARS=`expr $CHARS - 1`
DISK="`echo $PARTITION | cut -c 1-${CHARS}`"

# Make sure we have a valid disk name still
if [ ! -e "/dev/${DISK}" ] ; then
  echo "Error: Disk: ${DISK} doesnt exist!"
  exit 1
fi

echo "Running: gpart delete -i ${PARTINDEX} ${DISK}"
gpart delete -i ${PARTINDEX} ${DISK} >/dev/null 2>/dev/null

# Check if this was the last partition and destroy the disk geom if so
get_disk_partitions "${DISK}"
if [ -z "${VAL}" ] ; then
  gpart destroy ${DISK}  
fi

exit "$?"
OpenPOWER on IntegriCloud