]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | ||
3 | [ "$1" = "-q" ] && quiet=true || quiet=false | |
4 | ||
5 | set -e | |
6 | SRC="https://pci-ids.ucw.cz/v2.2/pci.ids" | |
7 | DEST=pci.ids | |
8 | PCI_COMPRESSED_IDS= | |
9 | GREP=grep | |
10 | ||
11 | # if pci.ids is read-only (because the filesystem is read-only), | |
12 | # then just skip this whole process. | |
13 | if ! touch ${DEST} >/dev/null 2>&1 ; then | |
14 | ${quiet} || echo "${DEST} is read-only, exiting." 1>&2 | |
15 | exit 1 | |
16 | fi | |
17 | ||
18 | if [ "$PCI_COMPRESSED_IDS" = 1 ] ; then | |
19 | DECOMP="cat" | |
20 | SRC="$SRC.gz" | |
21 | GREP=zgrep | |
22 | elif which bzip2 >/dev/null 2>&1 ; then | |
23 | DECOMP="bzip2 -d" | |
24 | SRC="$SRC.bz2" | |
25 | elif which gzip >/dev/null 2>&1 ; then | |
26 | DECOMP="gzip -d" | |
27 | SRC="$SRC.gz" | |
28 | else | |
29 | DECOMP="cat" | |
30 | fi | |
31 | ||
32 | if which curl >/dev/null 2>&1 ; then | |
33 | DL="curl -o $DEST.new $SRC" | |
34 | ${quiet} && DL="$DL -s -S" | |
35 | elif which wget >/dev/null 2>&1 ; then | |
36 | DL="wget --no-timestamping -O $DEST.new $SRC" | |
37 | ${quiet} && DL="$DL -q" | |
38 | elif which lynx >/dev/null 2>&1 ; then | |
39 | DL="eval lynx -source $SRC >$DEST.new" | |
40 | else | |
41 | echo >&2 "update-pciids: cannot find curl, wget or lynx" | |
42 | exit 1 | |
43 | fi | |
44 | ||
45 | if ! $DL ; then | |
46 | echo >&2 "update-pciids: download failed" | |
47 | rm -f $DEST.new | |
48 | exit 1 | |
49 | fi | |
50 | ||
51 | if ! $DECOMP <$DEST.new >$DEST.neww ; then | |
52 | echo >&2 "update-pciids: decompression failed, probably truncated file" | |
53 | exit 1 | |
54 | fi | |
55 | ||
56 | if ! $GREP >/dev/null "^C " $DEST.neww ; then | |
57 | echo >&2 "update-pciids: missing class info, probably truncated file" | |
58 | exit 1 | |
59 | fi | |
60 | ||
61 | if [ -f $DEST ] ; then | |
62 | mv $DEST $DEST.old | |
63 | # --reference is supported only by chmod from GNU file, so let's ignore any errors | |
64 | chmod -f --reference=$DEST.old $DEST.neww 2>/dev/null || true | |
65 | fi | |
66 | mv $DEST.neww $DEST | |
67 | rm $DEST.new | |
68 | ||
69 | # Older versions did not compress the ids file, so let's make sure we | |
70 | # clean that up. | |
71 | if [ ${DEST%.gz} != ${DEST} ] ; then | |
72 | rm -f ${DEST%.gz} ${DEST%.gz}.old | |
73 | fi | |
74 | ||
75 | ${quiet} || echo "Done." |