Files
seta75D 7c4988eac0 Init
2021-10-11 19:38:01 -03:00

63 lines
1.6 KiB
Awk
Executable File

#ident "@(#)errlist.awk 1.7 92/07/14 SMI" /* SVr4.0 1.1 */
# create two files from a list of input strings,
# new_list.c contains an array of characters indexed into by perror and strerror,
# errlst.c contains an array of pointers to strings, for compatibility
# with existing user programs that reference it directly
BEGIN {
FS = "\t"
hi = 0
newfile = "new_list.c"
oldfile = "errlst.c"
print "#ident\t\"@(#)errlist.awk\t1.2\t90/08/16 SMI\"\n" >oldfile
print "/*LINTLIBRARY*/" >oldfile
print "#ifdef __STDC__" >oldfile
print "\t#pragma weak sys_errlist = _sys_errlist" >oldfile
print "\t#pragma weak sys_nerr = _sys_nerr" >oldfile
print "#endif" >oldfile
print "#include \"synonyms.h\"\n" >oldfile
print "const char *sys_errlist[] = {" >oldfile
print "#ident\t\"@(#)errlist.awk\t1.2\t90/08/16 SMI\"\n" >newfile
print "/*LINTLIBRARY*/" >newfile
print "#include \"synonyms.h\"\n" >newfile
}
/^[0-9]+/ {
if ($1 > hi)
hi = $1
astr[$1] = $2
}
END {
print "const int _sys_index[] =\n{" >newfile
k = 0
for (j = 0; j <= hi; ++j)
{
if (astr[j] == "")
astr[j] = sprintf("Error %d", j)
printf "\t%d,\n", k >newfile
k += length(astr[j]) + 1
}
print "};\n" >newfile
print "const char _sys_errs[] =\n{" >newfile
for (j = 0; j <= hi; ++j)
{
print "\t\"" astr[j] "\"," >oldfile
printf "\t" >newfile
n = length(astr[j])
for (k = 1; k <= n; ++k)
printf "'%s',", substr(astr[j],k,1) >newfile
print "'\\0'," >newfile
}
print "};\n" >newfile
print "};\n" >oldfile
print "const int _sys_num_err = " hi + 1 ";" >newfile
print "const int sys_nerr = " hi + 1 ";" >oldfile
}