1aa24f48bSBruce Evans# 2aa24f48bSBruce Evans# awk script to convert a bdf file to C declarations in a form specialized 3aa24f48bSBruce Evans# for the mouse cursors in syscons/scvgarndr.c. Usage: 4aa24f48bSBruce Evans# awk -f thisfile < file.bdf < file.c 5aa24f48bSBruce Evans# The accompanying syscons mouse cursor bdf file has specialized comments 6aa24f48bSBruce Evans# which this script converts to details in the C declarations. 7aa24f48bSBruce Evans# This is not a general conversion utility, but produces reasonable output 8aa24f48bSBruce Evans# if the input is for a monospaced font of size between 9x16 and 16x16. 9aa24f48bSBruce Evans 10aa24f48bSBruce Evans/^COMMENT cn.*mouse/ { 11aa24f48bSBruce Evans gsub("[(),]", "") 12aa24f48bSBruce Evans i = index($3, "-") 13aa24f48bSBruce Evans n = substr($3, 1, i - 1) 14aa24f48bSBruce Evans name[n] = $4 15aa24f48bSBruce Evans i = index($4, "e") 16aa24f48bSBruce Evans j = index($4, "x") 17aa24f48bSBruce Evans k = index($4, "_") 18aa24f48bSBruce Evans width[n] = substr($4, i + 1, j - i - 1) 19aa24f48bSBruce Evans height[n] = substr($4, j + 1, k - j - 1) 20aa24f48bSBruce Evans baspect[n] = $6 21aa24f48bSBruce Evans iaspect[n] = $8 22aa24f48bSBruce Evans} 23aa24f48bSBruce Evansstate == 0 && /^STARTCHAR/ { 24aa24f48bSBruce Evans n = substr($2, 5) 25aa24f48bSBruce Evans printf("static const struct mousedata %s = { {\n\t", name[n]) 26aa24f48bSBruce Evans state = 1 27aa24f48bSBruce Evans} 28aa24f48bSBruce Evansstate >= 1 && state < 7 || state >= 7 + 16 && state < 7 + 16 + 7 { 29aa24f48bSBruce Evans state++ 30aa24f48bSBruce Evans next 31aa24f48bSBruce Evans} 32aa24f48bSBruce Evansstate >= 7 && state < 7 + 16 || state >= 7 + 16 + 7 && state < 7 + 16 + 7 +16 { 33aa24f48bSBruce Evans printf("0x%s,", $1) 34aa24f48bSBruce Evans if (state == 7 + 7 || state == 7 + 16 + 7 + 7) 35aa24f48bSBruce Evans printf("\n\t") 36aa24f48bSBruce Evans else if (state == 7 + 15) 37aa24f48bSBruce Evans printf(" }, {\n\t") 38aa24f48bSBruce Evans else if (state == 7 + 16 + 7 + 15) { 39aa24f48bSBruce Evans printf(" },\n\t%s, %s, %s, %s, \"%s\",", 40aa24f48bSBruce Evans width[n], height[n], baspect[n], iaspect[n], name[n]) 41aa24f48bSBruce Evans printf("\n};\n\n") 42aa24f48bSBruce Evans state = -1 43aa24f48bSBruce Evans } else 44aa24f48bSBruce Evans printf(" ") 45aa24f48bSBruce Evans state++ 46aa24f48bSBruce Evans next 47aa24f48bSBruce Evans} 48