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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
| #!/bin/sh
### GLOBALS
IMG_EXT="{png,jpg,gif}"
SQL_FILE="my_images_mysql.sql"
SQL_INS="INSERT INTO images VALUES ("
SQL_IMAGEID_RANGE=0
SQL_IMAGETYPE=1
SQL_NAME=""
SQL_IMAGE=""
### ERROR
NORMAL=0
ERR_ARGS=1
ERR_NO_DIR=2
ERR_NO_FILE=3
RETVAL=$NORMAL
########################################################################
### Actual Main
########################################################################
main() {
local dir=$1
local num=$2
# check the number of command argument
if [ $# -lt 2 ]; then
return $ERR_ARGS
fi
# check target dir
[ ! -d $dir ] && return $ERR_NO_DIR
# check target file
check_image_file $dir || return $?
# make sql file
make_sql_file $num
return $RETVAL
}
########################################################################
### Check image files existence
########################################################################
check_image_file() {
local dir=$1
local file_num=0
file_num=$(eval ls $dir/*.$IMG_EXT 2>/dev/null | wc -l)
[ $file_num -eq 0 ] && return $ERR_NO_FILE
return $RETVAL
}
########################################################################
### Make SQL file to insert image files
########################################################################
make_sql_file() {
local f=
[ -f $SQL_FILE ] && rm -f $SQL_FILE
SQL_IMAGEID=$1
for f in $(eval ls $dir/*.$IMG_EXT 2>/dev/null)
do
SQL_NAME=$(basename $f | cut -d. -f1)
SQL_IMAGE="0x$(od -tx1 $f | awk '{for(i=2; i<=NF; i++) printf("%s", toupper($i))}')"
echo "$SQL_INS $SQL_IMAGEID, $SQL_IMAGETYPE, '$SQL_NAME', $SQL_IMAGE);" >> $SQL_FILE
SQL_IMAGEID=$(($SQL_IMAGEID + 1))
echo -n "." # in progress
done
echo -e "\ncompleted"
return $RETVAL
}
########################################################################
### Check error and display error message
########################################################################
check_error() {
local result=$1
case $result in
$ERR_ARGS)
usage
;;
$ERR_NO_DIR)
echo "cannot find target dir"
;;
$ERR_NO_FILE)
echo "cannot find \"*.$IMG_EXT\" files"
;;
*)
echo "unknown error"
;;
esac
return $result
}
########################################################################
### Usage
########################################################################
usage() {
echo "Usage: make_img_insert_sql.sh <dir> <start_imageid>"
}
########################################################################
### Script Main
########################################################################
main "$@" || check_error $?
|