et_c.awk revision e0ed7404719a9ddd2ba427a80db5365c8bad18c0
1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBEGIN { 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectif ( length(outfn) == 0) { 3e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project outfn = outfile 4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectchar_shift=64 6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project## "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"; 7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["A"]=1 8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["B"]=2 9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["C"]=3 10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["D"]=4 11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["E"]=5 12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["F"]=6 13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["G"]=7 14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["H"]=8 15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["I"]=9 16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["J"]=10 17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["K"]=11 18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["L"]=12 19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["M"]=13 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["N"]=14 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["O"]=15 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["P"]=16 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["Q"]=17 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["R"]=18 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["S"]=19 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["T"]=20 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["U"]=21 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["V"]=22 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["W"]=23 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["X"]=24 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["Y"]=25 325c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenenc2n["Z"]=26 335c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenenc2n["a"]=27 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["b"]=28 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["c"]=29 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["d"]=30 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["e"]=31 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["f"]=32 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["g"]=33 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["h"]=34 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["i"]=35 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["j"]=36 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["k"]=37 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["l"]=38 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["m"]=39 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["n"]=40 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["o"]=41 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["p"]=42 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["q"]=43 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["r"]=44 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["s"]=45 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["t"]=46 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["u"]=47 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["v"]=48 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["w"]=49 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["x"]=50 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["y"]=51 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["z"]=52 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["0"]=53 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["1"]=54 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["2"]=55 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["3"]=56 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["4"]=57 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["5"]=58 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["6"]=59 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["7"]=60 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["8"]=61 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["9"]=62 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectc2n["_"]=63 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/^#/ { next } 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/^[ \t]*(error_table|et)[ \t]+[a-zA-Z][a-zA-Z0-9_]+/ { 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project table_number = 0 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project mod_base = 1000000 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (NF > 2) { 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project table_name = $3 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project base_name = $2 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } else { 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project table_name = $2 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project base_name = table_name 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for(i=1; i<=length(base_name); i++) { 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project table_number=(table_number*char_shift)+c2n[substr(base_name,i,1)] 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project # We start playing *_high, *low games here because the some 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project # awk programs do not have the necessary precision (sigh) 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_low = table_number % mod_base 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (tab_base_low < 0) { 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project # Work around stupid bug in the ARM libm 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_low = tab_base_low + mod_base 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_high = int(table_number / mod_base) 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_sign = 1; 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project # figure out: table_number_base=table_number*256 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_low = tab_base_low * 256 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_high = (tab_base_high * 256) + \ 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int(tab_base_low / mod_base) 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_low = tab_base_low % mod_base 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (tab_base_low < 0) { 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project # Work around stupid bug in the ARM libm 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_low = tab_base_low + mod_base 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 1055c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen 1065c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen if (table_number > 128*256*256) { 1075c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen # figure out: table_number_base -= 256*256*256*256 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project # sub_high, sub_low is 256*256*256*256 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project sub_low = 256*256*256 % mod_base 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project sub_high = int(256*256*256 / mod_base) 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project sub_low = sub_low * 256 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project sub_high = (sub_high * 256) + int(sub_low / mod_base) 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project sub_low = sub_low % mod_base 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_low = sub_low - tab_base_low; 1175c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen tab_base_high = sub_high - tab_base_high; 1185c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen tab_base_sign = -1; 1195c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen if (tab_base_low < 0) { 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_low = tab_base_low + mod_base 1215c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen tab_base_high-- 1225c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen } 1235c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen } 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "/*" > outfile 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " * " outfn ":" > outfile 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " * This file is automatically generated; please do not edit it." > outfile 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " */" > outfile 1285c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen 1295c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen print "" > outfile 1305c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen print "#include <stdlib.h>" > outfile 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "" > outfile 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "#define N_(a) a" > outfile 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "" > outfile 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "static const char * const text[] = {" > outfile 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project table_item_count = 0 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project(continuation == 1) && ($0 ~ /\\[ \t]*$/) { 139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project text=substr($0,1,length($0)-1); 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project# printf "\t\t\"%s\"\n", text > outfile 141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project cont_buf=cont_buf text; 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project(continuation == 1) && ($0 ~ /"[ \t]*$/) { 145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project# printf "\t\t\"%s,\n", $0 > outfile 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project printf "\tN_(%s),\n", cont_buf $0 > outfile 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project continuation = 0; 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/^[ \t]*(error_code|ec)[ \t]+[A-Z_0-9]+,[^ \t]/ { 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project # Be tolerant to missing whitespace after `,' ... 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project sub(/,/, ", ") 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/^[ \t]*(error_code|ec)[ \t]+[A-Z_0-9]+,[ \t]*$/ { 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project table_item_count++ 157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project skipone=1 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project next 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/^[ \t]*(error_code|ec)[ \t]+[A-Z_0-9]+,[ \t]*".*"[ \t]*$/ { 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project text="" 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for (i=3; i<=NF; i++) { 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project text = text FS $i 165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project text=substr(text,2,length(text)-1); 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project printf "\tN_(%s),\n", text > outfile 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project table_item_count++ 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/^[ \t]*(error_code|ec)[ \t]+[A-Z_0-9]+,[ \t]*".*\\[ \t]*$/ { 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project text="" 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for (i=3; i<=NF; i++) { 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project text = text FS $i 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project text=substr(text,2,length(text)-2); 177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project# printf "\t%s\"\n", text > outfile 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project cont_buf=text 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project table_item_count++ 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project continuation++; 181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/^[ \t]*".*\\[ \t]*$/ { 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (skipone) { 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project text=substr($0,1,length($0)-1); 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project# printf "\t%s\"\n", text > outfile 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project cont_buf=text 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project continuation++; 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project skipone=0 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (skipone) { 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project printf "\tN_(%s),\n", $0 > outfile 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project skipone=0 198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/^[ \t]*(prefix)$/ { 201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project prefix_str = "" 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/^[ \t]*(prefix)[ \t]+[A-Z_0-9]+/ { 205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project prefix_str = $2 "_" 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/^[ \t]*(index)[ \t]+[A-Z_0-9]+/ { 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project new_idx = $2 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project for (i = table_item_count ; i < new_idx; i++) { 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project printf "\tN_(\"Reserved %s error (%d)\"),\n", \ 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project table_name, table_item_count++ > outfile 213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectEND { 217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " 0" > outfile 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "};" > outfile 219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "" > outfile 220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "struct error_table {" > outfile 221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " char const * const * msgs;" > outfile 222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " long base;" > outfile 223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " int n_msgs;" > outfile 224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "};" > outfile 225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "struct et_list {" > outfile 226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " struct et_list *next;" > outfile 227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " const struct error_table * table;" > outfile 228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "};" > outfile 229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "extern struct et_list *_et_list;" > outfile 230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "" > outfile 231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if (tab_base_high == 0) { 232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "const struct error_table et_" table_name "_error_table = { text, " \ 233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project sprintf("%dL, %d };", tab_base_sign*tab_base_low, \ 234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project table_item_count) > outfile 235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } else { 236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "const struct error_table et_" table_name "_error_table = { text, " \ 237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project sprintf("%d%06dL, %d };", tab_base_sign*tab_base_high, \ 238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tab_base_low, table_item_count) > outfile 239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "" > outfile 241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "static struct et_list link = { 0, 0 };" > outfile 242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "" > outfile 243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "void initialize_" table_name "_error_table_r(struct et_list **list);" > outfile 244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "void initialize_" table_name "_error_table(void);" > outfile 245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "" > outfile 246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "void initialize_" table_name "_error_table(void) {" > outfile 247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " initialize_" table_name "_error_table_r(&_et_list);" > outfile 248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "}" > outfile 249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "" > outfile 250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "/* For Heimdal compatibility */" > outfile 251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "void initialize_" table_name "_error_table_r(struct et_list **list)" > outfile 252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "{" > outfile 253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " struct et_list *et, **end;" > outfile 254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "" > outfile 255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " for (end = list, et = *list; et; end = &et->next, et = et->next)" > outfile 256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " if (et->table->msgs == text)" > outfile 257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " return;" > outfile 258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " et = malloc(sizeof(struct et_list));" > outfile 259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " if (et == 0) {" > outfile 260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " if (!link.table)" > outfile 261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " et = &link;" > outfile 262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " else" > outfile 263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " return;" > outfile 264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " }" > outfile 265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " et->table = &et_" table_name "_error_table;" > outfile 266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " et->next = 0;" > outfile 267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print " *end = et;" > outfile 268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project print "}" > outfile 269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project