d19fdd572b251c0eb8c1b03c9d93978e01e0bf8d — Callum Brown 1 year, 3 months ago 7d6cd10
1 files changed, 53 insertions(+), 0 deletions(-)

A README.gmi => README.gmi +53 -0
@@ 0,0 1,53 @@
# gmsfn

gmsfn is a program used to update a file with new links found in Gemtext pages served over the Gemini protocol. I wrote it partly because I wanted something a bit different to CAPCOM and spacewalk, and partly to learn C through a real project. The name comes from the Manned Space Flight Network (MSFN), which was a set of tracking stations used to support the Gemini space program (as well as Mercury, Apollo and Skylab).

=> gemini://gemini.circumlunar.space/ Project Gemini (gemini)
=> https://gemini.circumlunar.space/ Project Gemini (https)
=> gemini://gemini.circumlunar.space/docs/gemtext.gmi Gemtext (gemini)
=> https://tildegit.org/solderpunk/CAPCOM CAPCOM (https)
=> https://tildegit.org/sloum/spacewalk spacewalk (https)
=> https://en.wikipedia.org/wiki/Manned_Space_Flight_Network Manned Space Flight Network (https)

Differences from CAPCOM and spacewalk:
* Doesn't rely on authors to provide an Atom feed
* Links directly to posts
* Feeds are configured in a file, not by a CLI
* Feeds will probably include links you don't want to see, like links back to a home page or to an Atom/RSS feed.
* Doesn't detect if textual content of a page changes

All the hard work to do with Gemini and parsing Gemtext is done using Drew Devault's gmni, which is currently vendored in with gmsfn (it's not yet been made into a library). Thank you Drew!

=> gemini://drewdevault.com/gmni.gmi gmni (gemini)
=> https://sr.ht/~sircmpwn/gmni/ gmni (https)

## Example

A live feed (updated daily) and the configuration for it can be found at:
=> gemini://calcuode.com/feed.gmi feed (gemini)
=> gemini://calcuode.com/gmsfn.gmi configuration (gemini)

## Installation

* A POSIX-like system and a C11 compiler
* OpenSSL
* scdoc

``` Commands used to compile and install gmsfn.
$ git clone https://git.sr.ht/~callum/gmsfn
$ cd gmsfn
$ make
# make install

## Usage

For more information about how gmsfn works see the man pages:
=> gemini://calcuode.com/gmsfn.1.scd.txt gmsfn(1) (gemini)
=> https://git.sr.ht/~callum/gmsfn/blob/main/doc/gmsfn.1.scd gmsfn(1) (https)
=> gemini://calcuode.com/gmsfn.5.scd.txt gmsfn(5) (gemini)
=> https://git.sr.ht/~callum/gmsfn/blob/main/doc/gmsfn.5.scd gmsfn(5) (https)