citadel.git
45 hours agosome work on calendar master
Art Cancro [Wed, 17 Apr 2024 03:44:07 +0000 (20:44 -0700)]
some work on calendar

2 days agoCalendar view: initial call of REPORT method.
Art Cancro [Tue, 16 Apr 2024 23:25:41 +0000 (16:25 -0700)]
Calendar view: initial call of REPORT method.

Right now it's just a placeholder that outputs the raw XML to the screen.

Use the allprop tag

2 days agomore noodling on backend detection
Art Cancro [Tue, 16 Apr 2024 19:20:35 +0000 (12:20 -0700)]
more noodling on backend detection

2 days agoTest for existing BDB files (not used yet)
Art Cancro [Tue, 16 Apr 2024 15:20:56 +0000 (08:20 -0700)]
Test for existing BDB files (not used yet)

6 days agoRelease version 999 generated by do-release.sh v999
Art Cancro [Fri, 12 Apr 2024 16:19:44 +0000 (09:19 -0700)]
Release version 999 generated by do-release.sh

6 days agoFixed parsing of message-id angle brackets
Art Cancro [Fri, 12 Apr 2024 16:15:57 +0000 (09:15 -0700)]
Fixed parsing of message-id angle brackets

2 weeks agoBegan adding support for <prop> stanzas.
Art Cancro [Tue, 2 Apr 2024 22:39:30 +0000 (15:39 -0700)]
Began adding support for <prop> stanzas.

3 weeks agoEveryone who designed CalDAV deserves torture and ultra-violent death.
Art Cancro [Fri, 29 Mar 2024 00:04:52 +0000 (17:04 -0700)]
Everyone who designed CalDAV deserves torture and ultra-violent death.

3 weeks agomoved whitespace around
Art Cancro [Wed, 27 Mar 2024 20:24:04 +0000 (13:24 -0700)]
moved whitespace around

3 weeks agoserv_notes.c: cleanup
Art Cancro [Wed, 27 Mar 2024 20:14:41 +0000 (13:14 -0700)]
serv_notes.c: cleanup

3 weeks agointernet_addressing.c: minor cleanups
Art Cancro [Wed, 27 Mar 2024 20:09:55 +0000 (13:09 -0700)]
internet_addressing.c: minor cleanups

3 weeks agovalidate_recipients() - completed removal of unused param
Art Cancro [Wed, 27 Mar 2024 19:56:30 +0000 (12:56 -0700)]
validate_recipients() - completed removal of unused param

3 weeks agoREPORT namespace output uses declaration defined on top
Art Cancro [Wed, 27 Mar 2024 19:43:06 +0000 (12:43 -0700)]
REPORT namespace output uses declaration defined on top

3 weeks agovalidate_recipients() remove extra copy of recipients
Art Cancro [Wed, 27 Mar 2024 15:47:55 +0000 (08:47 -0700)]
validate_recipients() remove extra copy of recipients

We no longer need to copy recipients_in to recipients, because we no longer
destructively tokenize it.  Now we non-destructively tokenize it into an array.

Also I discovered that there is an unused parameter in that call.  Removed it
and the one place where it was being non-functionally called.

3 weeks agoHandle start and end times together
Art Cancro [Mon, 25 Mar 2024 20:04:23 +0000 (13:04 -0700)]
Handle start and end times together

3 weeks agomake it pretty
Art Cancro [Mon, 25 Mar 2024 19:27:27 +0000 (12:27 -0700)]
make it pretty

3 weeks agoCompleted time range search of recurring events.
Art Cancro [Mon, 25 Mar 2024 17:58:29 +0000 (10:58 -0700)]
Completed time range search of recurring events.

3 weeks agoxmpp_sasl_service.c: style cleanup
Art Cancro [Fri, 22 Mar 2024 20:19:15 +0000 (13:19 -0700)]
xmpp_sasl_service.c: style cleanup

3 weeks agoMade this code more brief
Art Cancro [Fri, 22 Mar 2024 17:12:38 +0000 (10:12 -0700)]
Made this code more brief

3 weeks agoTook ical_dezonify.c back out of WebCit-NG
Art Cancro [Fri, 22 Mar 2024 15:28:34 +0000 (08:28 -0700)]
Took ical_dezonify.c back out of WebCit-NG

4 weeks agoDefined 19010101T010101Z-99991231T235959Z consts.
Art Cancro [Thu, 21 Mar 2024 21:49:36 +0000 (14:49 -0700)]
Defined 19010101T010101Z-99991231T235959Z consts.

These are now known as "the_beginning_of_time" and
"the_end_of_time" and closely track the time boundaries within
which libical can safely operate.

Supplied these as default values when filling variables to call the
time range compare function, allowing us to remove the check-for-null
code in that function.

4 weeks agoical_ctdl_is_overlap.c: cleaned it up
Art Cancro [Thu, 21 Mar 2024 18:50:21 +0000 (11:50 -0700)]
ical_ctdl_is_overlap.c: cleaned it up

4 weeks agoDo not convert compared times to UTC.
Art Cancro [Thu, 21 Mar 2024 18:30:29 +0000 (11:30 -0700)]
Do not convert compared times to UTC.

ical_ctdl_is_overlap() works because icaltime_compare() is really smart.
It looks at the time zone of the dtstart/dtend and can apparently go back up the icalcomponent
hierarchy to find its time zone data.  I tested this by creating an event with a fictional
time zone and it did the right thing.  It even showed the fictional name to me.  This saves us
from having to convert everything to UTC before comparing.  Nice!

4 weeks agoCompare after convert works. Saving.
Art Cancro [Thu, 21 Mar 2024 17:57:36 +0000 (13:57 -0400)]
Compare after convert works.  Saving.

4 weeks agoWARNING NOT Y10K COMPLIANT
Art Cancro [Thu, 21 Mar 2024 17:11:36 +0000 (13:11 -0400)]
WARNING NOT Y10K COMPLIANT

Set min (00010101T010101Z) and max (99991231T235959Z) dates to use when
min or max timestamp is not supplied for comparison

4 weeks agoChanged "supplied_xxx" to "xxx_in" when we modify.
Art Cancro [Thu, 21 Mar 2024 15:54:37 +0000 (11:54 -0400)]
Changed "supplied_xxx" to "xxx_in" when we modify.

4 weeks agoical_ctdl_is_overlap() is now symlinked 3 places.
Art Cancro [Wed, 20 Mar 2024 19:56:01 +0000 (15:56 -0400)]
ical_ctdl_is_overlap() is now symlinked 3 places.

It's the same function used in Citadel Server, WebCit-Classic, and
WebCit-NG.  It isn't really suitable for use in libcitadel so we
made symlinks instead.

4 weeks agoBring ical_dezonify() into caldav_reports.c
Art Cancro [Tue, 19 Mar 2024 23:56:32 +0000 (19:56 -0400)]
Bring ical_dezonify() into caldav_reports.c

Make a local copy of events being compared, dezonify them.
Now gotta write the rest.

4 weeks agoIn webcit-classic, include webserver.h from webcit.h.
Art Cancro [Tue, 19 Mar 2024 23:44:05 +0000 (19:44 -0400)]
In webcit-classic, include webserver.h from webcit.h.

This makes it easier to port ical_dezonify.c between webcit generations.

6 weeks agomisc style cleanup
Art Cancro [Thu, 7 Mar 2024 16:29:15 +0000 (16:29 +0000)]
misc style cleanup

6 weeks agoOnly calculate ops/sec if time>0
Art Cancro [Mon, 4 Mar 2024 22:14:05 +0000 (17:14 -0500)]
Only calculate ops/sec if time>0

6 weeks agoMade a note to fix a divide-by-zero problem.
Art Cancro [Mon, 4 Mar 2024 21:13:15 +0000 (16:13 -0500)]
Made a note to fix a divide-by-zero problem.

(ops_completed / (time(NULL) - time_started)

I thought my new machine had a problem but it turned out to just be
running so fast that "time(NULL) - time_started" really was zero.

6 weeks agoMoved default_zone_name declaration to webcit.h
Art Cancro [Sun, 3 Mar 2024 00:13:17 +0000 (19:13 -0500)]
Moved default_zone_name declaration to webcit.h

6 weeks agocal_zone means "calendar timezone" also "calzone"
Art Cancro [Sun, 3 Mar 2024 00:02:46 +0000 (19:02 -0500)]
cal_zone means "calendar timezone" also "calzone"

ical_dezonify() is going to be needed in both WebCit Classic and
WebCit-NG , so this needs to be cleaned up and generalized.

6 weeks agoSmuggled classified secrets into this repository.
Art Cancro [Sat, 2 Mar 2024 21:36:54 +0000 (16:36 -0500)]
Smuggled classified secrets into this repository.

7 weeks agoSkeleton code for time-range test (section 9.9)
Art Cancro [Tue, 27 Feb 2024 16:16:56 +0000 (11:16 -0500)]
Skeleton code for time-range test (section 9.9)

After finally getting to the point where we are recursing up
through both the nested components and the nested queries in a
way that matches them properly, we are now able to start writing
the individual property and parameter queries defined in the RFC.

time-range (section 9.9) is the obvious first choice to implement
because it is the most useful.  Wrote and bound the skeleton
function to do this.

7 weeks agoI hope letitia james and arthur engoron get run over by a truck
Art Cancro [Tue, 27 Feb 2024 04:42:46 +0000 (23:42 -0500)]
I hope letitia james and arthur engoron get run over by a truck

7 weeks agoCount nesting level only for comp-filters
Art Cancro [Tue, 27 Feb 2024 03:50:32 +0000 (22:50 -0500)]
Count nesting level only for comp-filters

7 weeks agoadded more trace messages
Art Cancro [Tue, 27 Feb 2024 03:41:45 +0000 (22:41 -0500)]
added more trace messages

7 weeks agoRefining XML rules
Art Cancro [Mon, 26 Feb 2024 23:00:19 +0000 (18:00 -0500)]
Refining XML rules

7 weeks agoXML is like violence: if it doesn't work, you're not using enough.
Art Cancro [Mon, 26 Feb 2024 22:37:20 +0000 (17:37 -0500)]
XML is like violence: if it doesn't work, you're not using enough.

8 weeks agoUpdated the text client command set help
Art Cancro [Thu, 22 Feb 2024 21:28:00 +0000 (16:28 -0500)]
Updated the text client command set help

8 weeks agoCompleted the first two filter tests.
Art Cancro [Thu, 22 Feb 2024 01:56:43 +0000 (20:56 -0500)]
Completed the first two filter tests.

comp-filter on the root element are the first two tests.  Yes, these
are ridiculously easy, but hopefully it gets the design pattern started
and we can move on from there.

8 weeks agoMade the log easier to read
Art Cancro [Wed, 21 Feb 2024 19:49:17 +0000 (14:49 -0500)]
Made the log easier to read

8 weeks agoTry new strategy for CalDAV report filter parsing.
Art Cancro [Wed, 21 Feb 2024 17:28:11 +0000 (12:28 -0500)]
Try new strategy for CalDAV report filter parsing.

The recursive strategy I initially built looked clever but it's
not going to work because we need to iterate through both the
rules and the components/properties/parameters at the same time.

Reworked the code to go through filters iteratively instead of
recursively.  This protocol is way too complex and the people who
designed it need to be tortured.

8 weeks agoI wish much death and suffering to Cyrus Daboo, Lisa M. Dusseault, and Bernard Desrui...
Art Cancro [Wed, 21 Feb 2024 05:08:57 +0000 (00:08 -0500)]
I wish much death and suffering to Cyrus Daboo, Lisa M. Dusseault, and Bernard Desruisseaux.  They must be punished severely for creating CalDAV.

8 weeks agoShorthand for the XML namespace
Art Cancro [Wed, 21 Feb 2024 04:43:13 +0000 (23:43 -0500)]
Shorthand for the XML namespace

8 weeks agoSkeleton code for filters.
Art Cancro [Tue, 20 Feb 2024 15:15:57 +0000 (10:15 -0500)]
Skeleton code for filters.

All of the filters specified in RFC4971 9.7.1 through 9.7.5 will
be handled in this loop: comp-filter, prop-filter, param-filter,
is-not-defined, text-match, and probably others as we complete the
spec.

Also, in all of the .c files I unwrapped the license declaration onto a single
line, since the whole thing fits inside 132 characters, and 132 characters is
our official line length now.

2 months agoCompleted framework for caldav_apply_one_filter()
Art Cancro [Wed, 14 Feb 2024 18:16:33 +0000 (13:16 -0500)]
Completed framework for caldav_apply_one_filter()

Now we have an array of tokens containing the filter name and all attributes.

2 months agoFilters defined in RFC4791 9.7.1-9.7.5: DRY ingest
Art Cancro [Wed, 14 Feb 2024 17:03:02 +0000 (12:03 -0500)]
Filters defined in RFC4791 9.7.1-9.7.5: DRY ingest

The code to parse these XML stanzas and ingest them into our filter
list was getting quite redundant.  This commit abstracts them into
a single handler.

2 months agoYet another attempted framework for caldav filters.
Art Cancro [Tue, 13 Feb 2024 22:31:28 +0000 (17:31 -0500)]
Yet another attempted framework for caldav filters.

CalDAV is stupid, the people who created it are stupid, and anyone who
still thinks it was a good idea are stupid.  But now we're stuck with it
and I have to implement it.

2 months agoFinal changes to XML parser trace logging.
Art Cancro [Mon, 12 Feb 2024 19:41:12 +0000 (14:41 -0500)]
Final changes to XML parser trace logging.

This is extremely inefficient code, but it will be ifdef'ed out
during normal use.  Like the rest of the protocol trace options,
they are only getting ifdef'ed into use while I am developing.

2 months agomore logging and chardata stuff
Art Cancro [Mon, 12 Feb 2024 16:09:23 +0000 (11:09 -0500)]
more logging and chardata stuff

2 months agobetter logging presentation of chardata
Art Cancro [Sun, 11 Feb 2024 05:47:21 +0000 (00:47 -0500)]
better logging presentation of chardata

2 months agoImproved logging of XML parse
Art Cancro [Sat, 10 Feb 2024 19:17:33 +0000 (14:17 -0500)]
Improved logging of XML parse

2 months agoSolved P=NP
Art Cancro [Fri, 9 Feb 2024 21:52:29 +0000 (16:52 -0500)]
Solved P=NP

2 months agoUnified multistatus output for all REPORT outputs.
Art Cancro [Thu, 8 Feb 2024 19:39:59 +0000 (14:39 -0500)]
Unified multistatus output for all REPORT outputs.

"multiget" and "query" REPORTs now use the same code path for
outputing results in DAV "multi-status" format, keeping this logic
DRY.

"query" reports are currently operating through a vile sleazy hack
that makes it output every item in the calendar without applying
any filters.  That's the next piece to work on.

2 months agoMoved multiget output into its own function.
Art Cancro [Wed, 7 Feb 2024 01:43:19 +0000 (20:43 -0500)]
Moved multiget output into its own function.

This will allow the output code to remain DRY when it is called
by several different REPORT types.

2 months agoctdldump/ctdlload: add version number to banner
Art Cancro [Tue, 6 Feb 2024 16:10:06 +0000 (11:10 -0500)]
ctdldump/ctdlload: add version number to banner

2 months agoAdded context state to output of RWHO command.
Art Cancro [Tue, 6 Feb 2024 03:41:52 +0000 (17:41 -1000)]
Added context state to output of RWHO command.

Hopefully the next time some douchebag from out of town floods our
site with stuck-open MSA sessions, we can figure out why it isn't
unbinding or timing out.

2 months agoRelease version 998 generated by do-release.sh v998
Art Cancro [Tue, 6 Feb 2024 03:19:05 +0000 (22:19 -0500)]
Release version 998 generated by do-release.sh

2 months agoadd a comment to the previous thing
Art Cancro [Mon, 5 Feb 2024 22:53:23 +0000 (17:53 -0500)]
add a comment to the previous thing

2 months agoAwesome sauce, read description below for details.
Art Cancro [Mon, 5 Feb 2024 22:46:34 +0000 (17:46 -0500)]
Awesome sauce, read description below for details.

My 'ctdlload' operation kept failing because there were a few user
records dumped that had insane data in them.  CtdlDecodeBase64() was
silently doing buffer overruns because it doesn't know the size of
the target buffer.

While noodling a workaround, I realized that you can pass the same
pointer to CtdlDecodeBase64() as both the source *and* target buffer.
This works because the decoded data pointer will ALWAYS be behind the
encoded data pointer.  This allows a "decode-in-place" operation!

By performing a decode-in-place and then using safestrncpy() to copy
the results to the finitely-sized string buffer in the target struct,
we guarantee no buffer overruns.  Valgrind no longer bitches about it
and the program does not crash.

2 months agoGiving up on doing citserver-side REPORT parsing.
Art Cancro [Wed, 31 Jan 2024 02:59:50 +0000 (21:59 -0500)]
Giving up on doing citserver-side REPORT parsing.

webcit and citserver are guaranteed to be on the same host now, and
performance over a unix domain socket is likely to approach that of
doing it the "hard" way anyway.  So I pulled out all the crap I was
adding.  It was making the data model very ugly.

2 months agoenabling http debugging because here comes caldav ugh
Art Cancro [Wed, 31 Jan 2024 02:12:26 +0000 (16:12 -1000)]
enabling http debugging because here comes caldav ugh

2 months ago"To hell with cloud. Run Citadel." --Taylor Swift
Art Cancro [Tue, 30 Jan 2024 19:07:44 +0000 (14:07 -0500)]
"To hell with cloud. Run Citadel." --Taylor Swift

2 months agoCtdlCheckExpress() now accepts a session context.
Art Cancro [Tue, 30 Jan 2024 15:26:53 +0000 (10:26 -0500)]
CtdlCheckExpress() now accepts a session context.

This is an experiment in reducing the use of the "CC" macro
that appears everywhere in the server.  Willi used to do a lot
of "struct CitContext *CCC = CC" but that still called the macro
once per function call and it added complexity to the code.  This
method is the right way, actually passing the session context up
the stack like we do in WebCit-NG.

2 months agoRelease version 997 generated by do-release.sh v997
Art Cancro [Mon, 29 Jan 2024 23:57:09 +0000 (18:57 -0500)]
Release version 997 generated by do-release.sh

2 months agoIndent with tabs, as God intended.
Art Cancro [Mon, 29 Jan 2024 20:26:37 +0000 (15:26 -0500)]
Indent with tabs, as God intended.

2 months agodatabaselayout.md: added code blocks
Art Cancro [Mon, 29 Jan 2024 19:18:34 +0000 (14:18 -0500)]
databaselayout.md: added code blocks

2 months agobinaries.txt: converted to markdown
Art Cancro [Mon, 29 Jan 2024 18:58:08 +0000 (13:58 -0500)]
binaries.txt: converted to markdown

2 months agoCodified plans for world domination
Art Cancro [Mon, 29 Jan 2024 16:09:52 +0000 (11:09 -0500)]
Codified plans for world domination

2 months agoChanged the BIGMSGS semantics.
Art Cancro [Mon, 29 Jan 2024 03:23:03 +0000 (22:23 -0500)]
Changed the BIGMSGS semantics.

We now identify the memory location of the start of message body
during serialization, so we don't have to measure it twice.  Then
we store the body in the BIGMSGS table only if the total message
size would exceed 4000 bytes.  This assumes that memory and disk
pages are 4096 bytes, so we want to optimize for a single I/O
operation in most cases.

2 months agoloadtest: default threads now 10
Art Cancro [Sat, 27 Jan 2024 17:27:57 +0000 (12:27 -0500)]
loadtest: default threads now 10

2 months agoloadtest: added ops/sec meter
Art Cancro [Sat, 27 Jan 2024 00:09:34 +0000 (19:09 -0500)]
loadtest: added ops/sec meter

2 months agoAssert that eMessageText MUST be serialized last.
Art Cancro [Fri, 26 Jan 2024 21:51:39 +0000 (16:51 -0500)]
Assert that eMessageText MUST be serialized last.

Also assert that the calculated length of the serialized message
is actually the final length.  Either of these conditions not
being true is worth crashing the server so the developer who broke
it knows immediately.

2 months agoCtdlSerializeMessage() now returns struct smr_ret
Art Cancro [Fri, 26 Jan 2024 18:14:02 +0000 (13:14 -0500)]
CtdlSerializeMessage() now returns struct smr_ret

Instead of giving it a pointer to a struct to fill, now it just
returns a struct.  Because it is the current year and the compiler
can handle that.

2 months agoRearranging code to prepare for multiple REPORT types
Art Cancro [Thu, 25 Jan 2024 16:37:39 +0000 (11:37 -0500)]
Rearranging code to prepare for multiple REPORT types

2 months agoremove leading/trailing whitespace from hrefs
Art Cancro [Thu, 25 Jan 2024 00:26:14 +0000 (19:26 -0500)]
remove leading/trailing whitespace from hrefs

This was found in the CALDAV 'calendar-multiget' REPORT and has been fixed

2 months agoNoodling on calendar query commands.
Art Cancro [Wed, 24 Jan 2024 22:19:23 +0000 (17:19 -0500)]
Noodling on calendar query commands.

The server command 'ICAL report' is now 'ICAL query' with the intent that
it will handle CalDAV 'calendar-query' REPORTs, but not other REPORTs.

Likewise, functions with names including the string 'calendar_report' have
been changed to 'calendar_query'.

2 months agoMade our cproto output even more beautiful
Art Cancro [Wed, 24 Jan 2024 21:32:07 +0000 (16:32 -0500)]
Made our cproto output even more beautiful

2 months agoBegan refactoring CALDAV REPORT flow of control.
Art Cancro [Wed, 24 Jan 2024 20:19:57 +0000 (10:19 -1000)]
Began refactoring CALDAV REPORT flow of control.

Removed calendar_functions.c and brought some of its code over
to caldav_reports.c so that we can use the same code path for all
three types of REPORTs.

This is motivated by an idea that perhaps the user interface can
use CalDAV as its REST API instead of inventing something new.  If
that doesn't work, we needed to finish CalDAV eventually anyway.

2 months agoDon't bother reading this commit.
Art Cancro [Wed, 24 Jan 2024 01:22:33 +0000 (15:22 -1000)]
Don't bother reading this commit.

2 months agoBlockquotes are now rendered to console as dim instead of italic
Art Cancro [Tue, 23 Jan 2024 16:18:41 +0000 (11:18 -0500)]
Blockquotes are now rendered to console as dim instead of italic

2 months agoNew config option: set smtp_advertise_starttls to nonzero to advertise STARTTLS in...
Art Cancro [Sat, 20 Jan 2024 16:01:04 +0000 (11:01 -0500)]
New config option: set smtp_advertise_starttls to nonzero to advertise STARTTLS in ESMTP

3 months agoupdated description
Art Cancro [Sun, 14 Jan 2024 03:04:16 +0000 (22:04 -0500)]
updated description

3 months agomove calendar prototypes around, add more with cproto
Art Cancro [Wed, 10 Jan 2024 22:20:09 +0000 (17:20 -0500)]
move calendar prototypes around, add more with cproto

3 months agoExperimenting with the code layout for calendar report handling.
Art Cancro [Mon, 8 Jan 2024 21:29:16 +0000 (16:29 -0500)]
Experimenting with the code layout for calendar report handling.

The goal is to provide calendar searches (date range etc) for both WebCit-NG
and for CALDAV REPORT method in a DRY way.

3 months agoDon't log each table open/close, just the whole operation
Art Cancro [Mon, 8 Jan 2024 16:57:28 +0000 (11:57 -0500)]
Don't log each table open/close, just the whole operation

3 months agoSTART_CHAT_MODE is renamed to SEND_THEN_RECV
Art Cancro [Mon, 8 Jan 2024 15:19:58 +0000 (10:19 -0500)]
START_CHAT_MODE is renamed to SEND_THEN_RECV

This protocol mode began almost 30 years ago when we handled real time chat by
holding a session open and moving data back and forth until told to stop.  We
don't do that anymore, but there are several places where a command requires
sending long data in both directions.  SEND_THEN_RECV is a better name for this.

3 months agoThe damn thing finished. Let's see what it did.
Art Cancro [Sat, 6 Jan 2024 00:01:38 +0000 (19:01 -0500)]
The damn thing finished.  Let's see what it did.

3 months agoStill waiting for the computer. Or rather, for other computers.
Art Cancro [Fri, 5 Jan 2024 23:56:50 +0000 (18:56 -0500)]
Still waiting  for the computer.  Or rather, for other computers.

3 months agoStill waiting...
Art Cancro [Fri, 5 Jan 2024 23:51:03 +0000 (18:51 -0500)]
Still waiting...

3 months agoThis time I'm waiting for the computer.
Art Cancro [Fri, 5 Jan 2024 23:47:56 +0000 (18:47 -0500)]
This time I'm waiting for the computer.

3 months agoCan you tell I'm REALLY avoiding another task right now?
Art Cancro [Fri, 5 Jan 2024 20:49:15 +0000 (15:49 -0500)]
Can you tell I'm REALLY avoiding another task right now?

3 months agoThe little LEDs on the NanoPi blink when there is activity.
Art Cancro [Fri, 5 Jan 2024 20:22:18 +0000 (15:22 -0500)]
The little LEDs on the NanoPi blink when there is activity.

It's fun to watch.  It's fun to build on ARM first and try x86 later.

3 months agoThat about wraps it up for serv_calendar.c
Art Cancro [Fri, 5 Jan 2024 19:52:10 +0000 (14:52 -0500)]
That about wraps it up for serv_calendar.c

Seeing this code has really brought me back to the upstairs room
in my old house where I wrote most of it back in 2002-2003.  I can
see the sunlight coming in the windows, the color of the carpet,
the little alcove where the computer was, the cat sleeping on top
of the big CRT monitor.

Hopefully the stuff I need to add to it now will be straightforward
since it looks like I really took my time and commented it heavily.
It looks pretty clean, especially now that I've reformatted it with
the new screen width an C99 comments.  It does seem a bit WET though.

3 months agoContinuing the war against C89-style comments
Art Cancro [Fri, 5 Jan 2024 19:44:46 +0000 (14:44 -0500)]
Continuing the war against C89-style comments

3 months agoserv_calendar.c: more formatting changes
Art Cancro [Fri, 5 Jan 2024 15:33:17 +0000 (10:33 -0500)]
serv_calendar.c: more formatting changes

3 months agodammit, learn to spell
Art Cancro [Thu, 4 Jan 2024 22:51:08 +0000 (17:51 -0500)]
dammit, learn to spell

Many years ago, someone inserted an enum called eMesageText into the code
and used it all over the place without correcting the spelling.  This
commit finally fixes it.