Added signature for changeset ba2c8689e8e9

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Added tag v0.24-rc2 for changeset fb14e3e7dbb4

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
contest: print supported contest names in usage

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
xlua: allow looking up contest names

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
xlua: use size_t instead of int to iterate over script_table

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
xlua: sort lua scripts table based on the filename

Doing this at build time will allow us to make an assumption about the
ordering at runtime.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
xlua: remove dead function prototype

This got left over when script_find got renamed to xlua_script_find.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
xlua: CQ-WW-VHF split into CQ-VHF-DIGI & CQ-VHF-SSBCW

Instead of a single weekend where one can use any mode, starting in 2025
there are two 1-day contents.  The first is SSB/CW/FM-only.  The second is
digital-only.  It looks like they got their own Cabrillo names.

So...

1. add aliases for the contest
2. add an error check to startup callback to catch misuse
3. fixup fill-template and qso-load to work with the new names

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
contest: include a trailing \n in startup & fill-template error messages

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
contest: error out if screen is not big enough for full UI

This is suboptimal, but it is better than silently doing weird things or
failing an assertion while creating one of the windows later on.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
hlog & contest: allow checking for minimum screen size

When initializing the screen, check that it is at least as big as the caller
wants it to be.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
contest: recent shouldn't draw its own lines

We can draw the separators on the root window.  This allows us to connect
the horizontal line to the mid-screen vertical line correctly.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
hlog & contest: remove unused xcurses helpers

They got superseded by the xwin line drawing functions.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
hlog & contest: rename xform.h to xscreen.h

The header contains all 3 abstractions - screen, window, and form.
Therefore, it makes sense to name the file after the broadest level (the
screen).

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
contest: remove unneeded call to recent_refresh

Right after the UI is allocated, we enter the main loop which refreshes the
recent lists.  So, we don't need to pro-actively do it in the allocation
code.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
hlog & contest: remove status_refresh

This function became a no-op with the recent UI rearchitecture and therefore
it isn't needed.  Refresh of all windows and forms is automatically driven
from the screen refresh.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
hlog & contest: rearchitect ncurses UI abstraction

Instead of using raw ncurses for everything except the forms, this commit
adds a new API that provides three abstractions:

1. a screen (which contains a root window for simplicity, but that's an
   implementation detail)
2. 0+ user-allocated windows (windows are associated with the screen)
3. 0+ user-allocated forms (forms are associated with a window)

The form are the virtually the same as xform prior to this rearchitecture.

There is still a lot of clean up, improve, and functionality to add.
However, the code is in a decent enough shape to commit.

Finally, this commit converts hlog & contest binaries to this new API.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
common: close broadcasting sockets during udpsvc shutdown

We were leaking the sockets.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
rpc: open the rig on allocation

This is needed because the recently introduced IC-7610/IC-9700 quirks check
requires the rig to be open.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
rpc: try to get better rig-open errors for serial devices

rig_open return codes are useless, so use access(2) to check if the serial
device is accessible and if not to get a reason why it isn't.

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Next