131 lines
2.8 KiB
Bash
Executable File
131 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# update-pciids.sh is licensed under the GNU General Public License
|
|
# (GPL) version 2 or above.
|
|
#
|
|
# Copyright (C) 2008-2010 Anibal Monsalve Salazar <anibal@debian.org>
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# Please read the "COPYING" file in the archive root, or visit
|
|
# http://www.gnu.org/licenses/gpl.html, for information about the GPL.
|
|
#
|
|
# This scipt is a rewrite of a script with the same name by
|
|
# Martin Mares.
|
|
|
|
set -e
|
|
|
|
#URL="http://pci-ids.ucw.cz/pci.ids"
|
|
URL="http://pciids.sourceforge.net/v2.2/pci.ids"
|
|
FILE=/usr/share/misc/pci.ids
|
|
|
|
RM="/bin/rm"
|
|
MV="/bin/mv"
|
|
SED="/bin/sed"
|
|
GREP="/bin/grep"
|
|
ECHO="/bin/echo"
|
|
CHMOD="/bin/chmod"
|
|
CHOWN="/bin/chown"
|
|
GUNZIP="/bin/gunzip"
|
|
BUNZIP2="/bin/bunzip2"
|
|
TOUCH="/usr/bin/touch"
|
|
WGET="/usr/bin/wget"
|
|
CURL="/usr/bin/curl"
|
|
LYNX="/usr/bin/lynx"
|
|
|
|
NEWFILE="$FILE.new"
|
|
OLDFILE="$FILE.old"
|
|
|
|
if [ "$1" = "-q" ]
|
|
then
|
|
quiet="yes"
|
|
else
|
|
quiet="no"
|
|
fi
|
|
|
|
if ! $TOUCH $NEWFILE > /dev/null 2>&1
|
|
then
|
|
$ECHO >&2 "update-pciids: $NEWFILE is read-only"
|
|
exit 1
|
|
fi
|
|
|
|
[ -f $NEWFILE ] && $RM $NEWFILE
|
|
[ -f $NEWFILE.bz2 ] && $RM $NEWFILE.bz2
|
|
[ -f $NEWFILE.gz ] && $RM $NEWFILE.gz
|
|
|
|
if [ -x $BUNZIP2 ]
|
|
then
|
|
EXT=".bz2"
|
|
UNZIP=$BUNZIP2
|
|
elif [ -x $GUNZIP ]
|
|
then
|
|
EXT=".gz"
|
|
UNZIP=$GUNZIP
|
|
else
|
|
$ECHO >&2 "update-pciids: cannot find bunzip2 or gunzip"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -x $WGET ]
|
|
then
|
|
$WGET -nv -O $NEWFILE$EXT $URL$EXT > /dev/null 2>&1
|
|
elif [ -x $CURL ]
|
|
then
|
|
$CURL -o $NEWFILE$EXT $URL$EXT > /dev/null 2>&1
|
|
elif [ -x $LYNX ]
|
|
then
|
|
$LYNX -source $URL$EXT > $NEWFILE$EXT
|
|
else
|
|
$ECHO >&2 "update-pciids: cannot find wget, curl or lynx"
|
|
exit 1
|
|
fi
|
|
|
|
$UNZIP < $NEWFILE$EXT > $NEWFILE
|
|
$RM $NEWFILE$EXT
|
|
|
|
if ! $GREP > /dev/null "^C " $NEWFILE
|
|
then
|
|
$ECHO >&2 "update-pciids: missing class info, probably truncated file"
|
|
exit 1
|
|
fi
|
|
|
|
date=$( $GREP -E "^#[[:space:]]Date:[[:space:]]*" $NEWFILE 2> /dev/null | $SED "s/^#[[:space:]]Date:[[:space:]]*//" )
|
|
|
|
if [ -z "$date" ]
|
|
then
|
|
$ECHO >&2 "update-pciids: missing snapshot date, probably truncated file"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -f $FILE ]
|
|
then
|
|
$CHOWN --reference="$FILE" "$NEWFILE"
|
|
$CHMOD --reference="$FILE" "$NEWFILE"
|
|
[ -f $OLDFILE ] && $RM $OLDFILE
|
|
$MV $FILE $OLDFILE
|
|
fi
|
|
|
|
$MV $NEWFILE $FILE
|
|
$TOUCH -d "$date" $FILE
|
|
|
|
if [ -f $FILE.gz ]
|
|
then
|
|
[ -f $OLDFILE.gz ] && $RM $OLDFILE.gz
|
|
$MV $FILE.gz $OLDFILE.gz
|
|
fi
|
|
|
|
if [ $quiet = "no" ]
|
|
then
|
|
$ECHO "Downloaded daily snapshot dated $date"
|
|
fi
|
|
|
|
exit 0
|