1906943f9SDavid du Colombier#!/bin/rc 2906943f9SDavid du Colombierrfork e 3906943f9SDavid du Colombier 4906943f9SDavid du ColombierDB=usbdb 5906943f9SDavid du ColombierHDR=../lib/usb.h 6906943f9SDavid du Colombier 7906943f9SDavid du Colombiersubs=`{ grep '^ Cl.*' $HDR | 8906943f9SDavid du Colombier sed -e 's/.*Cl([a-z]+)[ ]+=[ ]+([0-9]+).*/-e s.\1,.\2,./' | 9906943f9SDavid du Colombier tr A-Z a-z 10906943f9SDavid du Colombier} 11906943f9SDavid du Colombiercat<<EOF 12906943f9SDavid du Colombier/* machine generated. do not edit */ 13906943f9SDavid du Colombier#include <u.h> 14906943f9SDavid du Colombier#include <libc.h> 15906943f9SDavid du Colombier#include <thread.h> 16906943f9SDavid du Colombier#include "usb.h" 17906943f9SDavid du Colombier#include "usbd.h" 18906943f9SDavid du Colombier 19906943f9SDavid du ColombierEOF 20906943f9SDavid du Colombier 21906943f9SDavid du Colombierawk ' 22*717772fdSDavid du Colombier/^#|^$/ { next } 23906943f9SDavid du Colombiercollect && /^[^ \t]/{ 24906943f9SDavid du Colombier collect = 0; 25906943f9SDavid du Colombier} 26906943f9SDavid du Colombier$0 ~ /^(embed|auto)/{ 27906943f9SDavid du Colombier section = $0; 28906943f9SDavid du Colombier collect = 1; 29906943f9SDavid du Colombier next; 30906943f9SDavid du Colombier} 31906943f9SDavid du Colombiercollect { 32906943f9SDavid du Colombier if(section ~ "embed"){ 33906943f9SDavid du Colombier printf("extern int %smain(Dev*, int, char**);\n", $1); 34906943f9SDavid du Colombier } 35906943f9SDavid du Colombier} 36906943f9SDavid du Colombier' $DB 37906943f9SDavid du Colombiercat <<EOF 38906943f9SDavid du Colombier 39906943f9SDavid du ColombierDevtab devtab[] = { 40906943f9SDavid du Colombier /* device, entrypoint, {csp, csp, csp csp}, vid, did */ 41906943f9SDavid du ColombierEOF 42*717772fdSDavid du Colombier 43906943f9SDavid du Colombierawk ' 44ed868a7cSDavid du Colombier/^#|^$/ { next } 45906943f9SDavid du Colombiercollect && /^[^ \t]/{ 46906943f9SDavid du Colombier collect = 0; 47906943f9SDavid du Colombier} 48906943f9SDavid du Colombier$0 ~ /^(embed|auto)/{ 49906943f9SDavid du Colombier section = $0; 50906943f9SDavid du Colombier collect = 1; 51906943f9SDavid du Colombier next; 52906943f9SDavid du Colombier} 53906943f9SDavid du Colombiercollect { 54906943f9SDavid du Colombier printf(" {\"%s\"", $1); 55906943f9SDavid du Colombier if(section ~ "embed"){ 56906943f9SDavid du Colombier fns[nfns++] = $1; 57906943f9SDavid du Colombier printf(",\t%smain", $1); 58906943f9SDavid du Colombier } else 59906943f9SDavid du Colombier printf(", nil"); 60906943f9SDavid du Colombier printf(",\t{"); 61906943f9SDavid du Colombier ncsp = 0; 62906943f9SDavid du Colombier vid="-1"; 63906943f9SDavid du Colombier did="-1"; 64906943f9SDavid du Colombier args=""; 65906943f9SDavid du Colombier for(i = 2; i <= NF; i++) 66906943f9SDavid du Colombier if($i ~ "^args="){ 67906943f9SDavid du Colombier sub("args=", "", $i); 68906943f9SDavid du Colombier for(j = i; j <= NF; j++) 69906943f9SDavid du Colombier if(j > i) 70906943f9SDavid du Colombier args = args " " $j; 71906943f9SDavid du Colombier else 72906943f9SDavid du Colombier args = $j 73906943f9SDavid du Colombier } 74906943f9SDavid du Colombier for(i = 2; i <= NF; i++){ 75906943f9SDavid du Colombier if($i ~ "^csp="){ 76906943f9SDavid du Colombier ncsp++; 77906943f9SDavid du Colombier sub("csp=", "", $i); 78906943f9SDavid du Colombier printf("%s, ", $i); 79906943f9SDavid du Colombier } else 80906943f9SDavid du Colombier if($i ~ "^subclass="){ 81906943f9SDavid du Colombier ncsp++; 82906943f9SDavid du Colombier sub("subclass=", "", $i); 83906943f9SDavid du Colombier printf("DSC|%s, ", $i); 84906943f9SDavid du Colombier } else 85906943f9SDavid du Colombier if($i ~ "^class="){ 86906943f9SDavid du Colombier ncsp++; 87906943f9SDavid du Colombier sub("class=", "", $i); 88906943f9SDavid du Colombier printf("DCL|%s, ", $i); 89906943f9SDavid du Colombier } else 90906943f9SDavid du Colombier if($i ~ "^proto="){ 91906943f9SDavid du Colombier ncsp++; 92906943f9SDavid du Colombier sub("proto=", "", $i); 93906943f9SDavid du Colombier printf("DPT|%s, ", $i); 94906943f9SDavid du Colombier } else 95906943f9SDavid du Colombier if($i ~ "^vid="){ 96906943f9SDavid du Colombier sub("vid=", "", $i); 97906943f9SDavid du Colombier vid=$i 98906943f9SDavid du Colombier } else 99906943f9SDavid du Colombier if($i ~ "did="){ 100906943f9SDavid du Colombier sub("did=", "", $i); 101906943f9SDavid du Colombier did=$i 102906943f9SDavid du Colombier } 103906943f9SDavid du Colombier } 104906943f9SDavid du Colombier for(i = ncsp; i < 4; i++) 105906943f9SDavid du Colombier printf("0, "); 106906943f9SDavid du Colombier printf("}, %s, %s, \"%s\"},\n", vid, did, args); 107906943f9SDavid du Colombier} 108906943f9SDavid du Colombier' $DB | sed $subs 109906943f9SDavid du Colombier 110906943f9SDavid du Colombiercat <<EOF 111906943f9SDavid du Colombier {nil, nil, {0, 0, 0, 0, }, -1, -1, nil}, 112906943f9SDavid du Colombier}; 113906943f9SDavid du Colombier 114906943f9SDavid du Colombier/* end of machine generated */ 115906943f9SDavid du ColombierEOF 116