free software resistance
the cost of computing freedom is eternal vigilance
### gemlist02.fig
*originally posted:* dec 2024
this program is a list generator for gemini.
ive written lots of stuff like this, it basically creates a directory.
its tailored for this website in that it searches first for "original date" then "originally posted" and if it finds neither it just uses stat -FL.
version 0.2 accomplishes the goal of sorting output by month and year, a typo on the page for version 0.1 said "month and day".
```
proginf "gemlist 0.2"
# original date: dec 2024
function odt each
openf arropen each
forin each openf
ck instr each "original date:"
iftrue ck
ordt split each "original date:" mid 2 1 split ordt "*" join ordt "" ltrim rtrim plus " "
now "original date: " plus ordt return now
next
next
now "" return now
next
function op each
openf arropen each
forin each openf
ck instr each "originally posted:"
iftrue ck
orp split each "originally posted:" mid 2 1 split orp "*" join orp "" ltrim rtrim plus " "
now "originally posted: " plus orp return now
next
next
now "" return now
next
function ost each
q 34 chr
qsp q plus " " plus q
# mmm yyyy mmm d s
st "stat -FL '" plus each plus "' | awk '{print $6 " plus qsp plus " $9 " plus qsp plus " $7 " plus qsp plus " $5}'" arrshell mid 1 1 lcase
now return st
next
listbuf arr mid 1 0
counter 0
p "find . -type f" arrshell
forin each p
buf ""
iftrue each
orst = ost each
ordt = odt each
iftrue ordt
try
ordtrim split ordt " " mid 3 2 join ordtrim " "
except
ordtrim ""
next
buf ordtrim plus "=> " plus each plus " " plus ordt
else
orp = op each
iftrue orp
try
orptrim split orp " " mid 3 2 join orptrim " "
except
orptrim ""
next
buf orptrim plus "=> " plus each plus " " plus orp
else
orstrim split orst " " mid 1 2 join orstrim " "
buf orstrim plus "=> " plus each plus " "
# now orst prints
next
next
now buf plus "| " plus orst swap now buf
listbuf plus buf
next
next
mos "jan feb mar apr may jun jul aug sep oct nov dec" split mos " "
yrs "2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024" split yrs " "
forin y yrs
forin m mos
forin each listbuf
filedate split each "=>" mid 1 1
ck instr filedate " "
iftrue ck
yr split filedate " " mid 2 1
mo split filedate " " mid 1 1
ifequal y yr
ifequal m mo
eachlen each len
eachlink instr each "=>" times -1 plus eachlen plus 1
now each right eachlink print
now counter plus 1 swap now counter
ifmore counter 4
now "" print
counter 0
next
next
next
next
next
next
next
```
license: 0-clause bsd
```
# 2018, 2019, 2020, 2021, 2022, 2023, 2024
#
# 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