free software resistance
the cost of computing freedom is eternal vigilance
### chtm.fig
*originally posted:* oct 2024
chtm.fig:
```
proginf "chtm 0.1, oct 2024 mn"
## groups and matches instances of non-html.file with non-html.file.html
## to help locate files that do not have corresponding html pages
# 2024 mn
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
qu 34 chr
p "echo ; for each in 02 10 11 12 14 15 16 17 18 19 20 21 22 23 24 ; do for mo in Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ; do find . -type f -exec stat -FL {} + | tr -d '*' | awk '{print $9 " plus qu plus " " plus qu plus " $6 " plus qu plus " " plus qu plus " $7 " plus qu plus " " plus qu plus " $5 " plus qu plus " " plus qu plus " $10}' | grep " plus qu plus "^20$each $mo" plus qu plus " ; echo ; done | uniq ; echo ; echo ; done" arrshell
## get year, month, day, size, path
buf arr mid 1 0
forin each p
try
lbuf split each " "
on lbuf mid 1 1
tw lbuf mid 2 1
th lbuf mid 3 1
fo lbuf mid 4 1
fi lbuf mid 5 1
doth fi right 5
dot4 fi right 4
## if it ends in .htm or .html leave it, print it- but if it doesnt, add .html and...
ifequal dot4 ".htm" # dont count .htm files either
doth ".html"
next
ifequal doth ".html"
doth ""
else
## ... and append "f" to the year
now on plus "f" swap now on
now fi plus ".html" swap now fi
next
now on plus " " plus tw plus " " plus th plus " " plus fo plus " " plus fi
buf plus now
except
now "" print
next
next
## reverse each line, sort, reverse each line
buflen buf len
for each 1 buflen 1
now arrget buf each reverse
buf arrset each now
next
buf arrsort
buflen buf len
for each 1 buflen 1
now arrget buf each reverse
buf arrset each now
next
## group by matching filename
## non-html files will now match html files following file.ext.html, plus year will be yyyyf
show "2015" # only show groups that include this string
bufette arr mid 1 0
b ""
trimmed ""
forin each buf
try
now each reverse
eachlen instr now "/" minus 1
ifmore eachlen 0
trimmed now left eachlen reverse
ifequal trimmed b
now
else
cbuf join bufette "|" instr cbuf show
iftrue cbuf
forin every bufette
now every print
next
now "" print
next
bufette 0 arr mid 1 0
next
b trimmed
bufette plus each
next
except
now ""
next
next
```
license: 0-clause bsd
```
# 2024 mn
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
```
=> https://freesoftwareresistance.neocities.org