gatekeeper.git
18 months agoRemove ZONE constant and rename variable
Jacob Bachmeyer [Thu, 23 Mar 2023 03:37:37 +0000 (22:37 -0500)]
Remove ZONE constant and rename variable

18 months agoRemove obsolete "-s" alias for --zone option
Jacob Bachmeyer [Thu, 23 Mar 2023 03:24:13 +0000 (22:24 -0500)]
Remove obsolete "-s" alias for --zone option

18 months agoAdd tests to complete code coverage for configuration parsing
Jacob Bachmeyer [Thu, 23 Mar 2023 03:00:44 +0000 (22:00 -0500)]
Add tests to complete code coverage for configuration parsing

18 months agoAdd overlooked configuration item
Jacob Bachmeyer [Thu, 23 Mar 2023 02:37:48 +0000 (21:37 -0500)]
Add overlooked configuration item

18 months agoAdd tests for gatekeeper configuration parsing
Jacob Bachmeyer [Thu, 23 Mar 2023 02:30:16 +0000 (21:30 -0500)]
Add tests for gatekeeper configuration parsing

18 months agoAdd blank line in testsuite output before version message
Jacob Bachmeyer [Thu, 23 Mar 2023 01:51:25 +0000 (20:51 -0500)]
Add blank line in testsuite output before version message

The keymaster tests already have this line.

18 months agoAdd initial configuration support to gatekeeper
Jacob Bachmeyer [Thu, 23 Mar 2023 01:50:00 +0000 (20:50 -0500)]
Add initial configuration support to gatekeeper

18 months agoAdd options for specifying gpgv and lsof tools
Jacob Bachmeyer [Wed, 22 Mar 2023 03:05:15 +0000 (22:05 -0500)]
Add options for specifying gpgv and lsof tools

This aligns the gatekeeper with the keymaster and permits the external
tools to be placed in a nonstandard location if desired.

19 months agoReport an error if an unrecognized option is given to the gatekeeper
Jacob Bachmeyer [Sun, 19 Mar 2023 04:25:55 +0000 (23:25 -0500)]
Report an error if an unrecognized option is given to the gatekeeper

19 months agoRevise version message in gatekeeper
Jacob Bachmeyer [Sun, 19 Mar 2023 03:54:45 +0000 (22:54 -0500)]
Revise version message in gatekeeper

This brings the output of ./gatekeeper.pl --version in line with current
GNU standards and moves the copyright notice to the top of the file so
Emacs can easily find it for future updates.

19 months agoUpdate copyright notice
Jacob Bachmeyer [Sun, 19 Mar 2023 03:49:11 +0000 (22:49 -0500)]
Update copyright notice

19 months agoRename directive parsing phase and change tag "PV" to "PS"
Jacob Bachmeyer [Sun, 19 Mar 2023 03:48:48 +0000 (22:48 -0500)]
Rename directive parsing phase and change tag "PV" to "PS"

While there is still some syntactic validation performed during this
phase, using the word "validation" for two steps seems likely to risk
confusion, so this phase is renamed in the interests of clarity.

The testsuite is adjusted accordingly.

19 months agoRemove testsuite support for signature verifications during parsing
Jacob Bachmeyer [Fri, 17 Mar 2023 04:29:44 +0000 (23:29 -0500)]
Remove testsuite support for signature verifications during parsing

This was only present to accommodate the extra signature verification
that as previously used to obtain an email address.  The key index now
fills that requirement.

19 months agoAlign actual behavior with stated intent
Jacob Bachmeyer [Fri, 17 Mar 2023 04:20:00 +0000 (23:20 -0500)]
Align actual behavior with stated intent

Any directive with a valid signature from any known key should be sent
to the public archive; the internal archive catches the rest that could
include abusive messages from anonymous parties.  Previously, the code
could only reliably recognize a valid signature if the directive syntax
is valid.  The testsuite is adjusted accordingly.

19 months agoRemove scaffolding that guessed email addresses from signatures
Jacob Bachmeyer [Fri, 17 Mar 2023 03:49:06 +0000 (22:49 -0500)]
Remove scaffolding that guessed email addresses from signatures

The key index is now queried for email addresses associated with the
key used to sign the directive.

19 months agoAdd key index support to gatekeeper
Jacob Bachmeyer [Fri, 17 Mar 2023 03:48:12 +0000 (22:48 -0500)]
Add key index support to gatekeeper

The testsuite is adjusted accordingly to handle signature verfications
during the report phase.

19 months agoAdd key index support in gatekeeper test infrastructure
Jacob Bachmeyer [Fri, 17 Mar 2023 03:26:06 +0000 (22:26 -0500)]
Add key index support in gatekeeper test infrastructure

19 months agoImprove testsuite performance
Jacob Bachmeyer [Fri, 17 Mar 2023 03:25:06 +0000 (22:25 -0500)]
Improve testsuite performance

I am not certain what exactly this tickles in Expect, but it dramatically
reduces the running time of the keymaster tests.

19 months agoRemove obsolete scripts for tasks now handled using the keymaster tool
Jacob Bachmeyer [Wed, 15 Mar 2023 02:22:34 +0000 (21:22 -0500)]
Remove obsolete scripts for tasks now handled using the keymaster tool

19 months agoAdd initial keymaster administrative tool and associated testsuite
Jacob Bachmeyer [Wed, 15 Mar 2023 02:18:28 +0000 (21:18 -0500)]
Add initial keymaster administrative tool and associated testsuite

19 months agoFix bug in testsuite keyring checks
Jacob Bachmeyer [Sun, 12 Mar 2023 01:12:48 +0000 (19:12 -0600)]
Fix bug in testsuite keyring checks

19 months agoAdd support for whole-keyring export to mock gpg tool
Jacob Bachmeyer [Sun, 12 Mar 2023 01:10:00 +0000 (19:10 -0600)]
Add support for whole-keyring export to mock gpg tool

19 months agoAdd --batch option to mock gpg tool
Jacob Bachmeyer [Fri, 10 Mar 2023 04:14:14 +0000 (22:14 -0600)]
Add --batch option to mock gpg tool

19 months agoAdd support for key revocation in mock gpg tool
Jacob Bachmeyer [Fri, 10 Mar 2023 04:12:49 +0000 (22:12 -0600)]
Add support for key revocation in mock gpg tool

20 months agoAdd mock gpg tool for listing and manipulating keyrings
Jacob Bachmeyer [Sat, 21 Jan 2023 02:59:59 +0000 (20:59 -0600)]
Add mock gpg tool for listing and manipulating keyrings

21 months agoMove infrastructure for failure tracking to common "mock" tool init file
Jacob Bachmeyer [Fri, 16 Dec 2022 03:08:21 +0000 (21:08 -0600)]
Move infrastructure for failure tracking to common "mock" tool init file

21 months agoRevise mock tool testsuite to prepare for additional tests
Jacob Bachmeyer [Tue, 6 Dec 2022 03:09:21 +0000 (21:09 -0600)]
Revise mock tool testsuite to prepare for additional tests

A mock GPG for handling keyrings will soon be added to support testing the
keymaster tool currently under early development.

21 months agoChange default GNUPGHOME in mock signature verification tool
Jacob Bachmeyer [Wed, 30 Nov 2022 02:20:44 +0000 (20:20 -0600)]
Change default GNUPGHOME in mock signature verification tool

This reduces the possibility of confusion, and will be more important when
a mock GPG is implemented to support testing the keymaster tool.

21 months agoTidy whitespace
Jacob Bachmeyer [Fri, 13 Jan 2023 04:42:48 +0000 (22:42 -0600)]
Tidy whitespace

21 months agoRemove "pgpg" helper script
Jacob Bachmeyer [Fri, 13 Jan 2023 04:42:28 +0000 (22:42 -0600)]
Remove "pgpg" helper script

21 months agoMerge from upstream
Jacob Bachmeyer [Fri, 13 Jan 2023 04:38:22 +0000 (22:38 -0600)]
Merge from upstream

21 months agominor: punctuation
Ian Kelling [Tue, 10 Jan 2023 09:57:11 +0000 (04:57 -0500)]
minor: punctuation

21 months agominor: README
Ian Kelling [Tue, 10 Jan 2023 09:32:24 +0000 (04:32 -0500)]
minor: README

21 months agomake README be a basic overview of this package
Ian Kelling [Tue, 10 Jan 2023 09:31:11 +0000 (04:31 -0500)]
make README be a basic overview of this package

21 months agoadd license header to tiny scripts for completeness
Ian Kelling [Tue, 10 Jan 2023 06:48:40 +0000 (01:48 -0500)]
add license header to tiny scripts for completeness

21 months agoadd overlooked ftp-rmkey.sh file
Ian Kelling [Tue, 10 Jan 2023 06:44:27 +0000 (01:44 -0500)]
add overlooked ftp-rmkey.sh file

22 months agoPreserve error string during rename checks at initialization
Jacob Bachmeyer [Wed, 23 Nov 2022 03:38:50 +0000 (21:38 -0600)]
Preserve error string during rename checks at initialization

The test file is unlinked if a rename call fails; this could reset $! to
indicate success, so the initial value of $! is saved first.

22 months agoRename "in-stage" directory to "scratch" directory
Jacob Bachmeyer [Wed, 23 Nov 2022 03:31:42 +0000 (21:31 -0600)]
Rename "in-stage" directory to "scratch" directory

22 months agoRename "incoming" directory to "inbox" directory
Jacob Bachmeyer [Wed, 23 Nov 2022 03:31:00 +0000 (21:31 -0600)]
Rename "incoming" directory to "inbox" directory

22 months agoReorganize log message patterns in testsuite
Jacob Bachmeyer [Wed, 23 Nov 2022 00:42:30 +0000 (18:42 -0600)]
Reorganize log message patterns in testsuite

This groups the message patterns by processing phase.

Prior to committing, this was validated with:
    (DIFF='git diff --cached';
     comm -3 <($DIFF | grep ^- | sed -e 's/^-//' | sort) \
             <($DIFF | grep ^+ | sed -e 's/^+//' | sort) )

The output shows only a blank line and diff headers.  To replicate, change
the "git diff" command to compare this commit with its parent.

22 months agoRemove another piece of testsuite scaffolding
Jacob Bachmeyer [Tue, 22 Nov 2022 04:58:48 +0000 (22:58 -0600)]
Remove another piece of testsuite scaffolding

22 months agoRemove testsuite scaffolding for verification during execution phase
Jacob Bachmeyer [Tue, 22 Nov 2022 04:32:16 +0000 (22:32 -0600)]
Remove testsuite scaffolding for verification during execution phase

All signatures are now verified before the execution phase begins.

22 months agoRemove testsuite scaffolding for the validation phase
Jacob Bachmeyer [Tue, 22 Nov 2022 04:24:16 +0000 (22:24 -0600)]
Remove testsuite scaffolding for the validation phase

22 months agoRemove testsuite logic that supported email outside of report phase
Jacob Bachmeyer [Tue, 22 Nov 2022 04:16:32 +0000 (22:16 -0600)]
Remove testsuite logic that supported email outside of report phase

All email messages are now sent during the report phase.

22 months agoRemove obsolete message pattern from testsuite
Jacob Bachmeyer [Tue, 22 Nov 2022 04:07:07 +0000 (22:07 -0600)]
Remove obsolete message pattern from testsuite

22 months agoAdd tests for inbox and scratch cleanup
Jacob Bachmeyer [Tue, 22 Nov 2022 03:56:35 +0000 (21:56 -0600)]
Add tests for inbox and scratch cleanup

22 months agoReorganize gatekeeper to reflect processing phases
Jacob Bachmeyer [Sun, 20 Nov 2022 04:10:21 +0000 (22:10 -0600)]
Reorganize gatekeeper to reflect processing phases

Prior to committing, this was validated with:
    (DIFF='git diff --cached';
     comm -3 <($DIFF | grep ^- | sed -e 's/^-//' | sort) \
             <($DIFF | grep ^+ | sed -e 's/^+//' | sort) )

The output shows only blank lines, diff headers, POD structure, and the
addition of a forward declaration for verify_clearsigned_message as a
temporary measure ahead of a call that will eventually be removed, after
all lines are sorted and paired for analysis.  To replicate, change the
"git diff" command to compare this commit with its parent.

22 months agoRemove obsolete comment
Jacob Bachmeyer [Sun, 20 Nov 2022 03:40:50 +0000 (21:40 -0600)]
Remove obsolete comment

22 months agoMove directive archival to report phase
Jacob Bachmeyer [Sun, 20 Nov 2022 03:20:20 +0000 (21:20 -0600)]
Move directive archival to report phase

Each successfully processed directive is sent to a public archival list,
but directives not signed with a known key or with invalid syntax are only
sent to the internal report inbox.

This commit also reverts the testsuite changes from the previous
commit f9e77b3dd2d94986ff095abd4c50fb957196b05b.

23 months agoRefactor install_files as execute_install
Jacob Bachmeyer [Fri, 18 Nov 2022 04:39:39 +0000 (22:39 -0600)]
Refactor install_files as execute_install

This also moves staging files and validating that the "replace" option is
set if needed to top-level.

23 months agoFactor move_filepair out of install_files
Jacob Bachmeyer [Fri, 18 Nov 2022 04:14:24 +0000 (22:14 -0600)]
Factor move_filepair out of install_files

23 months agoMerge execute_commands into top-level
Jacob Bachmeyer [Fri, 18 Nov 2022 03:58:17 +0000 (21:58 -0600)]
Merge execute_commands into top-level

23 months agoFactor symlink operations out of execute_commands
Jacob Bachmeyer [Fri, 18 Nov 2022 03:54:55 +0000 (21:54 -0600)]
Factor symlink operations out of execute_commands

23 months agoProofread POD
Jacob Bachmeyer [Fri, 18 Nov 2022 03:09:23 +0000 (21:09 -0600)]
Proofread POD

23 months agoConvert section heading comments to POD section headings
Jacob Bachmeyer [Fri, 18 Nov 2022 03:09:00 +0000 (21:09 -0600)]
Convert section heading comments to POD section headings

This commit also removes some leftover comments.

23 months agoUpdate internal documentation to reflect improvements
Jacob Bachmeyer [Fri, 18 Nov 2022 02:53:29 +0000 (20:53 -0600)]
Update internal documentation to reflect improvements

23 months agoAdd checks to avoid removing backup files in scan_incoming
Jacob Bachmeyer [Fri, 18 Nov 2022 02:43:51 +0000 (20:43 -0600)]
Add checks to avoid removing backup files in scan_incoming

Also update internal documentation and adjust testsuite to properly cover
the new edge case.

23 months agoRevise calls to ftp_syslog
Jacob Bachmeyer [Thu, 17 Nov 2022 04:04:40 +0000 (22:04 -0600)]
Revise calls to ftp_syslog

The ftp_syslog procedure now requires exactly two arguments and all calls
have been changed to use Perl's fat comma and its implicit quoting for the
syslog severity keywords.

23 months agoAdd POD block for ftp_syslog
Jacob Bachmeyer [Thu, 17 Nov 2022 03:54:40 +0000 (21:54 -0600)]
Add POD block for ftp_syslog

23 months agoRename local variable in ftp_syslog
Jacob Bachmeyer [Thu, 17 Nov 2022 03:54:25 +0000 (21:54 -0600)]
Rename local variable in ftp_syslog

This change of terms aligns with RFC3164.

23 months agoFixup oversights in recent commits
Jacob Bachmeyer [Thu, 17 Nov 2022 03:43:44 +0000 (21:43 -0600)]
Fixup oversights in recent commits

23 months agoRename ftp_abort to abort
Jacob Bachmeyer [Thu, 17 Nov 2022 03:41:21 +0000 (21:41 -0600)]
Rename ftp_abort to abort

23 months agoExplain intended use of ftp_abort
Jacob Bachmeyer [Thu, 17 Nov 2022 03:38:58 +0000 (21:38 -0600)]
Explain intended use of ftp_abort

23 months agoReindent ftp_abort
Jacob Bachmeyer [Thu, 17 Nov 2022 03:38:48 +0000 (21:38 -0600)]
Reindent ftp_abort

23 months agoRevise calls to ftp_abort
Jacob Bachmeyer [Thu, 17 Nov 2022 03:35:10 +0000 (21:35 -0600)]
Revise calls to ftp_abort

Since ftp_abort is used as an alternative to the die builtin for certain
severe errors, the calls are regularized to omit parentheses.

23 months agoRevise some abort messages
Jacob Bachmeyer [Thu, 17 Nov 2022 03:31:13 +0000 (21:31 -0600)]
Revise some abort messages

These are minor changes for consistency and to report errors.

23 months agoRevise ftp_abort and add POD block
Jacob Bachmeyer [Thu, 17 Nov 2022 03:28:36 +0000 (21:28 -0600)]
Revise ftp_abort and add POD block

The second argument is no longer used and is redundant with the
$AbortExitCode global variable, so it is removed.

23 months agoAdd POD block for report_upload_to_archive procedure
Jacob Bachmeyer [Thu, 17 Nov 2022 03:18:56 +0000 (21:18 -0600)]
Add POD block for report_upload_to_archive procedure

23 months agoRemove quasi-global %info hash
Jacob Bachmeyer [Thu, 17 Nov 2022 03:14:42 +0000 (21:14 -0600)]
Remove quasi-global %info hash

23 months agoRevise mail to remove use of quasi-global %info hash
Jacob Bachmeyer [Thu, 17 Nov 2022 03:11:16 +0000 (21:11 -0600)]
Revise mail to remove use of quasi-global %info hash

23 months agoRevise reporting of replaced files
Jacob Bachmeyer [Thu, 17 Nov 2022 02:52:11 +0000 (20:52 -0600)]
Revise reporting of replaced files

23 months agoFix message describing replacement of a file
Jacob Bachmeyer [Thu, 17 Nov 2022 02:17:45 +0000 (20:17 -0600)]
Fix message describing replacement of a file

This message is written to the log before the file has even been moved to
the staging directory, therefore it should not be past tense.

23 months agoAdd detail when reporting inability to exec GPG
Jacob Bachmeyer [Wed, 16 Nov 2022 03:37:22 +0000 (21:37 -0600)]
Add detail when reporting inability to exec GPG

23 months agoImprove reporting of overwrites when installing files
Jacob Bachmeyer [Wed, 16 Nov 2022 01:01:46 +0000 (19:01 -0600)]
Improve reporting of overwrites when installing files

The reported name is now the logical name in the published tree instead of
the actual name on the server's filesystem.

23 months agoRename debug procedure to reflect its actual usage and simplify call
Jacob Bachmeyer [Wed, 16 Nov 2022 00:52:30 +0000 (18:52 -0600)]
Rename debug procedure to reflect its actual usage and simplify call

23 months agoTidy configured email address
Jacob Bachmeyer [Wed, 16 Nov 2022 00:45:45 +0000 (18:45 -0600)]
Tidy configured email address

23 months agoRename variables holding email addresses to better describe their uses
Jacob Bachmeyer [Wed, 16 Nov 2022 00:45:24 +0000 (18:45 -0600)]
Rename variables holding email addresses to better describe their uses

23 months agoMerge success_upload and success_directive into top-level
Jacob Bachmeyer [Wed, 16 Nov 2022 00:26:42 +0000 (18:26 -0600)]
Merge success_upload and success_directive into top-level

23 months agoMove all collection of email addresses to top-level
Jacob Bachmeyer [Wed, 16 Nov 2022 00:14:45 +0000 (18:14 -0600)]
Move all collection of email addresses to top-level

The 'email' and 'package' keys in the quasi-global %info hash remain as
implicit arguments to mail for the time being.

23 months agoAdd target directory to directive_syntax exceptions
Jacob Bachmeyer [Wed, 16 Nov 2022 00:10:50 +0000 (18:10 -0600)]
Add target directory to directive_syntax exceptions

This will allow the exception handling to easily look up the email
addresses that are to be notified, since a directive_syntax exception can
be thrown before the normal processing collects this information.

23 months agoRemove directive text parameter to interpret_directive
Jacob Bachmeyer [Tue, 15 Nov 2022 23:13:45 +0000 (17:13 -0600)]
Remove directive text parameter to interpret_directive

23 months agoImprove error handling when running gpgv
Jacob Bachmeyer [Tue, 15 Nov 2022 04:27:28 +0000 (22:27 -0600)]
Improve error handling when running gpgv

This commit harmonizes the exit status used when the child process fails
to exec gpgv with that used by posix_spawn, and ensures that the child
process is reaped when the exec fails.

23 months agoRename validate_commands to validate_directive
Jacob Bachmeyer [Sun, 13 Nov 2022 05:53:35 +0000 (23:53 -0600)]
Rename validate_commands to validate_directive

A new validate_commands procedure is planned that runs during VL phase.

23 months agoFix error message for future signature timestamp
Jacob Bachmeyer [Sun, 13 Nov 2022 05:38:28 +0000 (23:38 -0600)]
Fix error message for future signature timestamp

23 months agoAdd test for rejection of uploaded file with future timestamp
Jacob Bachmeyer [Sun, 13 Nov 2022 05:30:20 +0000 (23:30 -0600)]
Add test for rejection of uploaded file with future timestamp

23 months agoFactor signature timestamp validation out of check_replay
Jacob Bachmeyer [Sun, 13 Nov 2022 05:28:08 +0000 (23:28 -0600)]
Factor signature timestamp validation out of check_replay

The main code now also checks the signature timestamp on an uploaded file;
previously this was not checked at all.

23 months agoFix search/replace error
Jacob Bachmeyer [Sun, 13 Nov 2022 05:12:33 +0000 (23:12 -0600)]
Fix search/replace error

23 months agoAdd checks that the rename builtin works as expected
Jacob Bachmeyer [Sun, 13 Nov 2022 05:08:23 +0000 (23:08 -0600)]
Add checks that the rename builtin works as expected

The tool assumes that the Perl rename builtin can atomically move files
from the inbox to the scratchpad directory and among the staging, public,
and archive directories.  This commit extends the configuration checks
to confirm that the system can actually move files as expected.

23 months agoChange storage of other mode flags to constants
Jacob Bachmeyer [Sun, 13 Nov 2022 04:17:17 +0000 (22:17 -0600)]
Change storage of other mode flags to constants

This eliminates the global variables previously used to indicate if the
--help and/or --version flags had been specified and allows the relevant
conditionals to be resolved during the compilation phase.

23 months agoChange current zone from a global variable to a constant
Jacob Bachmeyer [Sun, 13 Nov 2022 04:11:22 +0000 (22:11 -0600)]
Change current zone from a global variable to a constant

Only one zone is processed on each run of the tool, and the zone does not
change after the command arguments are parsed, so this is appropriate.

23 months agoChange terminology: "style" is now "zone"
Jacob Bachmeyer [Sun, 13 Nov 2022 04:06:00 +0000 (22:06 -0600)]
Change terminology:  "style" is now "zone"

The zone definitions will eventually be sections in a configuration file,
instead of being hardwired in the tool.  Backwards compatibility at the
command line for the old short option (which was used at the GNU FTP site)
has been preserved for now, although this support is undocumented and
therefore deprecated.

23 months agoSimplify return sequence in signature verification
Jacob Bachmeyer [Sat, 12 Nov 2022 05:14:15 +0000 (23:14 -0600)]
Simplify return sequence in signature verification

23 months agoFactor out similar code for spawning gpgv subprocess
Jacob Bachmeyer [Sat, 12 Nov 2022 05:06:27 +0000 (23:06 -0600)]
Factor out similar code for spawning gpgv subprocess

23 months agoRename automake_tests to check_automake_vulnerabilities and simplify
Jacob Bachmeyer [Sat, 12 Nov 2022 04:29:33 +0000 (22:29 -0600)]
Rename automake_tests to check_automake_vulnerabilities and simplify

This also moves the checks for known GNU Automake CVE issues to the
top-level, and eliminates the now-otherwise-useless check_vulnerabilities
and check_files procedures.  The major impetus for this simplification
of the call graph was the observation that check_vulnerabilities, while
named generically, was associated with a log message citing specifically
CVE-2009-4029 and CVE-2012-3386, combined with noticing that all other
functionality had been factored out of check_files.

23 months agoFactor uploaded file signature check up to top-level
Jacob Bachmeyer [Sat, 12 Nov 2022 04:03:44 +0000 (22:03 -0600)]
Factor uploaded file signature check up to top-level

23 months agoUse new detached signature verification
Jacob Bachmeyer [Sat, 12 Nov 2022 03:21:56 +0000 (21:21 -0600)]
Use new detached signature verification

23 months agoAdd verify_detached_signature
Jacob Bachmeyer [Sat, 12 Nov 2022 03:21:30 +0000 (21:21 -0600)]
Add verify_detached_signature

23 months agoFactor analysis out of verify_clearsigned_message
Jacob Bachmeyer [Sat, 12 Nov 2022 02:28:16 +0000 (20:28 -0600)]
Factor analysis out of verify_clearsigned_message

This is in preparation for also using --status-fd when verifying detached
signatures for uploaded files.

23 months agoAdd check for scalar context in find_directive_elements
Jacob Bachmeyer [Sat, 12 Nov 2022 02:24:28 +0000 (20:24 -0600)]
Add check for scalar context in find_directive_elements

This avoids building a list when the only important detail is whether a key
is present in the directive.

23 months agoAdd check for existence when removing a symlink
Jacob Bachmeyer [Wed, 9 Nov 2022 00:45:56 +0000 (18:45 -0600)]
Add check for existence when removing a symlink

While the later check to verify that the symlink to be removed actually is
a symlink will also fail if no such file exists, this produces a message
that confusingly reports a refusal to remove a non-symlink file.