-
Notifications
You must be signed in to change notification settings - Fork 0
/
exfloppy.sh
executable file
·60 lines (49 loc) · 1.22 KB
/
exfloppy.sh
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
#!/bin/sh
ARG_ERROR=0
IMAGE_FILE=""
EXTRACT_DIR=""
EXT=".img"
INDIVIDUAL=0
MCOPY=`which mcopy`
if [ ! -x "$MCOPY" ]; then
echo "Missing dependency: mtools"
exit 1
fi
while [ "$1" ]; do
case "$1" in
"-i"|"--individual")
INDIVIDUAL=1
;;
"-e"|"--extension")
shift
EXT="$1"
;;
*)
if [ -z "$IMAGE_FILE" ]; then
IMAGE_FILE="$1"
elif [ -z "$EXTRACT_DIR" ]; then
EXTRACT_DIR="$1"
else
ARG_ERROR=1
fi
;;
esac
shift
done
if [ $ARG_ERROR = 1 ] || [ -z "$IMAGE_FILE" ] || [ -f "$EXTRACT_DIR" ]; then
echo "usage: $0 <image_file> [destination_dir]"
exit 1
fi
if [ -z "$EXTRACT_DIR" ]; then
EXTRACT_DIR="$(basename "$IMAGE_FILE" $EXT)"
echo "Defaulting to extract directory: $EXTRACT_DIR"
fi
mkdir -p -v "$EXTRACT_DIR"
if [ $INDIVIDUAL -eq 1 ]; then
mkdir -p -v "$EXTRACT_DIR/$(basename "$IMAGE_FILE" $EXT)"
echo "Extracting $IMAGE_FILE to $EXTRACT_DIR/$(basename "$IMAGE_FILE" $EXT)..."
$MCOPY -si "$IMAGE_FILE" ::\* "$EXTRACT_DIR/$(basename "$IMAGE_FILE" $EXT)"
else
echo "Extracting $IMAGE_FILE to $EXTRACT_DIR..."
$MCOPY -si "$IMAGE_FILE" ::\* "$EXTRACT_DIR"
fi