1 | # Clean PCI header script
|
---|
2 | #
|
---|
3 | # Copyright 2006, Haiku.
|
---|
4 | # Distributed under the terms of the MIT License.
|
---|
5 | #
|
---|
6 | # Authors:
|
---|
7 | # John Drinkwater, john@nextraweb.com
|
---|
8 | #
|
---|
9 | # Use with http://pcidatabase.com/pci_c_header.php
|
---|
10 | # run as: sed -f pci-clean pci-input > pci-output
|
---|
11 |
|
---|
12 | #s/[^:]\/\/.*$// # strip comments
|
---|
13 | s/[^][A-Za-z0-9 "{}_,;=#!*()'.:+@/\t&\-]//g # strip unknown characters
|
---|
14 | #s/[^[:alnum:][:punct:][:space:]]//g # ^^ is this cleaner ?
|
---|
15 | s/&#[[:xdigit:]]*;//g # remove HTML escaped unicode..
|
---|
16 | s/[é]//g # remove UTF prefixes, and other junk
|
---|
17 | s/???//g # replace filler with something cleaner
|
---|
18 | s/(?)//g # remove “Whats this” uncertanty
|
---|
19 | /, ,/d # missing IDs
|
---|
20 | /"", ""/d # entries with no information
|
---|
21 | s/\\n//g # cheeky newlines
|
---|
22 | #/PCI\\VEN/d # ugly PCI strings. Todo: delete lines?
|
---|
23 | s/\\/\\\\/g # make PCI\VEN strings tidy. Todo: remove anyway?
|
---|
24 | s/0X\([[:xdigit:]]\)/0x\1/g # some lines dont have clean xs
|
---|
25 | s/0\*\([[:xdigit:]]\)/0x\1/g # some lines dont have clean xs
|
---|
26 | s/0x /0x/g # clean redunant space
|
---|
27 | #/x[A-Fa-f0-9]*O[A-Fa-f0-9]*/y/O/0/ # Greedy. Todo: find a better replacement ?
|
---|
28 | /x[[:xdigit:]]*O[[:xdigit:]]*/ { # cull stupid people, hexes with O
|
---|
29 | s/O/0/ # Only does the first..
|
---|
30 | }
|
---|
31 | /0x[[:xdigit:]]\{5,8\}/d # weird IDs, remove. Todo: improve
|
---|
32 | s/0xIBM\([[:xdigit:]]\{4\}\)/0x\1/g # stupid ID. Todo: delete { wait for pcidatabase }
|
---|
33 | # clean ##(#(#)) IDs into 0x((0)0)##
|
---|
34 | s/^\([^"]*\)[^x"[:xdigit:]]\([[:xdigit:]]\{4\}\),/\1 0x\2,/g
|
---|
35 | s/^\([^"]*\)[^x"[:xdigit:]]\([[:xdigit:]]\{3\}\),/\1 0x0\2,/g
|
---|
36 | s/^\([^"]*\)[^x"[:xdigit:]]\([[:xdigit:]]\{2\}\),/\1 0x00\2,/g
|
---|
37 | # clean 0x### IDs into 0x0###
|
---|
38 | s/0x\([[:xdigit:]]\{3\}\),/0x0\1,/g
|
---|
39 |
|
---|
40 | # now weʼll just strip the lines that dont obey!
|
---|
41 | # look at device table..
|
---|
42 | /\t{ 0x[[:xdigit:]]\{4\}, [^"]/ {
|
---|
43 | # because devices classes shouldn't be looked at
|
---|
44 |
|
---|
45 | s/0x\([[:xdigit:]]\{2\}\),/0x00\1,/g # make them all 4 wide
|
---|
46 | /, 0x[A-Fa-f0-9]\{4\},/!d # check device IDs are OK
|
---|
47 | }
|
---|
48 |
|
---|