142807Smsmith#!/usr/bin/awk -f 242807Smsmith# 350477Speter# $FreeBSD$ 442807Smsmith# 542807Smsmith# Merge two boot loader help files for FreeBSD 3.0 642807Smsmith# Joe Abley <jabley@patho.gen.nz> 742807Smsmith 842807SmsmithBEGIN \ 942807Smsmith{ 1042807Smsmith state = 0; 1186168Sfenner first = -1; 1242807Smsmith ind = 0; 1342807Smsmith} 1442807Smsmith 1542807Smsmith# beginning of first command 1642807Smsmith/^###/ && (state == 0) \ 1742807Smsmith{ 1842807Smsmith state = 1; 1942807Smsmith next; 2042807Smsmith} 2142807Smsmith 2242807Smsmith# entry header 2385935Sobrien/^# T[[:graph:]]+ (S[[:graph:]]+ )*D[[:graph:]][[:print:]]*$/ && (state == 1) \ 2442807Smsmith{ 2585935Sobrien match($0, " T[[:graph:]]+"); 2642807Smsmith T = substr($0, RSTART + 2, RLENGTH - 2); 2785935Sobrien match($0, " S[[:graph:]]+"); 28162742Sjhb SSTART = RSTART 2942807Smsmith S = (RLENGTH == -1) ? "" : substr($0, RSTART + 2, RLENGTH - 2); 3085935Sobrien match($0, " D[[:graph:]][[:print:]]*$"); 3142807Smsmith D = substr($0, RSTART + 2); 32162742Sjhb if (SSTART > RSTART) 33162742Sjhb S = ""; 3442807Smsmith 3542807Smsmith # find a suitable place to store this one... 3642807Smsmith ind++; 3742807Smsmith if (ind == 1) 3842807Smsmith { 3942807Smsmith first = ind; 4042807Smsmith help[ind, "T"] = T; 4142807Smsmith help[ind, "S"] = S; 4242807Smsmith help[ind, "link"] = -1; 4342807Smsmith } else { 4442807Smsmith i = first; j = -1; 4542807Smsmith while (help[i, "T"] help[i, "S"] < T S) 4642807Smsmith { 4742807Smsmith j = i; 4842807Smsmith i = help[i, "link"]; 4942807Smsmith if (i == -1) break; 5042807Smsmith } 5142807Smsmith 5242807Smsmith if (i == -1) 5342807Smsmith { 5442807Smsmith help[j, "link"] = ind; 5542807Smsmith help[ind, "link"] = -1; 5642807Smsmith } else { 5742807Smsmith help[ind, "link"] = i; 5842807Smsmith if (j == -1) 5942807Smsmith first = ind; 6042807Smsmith else 6142807Smsmith help[j, "link"] = ind; 6242807Smsmith } 6342807Smsmith } 6442807Smsmith help[ind, "T"] = T; 6542807Smsmith help[ind, "S"] = S; 6642807Smsmith help[ind, "D"] = D; 6742807Smsmith 6842807Smsmith # set our state 6942807Smsmith state = 2; 7042807Smsmith help[ind, "text"] = 0; 7142807Smsmith next; 7242807Smsmith} 7342807Smsmith 7442807Smsmith# end of last command, beginning of next one 7542807Smsmith/^###/ && (state == 2) \ 7642807Smsmith{ 7742807Smsmith state = 1; 7842807Smsmith} 7942807Smsmith 8042807Smsmith(state == 2) \ 8142807Smsmith{ 8242807Smsmith sub("[[:blank:]]+$", ""); 8342807Smsmith if (help[ind, "text"] == 0 && $0 ~ /^[[:blank:]]*$/) next; 8442807Smsmith help[ind, "text", help[ind, "text"]] = $0; 8542807Smsmith help[ind, "text"]++; 8642807Smsmith next; 8742807Smsmith} 8842807Smsmith 8942807Smsmith# show them what we have (it's already sorted in help[]) 9042807SmsmithEND \ 9142807Smsmith{ 9242807Smsmith node = first; 9342807Smsmith while (node != -1) 9442807Smsmith { 9542807Smsmith printf "################################################################################\n"; 9642807Smsmith printf "# T%s ", help[node, "T"]; 9742807Smsmith if (help[node, "S"] != "") printf "S%s ", help[node, "S"]; 9842807Smsmith printf "D%s\n\n", help[node, "D"]; 9942807Smsmith for (i = 0; i < help[node, "text"]; i++) 10042807Smsmith printf "%s\n", help[node, "text", i]; 10142807Smsmith node = help[node, "link"]; 10242807Smsmith } 10342807Smsmith printf "################################################################################\n"; 10442807Smsmith} 105