[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
noweb: noweave fails
From: |
Caleb Herbert |
Subject: |
noweb: noweave fails |
Date: |
Sun, 03 Dec 2023 23:17:54 -0600 |
Script started on 2023-12-03 23:10:40-06:00 [TERM="xterm-256color"
TTY="/dev/pts/1" COLUMNS="151" LINES="32"]
no fortunes found
[?2004hcaleb@miller ~/Private/Projects/dotfiles❄️ [7mnoweave -x
home-configuration.nw > home-configuration.tex[27m
[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[C[Cnoweave
-x home-configuration.nw > home-configuration.tex
[?2004l
double free or corruption (fasttop)
/gnu/store/a8fy4abr1c21svzfbd4lhrsi80szj14i-noweb-2.13/lib/noidx: line 362:
21935 Aborted
/gnu/store/65xb64wb0hi3kvd2wavyz9k58bhjda72-gawk-5.2.1/bin/awk 'function
insertafter(i, s, n) {
for(n = nextline++; n - 1 > i; n--) lines[n] = lines[n-1]
lines[n] = s
}
function slipin(s) {
lines[nextline++] = s
}
function fill_charcode_table(i) {
if (charcode_table[64])
return
for (i = 0; i < 256; i++) {
charcode_table[sprintf("%c", i)] = i
}
}
function charcode(s, i) {
fill_charcode_table()
return charcode_table[substr(s, i, 1)]
}
function fill_crc_table(POLY, sum, i, j) {
POLY = 245 * 4096 * 4096
if (crc_table[0]) {
return
}
for (i = 0; i < 256; i ++) {
sum = 0
for (j = 7; j >= 0; j -= 1) {
if (and(i, lshift(1, j)) != 0) {
sum = xor(sum, rshift(POLY, j))
}
}
crc_table[i] = sum
}
}
function crc(s, sum, i) {
fill_crc_table()
sum = 0
for (i = 1; i <= length(s); i++) {
sum = xor(rshift(sum, 8), crc_table[and(xor(sum, charcode(s, i)),
255)])
}
return sum
}
function newdefnlabel(arg, label) {
defcount[arg] = defcount[arg] + 1
label = "NW" curfile "-" uniqueid(arg) "-" alphacode(defcount[arg])
return label
}
function newdocslabel() {
newdocslabelcount++
return "NWD" alphacode(newdocslabelcount)
}
function addlabel(tbl, arg, label, marker) {
marker = " " label
if (!tailmatch(tbl[arg], marker))
tbl[arg] = tbl[arg] marker
return label
}
function tailmatch(string, tail, pos) {
pos = length(string) - length(tail) + 1
if (pos > 0 && substr(string, pos) == tail)
return 1
else
return 0
}
function addud(udlist, name, arg, label, s) {
s = " " name "{" label "}"
if (!tailmatch(udlist[arg], s))
udlist[arg] = udlist[arg] s
}
function listget(l, i, n, a) {
n = split(l, a)
return a[i]
}
function uniqueid(name, key) {
if (uidtable[name] == "") {
key = make_key(name)
# gsub(/[\]\[ \\{}`#%&~_^<>"-]/, "*", key) # old
gsub(/[^a-zA-Z0-9!$()*+,.\/:;=?@|]/, "*", key)
keycounts[key] = keycounts[key] + 1
uidtable[name] = key
if (keycounts[key] > 1)
uidtable[name] = uidtable[name] "." alphacode(keycounts[key])
}
return uidtable[name]
}
function old_make_key(name, key, l) {
l = length(name)
sub(/^.*\//, "", name)
key = substr(name, 1, 3)
if (l >= 3) key = key alphacode(l)
return key
}
function make_key(name) {
return alphacode(crc(name))
}
function lognowebchunks(l, j, n, x) {
if (loggednowebchunks > 0) return
loggednowebchunks = 1
delete allchunks[0]
n = alphasort(allchunks)
print "@xref beginchunks"
for (j = 0; j < n; j++) {
name = sorted[j]; delete sorted[j]
printf "@xref chunkbegin %s %s\n",
(anchorlabel[name] != "" ? anchorlabel[name] : "nw@notdef"), name
m = split(chunkud[name], a)
for (k = 1; k <= m; k++)
if (a[k] ~ /^use/)
printf "@xref chunkuse %s\n", substr(a[k], 5, length(a[k])-5)
else if (a[k] ~ /^defn/)
printf "@xref chunkdefn %s\n", substr(a[k], 6, length(a[k])-6)
print "@xref chunkend"
}
print "@xref endchunks"
}
function lognowebindex(l, j, n, x) {
if (loggednowebindex > 0) return
loggednowebindex = 1
delete allidents[0]
n = alphasort(allidents)
print "@index beginindex"
for (j = 0; j < n; j++) {
name = sorted[j]; delete sorted[j]
printf "@index entrybegin %s %s\n",
(indexanchorlabel[name] != "" ? indexanchorlabel[name] :
"nw@notdef"), name
m = split(indexud[name], a)
for (k = 1; k <= m; k++)
if (a[k] ~ /^use/)
printf "@index entryuse %s\n", substr(a[k], 5, length(a[k])-5)
else if (a[k] ~ /^defn/)
printf "@index entrydefn %s\n", substr(a[k], 6, length(a[k])-6)
print "@index entryend"
}
print "@index endindex"
}
function alphasort(a, x, n) {
n = 0
for (x in a)
n = insertitem(x, n)
return n
}
function insertitem(x, n, i, tmp) {
sorted[n] = x
sortkeys[n] = sortkey(x)
i = n
while (i > 0 && (sortkeys[i] < sortkeys[i-1] ||
sortkeys[i] == sortkeys[i-1] && sorted[i] <
sorted[i-1])) {
tmp = sortkeys [i]; sortkeys [i] = sortkeys [i-1]; sortkeys [i-1] =
tmp
tmp = sorted[i]; sorted[i] = sorted[i-1]; sorted[i-1] = tmp
i = i - 1
}
return n + 1
}
function sortkey(s) {
return tolower(s) "\n" s # relies on \n sorting lower than other
characters
}
function alphacode(n) {
if (n < 0)
return "-" alphacode(-n)
else if (n >= alphacodelen)
return alphacode(n / alphacodelen) alphacode(n % alphacodelen)
else
return substr(alphacodes, n+1, 1)
}
BEGIN { curfile = "standard input?"
lastchunkbegin = "never any chunks?" ;
allchunks[0] = 0 ; allidents[0] = 0 ; indexlabels[0] = 0
defanchors[0] = 0 ; uses[0] = 0 ; anchorlabel[0] = 0 ;
indexanchorlabel[0] = 0
thesedefns[0] = 0; theseuses[0] = 0 ;
defcount[0] = 0 ;
udlist[0] = 0 ;
uidtable[0] = 0
keycounts[0] = 0 ;
sorted[0] = 0; sortkeys[0] = 0;
alphacodes =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
alphacodelen = length(alphacodes) ; nextline = 0 }
/^@file / { curfile = uniqueid(substr($0, 7)) }
/^@begin / { lastchunkbegin = $0 }
/^@end docs / { if (anchordist > 0) { n = anchordist
lastanchorlabel = newdocslabel()
for(i = nextline - 1; i >= 0; i--) {
if (n == 0 || lines[i] ~ /^@begin
docs /) {
insertafter(i, "@xref label "
lastanchorlabel)
i = -1 # cause loop to
terminate
} else if (lines[i] == "@nl") {
n--
}
}
} }
/^@end code / { lastanchorlabel = "" }
/^@defn / { arg = substr($0, 7)
allchunks[arg] = 1
lastdefnlabel = newdefnlabel(arg)
slipin("@xref label " lastdefnlabel)
if (lastanchorlabel == "") lastanchorlabel = lastdefnlabel
if (anchorlabel[arg] == "") anchorlabel[arg] =
lastanchorlabel
addlabel(defanchors, arg, lastanchorlabel)
addud(chunkud, "defn", arg, lastanchorlabel)
thisusecount = 0
}
/^@use / { if (lastchunkbegin ~ /^@begin code /) {
arg = substr($0, 6)
allchunks[arg] = 1
slipin("@xref label " lastdefnlabel "-u"
(++thisusecount))
addlabel(uses, arg, lastanchorlabel)
addud(chunkud, "use", arg, lastanchorlabel)
}
}
/^@index use / { arg = substr($0, 12)
allidents[arg] = 1
if (lastanchorlabel != "") addud(indexud, "use", arg,
lastanchorlabel)
}
/^@index defn / { arg = substr($0, 13)
allidents[arg] = 1
if (lastanchorlabel != "") {
l = lastanchorlabel
} else {
l = newdocslabel()
slipin("@xref label " l)
}
addud(indexud, "defn", arg, l)
if (indexanchorlabel[arg] == "") indexanchorlabel[arg]
= l
slipin("@xref ref " l) # bug fix
}
/^@index localdefn / { arg = substr($0, 18)
allidents[arg] = 1
if (lastanchorlabel != "") {
l = lastanchorlabel
} else {
l = newdocslabel()
slipin("@xref label " l)
}
addud(indexud, "defn", arg, l)
if (indexanchorlabel[arg] == "") indexanchorlabel[arg]
= l
slipin("@xref ref " l) # bug fix
}
{ lines[nextline] = $0; nextline++ }
END {
for (i = 0; i < nextline; i ++) {
line = lines[i]
if (line ~ /^@begin /) {
if (delay && lastchunkbegin == line) { print "@nl"
print "@nl"
lognowebchunks()
lognowebindex()
}
print line
for (x in thesedefns) delete thesedefns[x]
for (x in theseuses) delete theseuses[x]
thischunk = ""
} else if (line ~ /^@defn /) {
thischunk = substr(line, 7)
printf "@xref ref %s\n", anchorlabel[thischunk]
print line
defout[thischunk]++
if (defout[thischunk] > 1)
printf "@xref prevdef %s\n", listget(defanchors[thischunk],
defout[thischunk]-1)
if (defout[thischunk] < defcount[thischunk])
printf "@xref nextdef %s\n", listget(defanchors[thischunk],
defout[thischunk]+1)
if (defout[thischunk] == 1) {if (defcount[thischunk] > 1) {
print "@xref begindefs"
n = split(defanchors[thischunk], a)
for (j = 2; j <= n; j++) printf
"@xref defitem %s\n", a[j]
print "@xref enddefs"
}
if (uses[thischunk] != "") {
print "@xref beginuses"
n = split(uses[thischunk], a)
for (j = 1; j <= n; j++) printf
"@xref useitem %s\n", a[j]
print "@xref enduses"
} else {
printf "@xref notused %s\n",
thischunk
}}
} else if (line ~ /^@use /) {
arg = substr(line, 6)
printf "@xref ref %s\n", (anchorlabel[arg] == "" ? "nw@notdef" :
anchorlabel[arg])
print line
} else if (line ~ /^@index defn /) {
arg = substr(line, 13)
thesedefns[arg] = 1
# no xref ref because of bug fix
# if (indexanchorlabel[arg] != "")
# printf "@xref ref %s\n", indexanchorlabel[arg]
print line
} else if (line ~ /^@index localdefn /) {
arg = substr(line, 18)
thesedefns[arg] = 1
# no xref ref because of bug fix
# if (indexanchorlabel[arg] != "")
# printf "@xref ref %s\n", indexanchorlabel[arg]
print line
} else if (line ~ /^@index use /) {
arg = substr(line, 12)
theseuses[arg] = 1
if (indexanchorlabel[arg] != "")
printf "@xref ref %s\n", indexanchorlabel[arg]
print line
} else if (line ~ /^@end code/) {
for (x in thesedefns)
delete theseuses[x]
delete thesedefns[0]
n = alphasort(thesedefns)
if (n > 0) {
print "@index begindefs"
for (j = 0; j < n; j++) {
m = split(indexud[sorted[j]], a)
for (k = 1; k <= m; k++)
if (a[k] ~ /^use/)
printf "@index isused %s\n", substr(a[k], 5,
length(a[k])-5)
printf "@index defitem %s\n", sorted[j]
delete sorted[j]
}
print "@index enddefs"
}
delete theseuses[0]
n = alphasort(theseuses)
if (n > 0) {
print "@index beginuses"
for (j = 0; j < n; j++) {
m = split(indexud[sorted[j]], a)
for (k = 1; k <= m; k++)
if (a[k] ~ /^defn/)
printf "@index isdefined %s\n", substr(a[k], 6,
length(a[k])-6)
printf "@index useitem %s\n", sorted[j]
delete sorted[j]
}
print "@index enduses"
}
print line
} else if (line ~ /^@text /) {
# grotesque hack to get indexes in HTML
if (thischunk == "") { # docs mode
arg = substr(line, 7)
if (arg == "<nowebchunks>") lognowebchunks()
else if (arg == "<nowebindex>") lognowebindex()
else print line
} else {
print line
}
} else {
print line
}
delete lines[i]
}
if (!delay) { print "@nl"
print "@nl"
lognowebchunks()
lognowebindex()
}
}' delay=$delay anchordist=$anchordist
[?2004hcaleb@miller ~/Private/Projects/dotfiles❄️ exit
[?2004l
exit
Script done on 2023-12-03 23:10:53-06:00 [COMMAND_EXIT_CODE="0"]
I can't get noweave to generate a TeX file out of my source file. A
bunch of garbage gets dumped to my terminal. Output attached.
--
Caleb Herbert
https://bluehome.net/csh/
OpenPGP fingerprint: 631C C434 A56B 5CBD FF21 2346 9764 3795 FA3E 4BCE
What's a fingerprint? https://emailselfdefense.fsf.org/
signature.asc
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- noweb: noweave fails,
Caleb Herbert <=