summaryrefslogtreecommitdiffstats
path: root/sys/tools
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2004-12-30 23:18:34 +0000
committerimp <imp@FreeBSD.org>2004-12-30 23:18:34 +0000
commited702d58deca60e5abec53a3414feb004535c1e1 (patch)
tree331fe94a9176424a4447074692046c86021009cf /sys/tools
parentad4d00347bb24ffe155e9ba7e16e5e22c629f9c4 (diff)
downloadFreeBSD-src-ed702d58deca60e5abec53a3414feb004535c1e1.zip
FreeBSD-src-ed702d58deca60e5abec53a3414feb004535c1e1.tar.gz
Allow -d and -h as command line flags. These are used to generate
only the .h or _data.h files respectively. Restructure code to allow for this.
Diffstat (limited to 'sys/tools')
-rw-r--r--sys/tools/usbdevs2h.awk289
1 files changed, 163 insertions, 126 deletions
diff --git a/sys/tools/usbdevs2h.awk b/sys/tools/usbdevs2h.awk
index 7b3e0df..c638d16 100644
--- a/sys/tools/usbdevs2h.awk
+++ b/sys/tools/usbdevs2h.awk
@@ -30,207 +30,244 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
+function usage()
+{
+ print "usage: usbdevs2h.awk <srcfile> [-d|-h]";
+ exit 1;
+}
+
BEGIN {
- nproducts = nvendors = 0
- dfile="usbdevs_data.h"
- hfile="usbdevs.h"
+
+nproducts = nvendors = 0
+# Process the command line
+for (i = 1; i < ARGC; i++) {
+ arg = ARGV[i];
+ if (arg !~ /^-[dh]+$/ && arg !~ /devs$/)
+ usage();
+ if (arg ~ /^-.*d/)
+ dfile="usbdevs_data.h"
+ if (arg ~ /^-.*h/)
+ hfile="usbdevs.h"
+ if (arg ~ /devs$/)
+ srcfile = arg;
}
-NR == 1 {
+ARGC = 1;
+line=0;
+
+while ((getline < srcfile) > 0) {
+ line++;
+ if (line == 1) {
VERSION = $0
gsub("\\$", "", VERSION)
- if (os == "NetBSD")
- printf("/*\t\$NetBSD\$\t*/\n\n") > dfile
- else if (os == "FreeBSD")
- printf("/* \$FreeBSD\$ */\n\n") > dfile
- else if (os == "OpenBSD")
- printf("/*\t\$OpenBSD\$\t*/\n\n") > dfile
- else
- printf("/* ??? */\n\n") > dfile
- printf("/*\n") > dfile
- printf(" * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \
- > dfile
- printf(" *\n") > dfile
- printf(" * generated from:\n") > dfile
- printf(" *\t%s\n", VERSION) > dfile
- printf(" */\n") > dfile
-
- if (os == "NetBSD")
- printf("/*\t\$NetBSD\$\t*/\n\n") > hfile
- else if (os == "FreeBSD")
- printf("/* \$FreeBSD\$ */\n\n") > hfile
- else if (os == "OpenBSD")
- printf("/*\t\$OpenBSD\$\t*/\n\n") > hfile
- else
- printf("/* ??? */\n\n") > hfile
- printf("/*\n") > hfile
- printf(" * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \
- > hfile
- printf(" *\n") > hfile
- printf(" * generated from:\n") > hfile
- printf(" *\t%s\n", VERSION) > hfile
- printf(" */\n") > hfile
-
- next
-}
-$1 == "vendor" {
+ if (dfile) {
+ if (os == "NetBSD")
+ printf("/*\t\$NetBSD\$\t*/\n\n") > dfile
+ else if (os == "FreeBSD")
+ printf("/* \$FreeBSD\$ */\n\n") > dfile
+ else if (os == "OpenBSD")
+ printf("/*\t\$OpenBSD\$\t*/\n\n") > dfile
+ else
+ printf("/* ??? */\n\n") > dfile
+ printf("/*\n") > dfile
+ printf(" * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \
+ > dfile
+ printf(" *\n") > dfile
+ printf(" * generated from:\n") > dfile
+ printf(" *\t%s\n", VERSION) > dfile
+ printf(" */\n") > dfile
+ }
+
+ if (hfile) {
+ if (os == "NetBSD")
+ printf("/*\t\$NetBSD\$\t*/\n\n") > hfile
+ else if (os == "FreeBSD")
+ printf("/* \$FreeBSD\$ */\n\n") > hfile
+ else if (os == "OpenBSD")
+ printf("/*\t\$OpenBSD\$\t*/\n\n") > hfile
+ else
+ printf("/* ??? */\n\n") > hfile
+ printf("/*\n") > hfile
+ printf(" * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \
+ > hfile
+ printf(" *\n") > hfile
+ printf(" * generated from:\n") > hfile
+ printf(" *\t%s\n", VERSION) > hfile
+ printf(" */\n") > hfile
+ }
+ continue;
+ }
+ if ($1 == "vendor") {
nvendors++
vendorindex[$2] = nvendors; # record index for this name, for later.
vendors[nvendors, 1] = $2; # name
vendors[nvendors, 2] = $3; # id
- printf("#define\tUSB_VENDOR_%s\t%s\t", vendors[nvendors, 1],
- vendors[nvendors, 2]) > hfile
-
+ if (hfile)
+ printf("#define\tUSB_VENDOR_%s\t%s\t", vendors[nvendors, 1],
+ vendors[nvendors, 2]) > hfile
i = 3; f = 4;
# comments
ocomment = oparen = 0
if (f <= NF) {
- printf("\t/* ") > hfile
+ if (hfile)
+ printf("\t/* ") > hfile
ocomment = 1;
}
while (f <= NF) {
if ($f == "#") {
- printf("(") > hfile
+ if (hfile)
+ printf("(") > hfile
oparen = 1
f++
continue
}
if (oparen) {
- printf("%s", $f) > hfile
- if (f < NF)
+ if (hfile)
+ printf("%s", $f) > hfile
+ if (f < NF && hfile)
printf(" ") > hfile
f++
continue
}
vendors[nvendors, i] = $f
- printf("%s", vendors[nvendors, i]) > hfile
- if (f < NF)
+ if (hfile)
+ printf("%s", vendors[nvendors, i]) > hfile
+ if (f < NF && hfile)
printf(" ") > hfile
i++; f++;
}
- if (oparen)
+ if (oparen && hfile)
printf(")") > hfile
- if (ocomment)
+ if (ocomment && hfile)
printf(" */") > hfile
- printf("\n") > hfile
+ if (hfile)
+ printf("\n") > hfile
- next
-}
-$1 == "product" {
+ continue;
+ }
+ if ($1 == "product") {
nproducts++
products[nproducts, 1] = $2; # vendor name
products[nproducts, 2] = $3; # product id
products[nproducts, 3] = $4; # id
- printf("#define\tUSB_PRODUCT_%s_%s\t%s\t", products[nproducts, 1],
- products[nproducts, 2], products[nproducts, 3]) > hfile
+ if (hfile)
+ printf("#define\tUSB_PRODUCT_%s_%s\t%s\t", \
+ products[nproducts, 1], products[nproducts, 2], \
+ products[nproducts, 3]) > hfile
i=4; f = 5;
# comments
ocomment = oparen = 0
if (f <= NF) {
- printf("\t/* ") > hfile
+ if (hfile)
+ printf("\t/* ") > hfile
ocomment = 1;
}
while (f <= NF) {
if ($f == "#") {
- printf("(") > hfile
+ if (hfile)
+ printf("(") > hfile
oparen = 1
f++
continue
}
if (oparen) {
- printf("%s", $f) > hfile
- if (f < NF)
+ if (hfile)
+ printf("%s", $f) > hfile
+ if (f < NF && hfile)
printf(" ") > hfile
f++
continue
}
products[nproducts, i] = $f
- printf("%s", products[nproducts, i]) > hfile
- if (f < NF)
+ if (hfile)
+ printf("%s", products[nproducts, i]) > hfile
+ if (f < NF && hfile)
printf(" ") > hfile
i++; f++;
}
- if (oparen)
+ if (oparen && hfile)
printf(")") > hfile
- if (ocomment)
+ if (ocomment && hfile)
printf(" */") > hfile
- printf("\n") > hfile
+ if (hfile)
+ printf("\n") > hfile
- next
-}
-{
+ continue;
+ }
if ($0 == "")
blanklines++
- print $0 > hfile
- if (blanklines < 2)
- print $0 > dfile
+ if (hfile)
+ print $0 > hfile
+ if (blanklines < 2 && dfile)
+ print $0 > dfile
}
-END {
# print out the match tables
- printf("\n") > dfile
+ if (dfile) {
+ printf("\n") > dfile
- printf("const struct usb_knowndev usb_knowndevs[] = {\n") > dfile
- for (i = 1; i <= nproducts; i++) {
- printf("\t{\n") > dfile
- printf("\t USB_VENDOR_%s, USB_PRODUCT_%s_%s,\n",
- products[i, 1], products[i, 1], products[i, 2]) \
- > dfile
- printf("\t ") > dfile
- printf("0") > dfile
- printf(",\n") > dfile
+ printf("const struct usb_knowndev usb_knowndevs[] = {\n") > dfile
+ for (i = 1; i <= nproducts; i++) {
+ printf("\t{\n") > dfile
+ printf("\t USB_VENDOR_%s, USB_PRODUCT_%s_%s,\n",
+ products[i, 1], products[i, 1], products[i, 2]) \
+ > dfile
+ printf("\t ") > dfile
+ printf("0") > dfile
+ printf(",\n") > dfile
- vendi = vendorindex[products[i, 1]];
- printf("\t \"") > dfile
- j = 3;
- needspace = 0;
- while (vendors[vendi, j] != "") {
- if (needspace)
- printf(" ") > dfile
- printf("%s", vendors[vendi, j]) > dfile
- needspace = 1
- j++
- }
- printf("\",\n") > dfile
+ vendi = vendorindex[products[i, 1]];
+ printf("\t \"") > dfile
+ j = 3;
+ needspace = 0;
+ while (vendors[vendi, j] != "") {
+ if (needspace)
+ printf(" ") > dfile
+ printf("%s", vendors[vendi, j]) > dfile
+ needspace = 1
+ j++
+ }
+ printf("\",\n") > dfile
- printf("\t \"") > dfile
- j = 4;
- needspace = 0;
- while (products[i, j] != "") {
- if (needspace)
- printf(" ") > dfile
- printf("%s", products[i, j]) > dfile
- needspace = 1
- j++
+ printf("\t \"") > dfile
+ j = 4;
+ needspace = 0;
+ while (products[i, j] != "") {
+ if (needspace)
+ printf(" ") > dfile
+ printf("%s", products[i, j]) > dfile
+ needspace = 1
+ j++
+ }
+ printf("\",\n") > dfile
+ printf("\t},\n") > dfile
}
- printf("\",\n") > dfile
- printf("\t},\n") > dfile
- }
- for (i = 1; i <= nvendors; i++) {
- printf("\t{\n") > dfile
- printf("\t USB_VENDOR_%s, 0,\n", vendors[i, 1]) \
- > dfile
- printf("\t USB_KNOWNDEV_NOPROD,\n") \
- > dfile
- printf("\t \"") > dfile
- j = 3;
- needspace = 0;
- while (vendors[i, j] != "") {
- if (needspace)
- printf(" ") > dfile
- printf("%s", vendors[i, j]) > dfile
- needspace = 1
- j++
+ for (i = 1; i <= nvendors; i++) {
+ printf("\t{\n") > dfile
+ printf("\t USB_VENDOR_%s, 0,\n", vendors[i, 1]) \
+ > dfile
+ printf("\t USB_KNOWNDEV_NOPROD,\n") \
+ > dfile
+ printf("\t \"") > dfile
+ j = 3;
+ needspace = 0;
+ while (vendors[i, j] != "") {
+ if (needspace)
+ printf(" ") > dfile
+ printf("%s", vendors[i, j]) > dfile
+ needspace = 1
+ j++
+ }
+ printf("\",\n") > dfile
+ printf("\t NULL,\n") > dfile
+ printf("\t},\n") > dfile
}
- printf("\",\n") > dfile
- printf("\t NULL,\n") > dfile
- printf("\t},\n") > dfile
+ printf("\t{ 0, 0, 0, NULL, NULL, }\n") > dfile
+ printf("};\n") > dfile
}
- printf("\t{ 0, 0, 0, NULL, NULL, }\n") > dfile
- printf("};\n") > dfile
}
OpenPOWER on IntegriCloud