]>
git.proxmox.com Git - mirror_smartmontools-debian.git/blob - update-smart-drivedb.in
1bd6395b67b7c4c700cf43e09fff897e94760197
3 # smartmontools drive database update script
5 # Copyright (C) 2010-13 Christian Franke <smartmontools-support@lists.sourceforge.net>
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2, or (at your option)
12 # You should have received a copy of the GNU General Public License
13 # (for example COPYING); If not, see <http://www.gnu.org/licenses/>.
15 # $Id: update-smart-drivedb.in 3814 2013-06-04 19:38:25Z chrfranke $
20 # Set by config.status
24 exec_prefix
="@exec_prefix@"
26 datarootdir
="@datarootdir@"
28 drivedbdir
="@drivedbdir@"
31 os_dltools
="@os_dltools@"
33 # drivedb.h update branch
34 BRANCH
="@DRIVEDB_BRANCH@"
36 # Default drivedb location
37 DEST
="$drivedbdir/drivedb.h"
39 # Smartctl used for syntax check
40 SMARTCTL
="$sbindir/smartctl"
42 # Download URL for sourceforge code browser
43 SRCEXPR
='http://sourceforge.net/p/smartmontools/code/HEAD/tree/$location/smartmontools/drivedb.h?format=raw'
54 smartmontools $VERSION drive database update script
56 Usage: $0 [-v] [DESTFILE]
61 or DESTFILE from smartmontools SVN repository.
62 Tries to download first from branch $BRANCH
72 # Abort if 'which' is not available
73 which which >/dev
/null ||
exit 1
77 for t
in $os_dltools; do
78 if which $t >/dev
/null
2>/dev
/null
; then
80 curl
) DOWNLOAD
="curl ${q:+-s }"'-f -o "$DEST.new" "$SRC"' ;;
81 lynx
) DOWNLOAD
='lynx -source "$SRC" >"$DEST.new"' ;;
82 wget
) DOWNLOAD
="wget $q"'-O "$DEST.new" "$SRC"' ;;
83 fetch
) DOWNLOAD
='fetch -o "$DEST.new" "$SRC"' ;; # FreeBSD
84 ftp) DOWNLOAD
='ftp -o "$DEST.new" "$SRC"' ;; # OpenBSD
89 if [ -z "$DOWNLOAD" ]; then
90 echo "$0: found none of: $os_dltools" >&2; exit 1
93 # Try possible branch first, then trunk
94 for location
in "branches/$BRANCH" "trunk"; do
95 test -n "$q" ||
echo "Download from $location"
99 SRC
="`eval echo "$SRCEXPR"`"
101 if (eval $DOWNLOAD); then :; else
102 errmsg
="download from $location failed (HTTP error)"
105 if grep -i '<title>.*Error has Occurred' "$DEST.new" >/dev
/null
; then
106 errmsg
="download from $location failed (SF code browser error)"
113 if [ -n "$errmsg" ]; then
115 echo "$0: $errmsg" >&2
119 # Adjust timestamp and permissions
121 chmod 0644 "$DEST.new"
125 if $SMARTCTL -B "$DEST.new" -P showall
>/dev
/null
; then :; else
126 mv "$DEST.new" "$DEST.error"
127 echo "$DEST.error: rejected by $SMARTCTL, probably no longer compatible" >&2
131 # Keep old file if identical
132 rm -f "$DEST.lastcheck"
133 if [ -f "$DEST" ]; then
134 if cmp "$DEST" "$DEST.new" >/dev
/null
2>/dev
/null
; then
136 touch "$DEST.lastcheck"
137 echo "$DEST is already up to date"
140 mv "$DEST" "$DEST.old"
143 mv "$DEST.new" "$DEST"
145 echo "$DEST updated from $location"