119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectBEGIN { 219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectif ( length(outfn) == 0) { 319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project outfn = outfile 419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectchar_shift=64 619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project## "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"; 719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["A"]=1 819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["B"]=2 919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["C"]=3 1019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["D"]=4 1119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["E"]=5 1219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["F"]=6 1319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["G"]=7 1419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["H"]=8 1519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["I"]=9 1619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["J"]=10 1719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["K"]=11 1819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["L"]=12 1919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["M"]=13 2019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["N"]=14 2119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["O"]=15 2219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["P"]=16 2319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["Q"]=17 2419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["R"]=18 2519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["S"]=19 2619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["T"]=20 2719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["U"]=21 2819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["V"]=22 2919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["W"]=23 3019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["X"]=24 3119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["Y"]=25 3219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["Z"]=26 3319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["a"]=27 3419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["b"]=28 3519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["c"]=29 3619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["d"]=30 3719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["e"]=31 3819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["f"]=32 3919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["g"]=33 4019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["h"]=34 4119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["i"]=35 4219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["j"]=36 4319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["k"]=37 4419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["l"]=38 4519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["m"]=39 4619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["n"]=40 4719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["o"]=41 4819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["p"]=42 4919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["q"]=43 5019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["r"]=44 5119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["s"]=45 5219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["t"]=46 5319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["u"]=47 5419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["v"]=48 5519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["w"]=49 5619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["x"]=50 5719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["y"]=51 5819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["z"]=52 5919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["0"]=53 6019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["1"]=54 6119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["2"]=55 6219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["3"]=56 6319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["4"]=57 6419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["5"]=58 6519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["6"]=59 6619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["7"]=60 6719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["8"]=61 6819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["9"]=62 6919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectc2n["_"]=63 7019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 7119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/^#/ { next } 7219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/^[ \t]*(error_table|et)[ \t]+[a-zA-Z][a-zA-Z0-9_]+/ { 7319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project table_number = 0 7419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project mod_base = 1000000 7519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project if (NF > 2) { 7619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project table_name = $3 7719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project base_name = $2 7819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } else { 7919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project table_name = $2 8019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project base_name = table_name 8119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 8219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project for(i=1; i<=length(base_name); i++) { 8319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project table_number=(table_number*char_shift)+c2n[substr(base_name,i,1)] 8419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 8519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 8619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project # We start playing *_high, *low games here because the some 8719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project # awk programs do not have the necessary precision (sigh) 8819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_low = table_number % mod_base 8919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project if (tab_base_low < 0) { 9019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project # Work around stupid bug in the ARM libm 9119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_low = tab_base_low + mod_base 9219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 9319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_high = int(table_number / mod_base) 9419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_sign = 1; 9519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 9619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project # figure out: table_number_base=table_number*256 9719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_low = tab_base_low * 256 9819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_high = (tab_base_high * 256) + \ 9919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project int(tab_base_low / mod_base) 10019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_low = tab_base_low % mod_base 10119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project if (tab_base_low < 0) { 10219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project # Work around stupid bug in the ARM libm 10319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_low = tab_base_low + mod_base 10419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 10519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 10619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project if (table_number > 128*256*256) { 10719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project # figure out: table_number_base -= 256*256*256*256 10819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project # sub_high, sub_low is 256*256*256*256 10919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project sub_low = 256*256*256 % mod_base 11019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project sub_high = int(256*256*256 / mod_base) 11119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 11219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project sub_low = sub_low * 256 11319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project sub_high = (sub_high * 256) + int(sub_low / mod_base) 11419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project sub_low = sub_low % mod_base 11519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 11619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_low = sub_low - tab_base_low; 11719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_high = sub_high - tab_base_high; 11819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_sign = -1; 11919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project if (tab_base_low < 0) { 12019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_low = tab_base_low + mod_base 12119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_high-- 12219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 12319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 12419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "/*" > outfile 12519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " * " outfn ":" > outfile 12619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " * This file is automatically generated; please do not edit it." > outfile 12719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " */" > outfile 12819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 12919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "" > outfile 13019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "#include <stdlib.h>" > outfile 13119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "" > outfile 13219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "static const char * const text[] = {" > outfile 13319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project table_item_count = 0 13419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 13519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 13619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project(continuation == 1) && ($0 ~ /\\[ \t]*$/) { 13719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project text=substr($0,1,length($0)-1); 13819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# printf "\t\t\"%s\"\n", text > outfile 13919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project cont_buf=cont_buf text; 14019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 14119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 14219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project(continuation == 1) && ($0 ~ /"[ \t]*$/) { 14319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# printf "\t\t\"%s,\n", $0 > outfile 14419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project printf "\t%s,\n", cont_buf $0 > outfile 14519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project continuation = 0; 14619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 14719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 14819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/^[ \t]*(error_code|ec)[ \t]+[A-Z_0-9]+,[^ \t]/ { 14919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project # Be tolerant to missing whitespace after `,' ... 15019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project sub(/,/, ", ") 15119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 15219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 15319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/^[ \t]*(error_code|ec)[ \t]+[A-Z_0-9]+,[ \t]*$/ { 15419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project table_item_count++ 15519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project skipone=1 15619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project next 15719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 15819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 15919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/^[ \t]*(error_code|ec)[ \t]+[A-Z_0-9]+,[ \t]*".*"[ \t]*$/ { 16019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project text="" 16119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project for (i=3; i<=NF; i++) { 16219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project text = text FS $i 16319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 16419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project text=substr(text,2,length(text)-1); 16519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project printf "\t%s,\n", text > outfile 16619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project table_item_count++ 16719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 16819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 16919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/^[ \t]*(error_code|ec)[ \t]+[A-Z_0-9]+,[ \t]*".*\\[ \t]*$/ { 17019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project text="" 17119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project for (i=3; i<=NF; i++) { 17219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project text = text FS $i 17319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 17419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project text=substr(text,2,length(text)-2); 17519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# printf "\t%s\"\n", text > outfile 17619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project cont_buf=text 17719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project table_item_count++ 17819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project continuation++; 17919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 18019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 18119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/^[ \t]*".*\\[ \t]*$/ { 18219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project if (skipone) { 18319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project text=substr($0,1,length($0)-1); 18419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project# printf "\t%s\"\n", text > outfile 18519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project cont_buf=text 18619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project continuation++; 18719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 18819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project skipone=0 18919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 19019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 19119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{ 19219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project if (skipone) { 19319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project printf "\t%s,\n", $0 > outfile 19419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 19519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project skipone=0 19619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 19719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 19819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/^[ \t]*(prefix)$/ { 19919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project prefix_str = "" 20019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 20119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 20219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/^[ \t]*(prefix)[ \t]+[A-Z_0-9]+/ { 20319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project prefix_str = $2 "_" 20419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 20519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 20619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/^[ \t]*(index)[ \t]+[A-Z_0-9]+/ { 20719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project new_idx = $2 20819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project for (i = table_item_count ; i < new_idx; i++) { 20919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project printf "\t\"Reserved %s error (%d)\",\n", \ 21019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project table_name, table_item_count++ > outfile 21119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 21219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 21319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 21419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source ProjectEND { 21519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " 0" > outfile 21619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "};" > outfile 21719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "" > outfile 21819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "struct error_table {" > outfile 21919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " char const * const * msgs;" > outfile 22019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " long base;" > outfile 22119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " int n_msgs;" > outfile 22219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "};" > outfile 22319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "struct et_list {" > outfile 22419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " struct et_list *next;" > outfile 22519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " const struct error_table * table;" > outfile 22619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "};" > outfile 22719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "extern struct et_list *_et_list;" > outfile 22819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "" > outfile 22919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project if (tab_base_high == 0) { 23019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "const struct error_table et_" table_name "_error_table = { text, " \ 23119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project sprintf("%dL, %d };", tab_base_sign*tab_base_low, \ 23219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project table_item_count) > outfile 23319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } else { 23419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "const struct error_table et_" table_name "_error_table = { text, " \ 23519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project sprintf("%d%06dL, %d };", tab_base_sign*tab_base_high, \ 23619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project tab_base_low, table_item_count) > outfile 23719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 23819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "" > outfile 23919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "static struct et_list link = { 0, 0 };" > outfile 24019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "" > outfile 24119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "void initialize_" table_name "_error_table_r(struct et_list **list);" > outfile 24219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "void initialize_" table_name "_error_table(void);" > outfile 24319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "" > outfile 24419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "void initialize_" table_name "_error_table(void) {" > outfile 24519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " initialize_" table_name "_error_table_r(&_et_list);" > outfile 24619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "}" > outfile 24719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "" > outfile 24819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "/* For Heimdal compatibility */" > outfile 24919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "void initialize_" table_name "_error_table_r(struct et_list **list)" > outfile 25019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "{" > outfile 25119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " struct et_list *et, **end;" > outfile 25219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "" > outfile 25319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " for (end = list, et = *list; et; end = &et->next, et = et->next)" > outfile 25419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " if (et->table->msgs == text)" > outfile 25519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " return;" > outfile 25619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " et = malloc(sizeof(struct et_list));" > outfile 25719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " if (et == 0) {" > outfile 25819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " if (!link.table)" > outfile 25919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " et = &link;" > outfile 26019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " else" > outfile 26119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " return;" > outfile 26219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " }" > outfile 26319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " et->table = &et_" table_name "_error_table;" > outfile 26419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " et->next = 0;" > outfile 26519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print " *end = et;" > outfile 26619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project print "}" > outfile 26719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 268