summaryrefslogtreecommitdiffstats
path: root/sys/tools
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2004-12-31 21:02:43 +0000
committerimp <imp@FreeBSD.org>2004-12-31 21:02:43 +0000
commita4077d797e04548206f59d28d7ccd3d059bde63f (patch)
tree3a882cbf7c917e7afb16fc4faf0cdcf516fd8553 /sys/tools
parent8c3a1cf5aa00b4249f23ec930cb4f40910056acd (diff)
downloadFreeBSD-src-a4077d797e04548206f59d28d7ccd3d059bde63f.zip
FreeBSD-src-a4077d797e04548206f59d28d7ccd3d059bde63f.tar.gz
Use functions to make the program clearer.
Diffstat (limited to 'sys/tools')
-rw-r--r--sys/tools/usbdevs2h.awk269
1 files changed, 144 insertions, 125 deletions
diff --git a/sys/tools/usbdevs2h.awk b/sys/tools/usbdevs2h.awk
index c638d16..fff6f1b 100644
--- a/sys/tools/usbdevs2h.awk
+++ b/sys/tools/usbdevs2h.awk
@@ -30,74 +30,54 @@
# (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 {
+function dheader(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
+}
-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;
+function hheader(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
}
-ARGC = 1;
-line=0;
-while ((getline < srcfile) > 0) {
- line++;
- if (line == 1) {
- VERSION = $0
- gsub("\\$", "", VERSION)
- 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") {
+function vendor(hfile)
+{
nvendors++
vendorindex[$2] = nvendors; # record index for this name, for later.
@@ -144,10 +124,10 @@ while ((getline < srcfile) > 0) {
printf(" */") > hfile
if (hfile)
printf("\n") > hfile
+}
- continue;
- }
- if ($1 == "product") {
+function product(hfile)
+{
nproducts++
products[nproducts, 1] = $2; # vendor name
@@ -196,9 +176,107 @@ while ((getline < srcfile) > 0) {
printf(" */") > hfile
if (hfile)
printf("\n") > hfile
+}
+
+function dump_dfile(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
+
+ 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
+ }
+ 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("\t{ 0, 0, 0, NULL, NULL, }\n") > dfile
+ printf("};\n") > dfile
+}
+
+BEGIN {
- continue;
- }
+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;
+}
+ARGC = 1;
+line=0;
+
+while ((getline < srcfile) > 0) {
+ line++;
+ if (line == 1) {
+ VERSION = $0
+ gsub("\\$", "", VERSION)
+
+ if (dfile)
+ dheader(dfile)
+
+ if (hfile)
+ hheader(hfile)
+ continue;
+ }
+ if ($1 == "vendor") {
+ vendor(hfile)
+ continue
+ }
+ if ($1 == "product") {
+ product(hfile)
+ continue
+ }
if ($0 == "")
blanklines++
if (hfile)
@@ -206,68 +284,9 @@ while ((getline < srcfile) > 0) {
if (blanklines < 2 && dfile)
print $0 > dfile
}
- # print out the match tables
-
- 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
+# print out the match tables
- 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("\",\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++
- }
- printf("\",\n") > dfile
- printf("\t NULL,\n") > dfile
- printf("\t},\n") > dfile
- }
- printf("\t{ 0, 0, 0, NULL, NULL, }\n") > dfile
- printf("};\n") > dfile
- }
+if (dfile)
+ dump_dfile(dfile)
}
OpenPOWER on IntegriCloud