<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dwarvish.git, branch evryloop</title>
<subtitle>a (mostly) posix compliant shell and tiny functional programming language
</subtitle>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/'/>
<entry>
<title>Path refresh refactor, comments, and error messages</title>
<updated>2024-02-20T00:09:07+00:00</updated>
<author>
<name>Rory Dudley</name>
</author>
<published>2024-02-20T00:09:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/commit/?id=d98ab111eebfcf5e6327daaec17b5de578d64a41'/>
<id>d98ab111eebfcf5e6327daaec17b5de578d64a41</id>
<content type='text'>
The 'eval' function was renamed to 'repl'.

The code to refresh the $PATH was moved into it's own function:
'prefresh', and is now being called in three locations:
  - At the beginning of 'repl', before the main loop
  - Inside the main loop, possibly during a path search if the command
    is not initially found
  - Inside the main loop, if the call to Command::spawn() throws an
    error, and the error is ErrorKind::NotFound

Doc comments were added for each function, as well as a few more
comments throughout that detail the program's control flow.

The error messages in the main repl loop were cleaned up to have a more
consistent style, and to provide more/better detail.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The 'eval' function was renamed to 'repl'.

The code to refresh the $PATH was moved into it's own function:
'prefresh', and is now being called in three locations:
  - At the beginning of 'repl', before the main loop
  - Inside the main loop, possibly during a path search if the command
    is not initially found
  - Inside the main loop, if the call to Command::spawn() throws an
    error, and the error is ErrorKind::NotFound

Doc comments were added for each function, as well as a few more
comments throughout that detail the program's control flow.

The error messages in the main repl loop were cleaned up to have a more
consistent style, and to provide more/better detail.
</pre>
</div>
</content>
</entry>
<entry>
<title>Better handling of errors during the fork</title>
<updated>2024-02-19T09:33:36+00:00</updated>
<author>
<name>Rory Dudley</name>
</author>
<published>2024-02-19T09:33:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/commit/?id=08be85a2fc508450c6361af4ef38a7dcd3efbde5'/>
<id>08be85a2fc508450c6361af4ef38a7dcd3efbde5</id>
<content type='text'>
Adds two additional error checks when the shell forks:
1. Checks for permission (+r, +x)
2. Checks if the file exists

The first error may occur if the user does not have read access to the
file, or if the file is not executable. The second error may occur if a
file was removed from the $PATH, and the $PATH hasn't been refreshed
yet.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds two additional error checks when the shell forks:
1. Checks for permission (+r, +x)
2. Checks if the file exists

The first error may occur if the user does not have read access to the
file, or if the file is not executable. The second error may occur if a
file was removed from the $PATH, and the $PATH hasn't been refreshed
yet.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refresh path only if command is not found</title>
<updated>2024-02-19T08:40:58+00:00</updated>
<author>
<name>Rory Dudley</name>
</author>
<published>2024-02-19T08:40:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/commit/?id=2e5cc53499947c32b01ea5e1787ed505bc286969'/>
<id>2e5cc53499947c32b01ea5e1787ed505bc286969</id>
<content type='text'>
This is a modified implementation of the 'refresh path on every
iteration of the loop' idea. It instead, only refreshes the path if the
command is not found. After the first refresh, if the command still is
not found, it throws and error.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a modified implementation of the 'refresh path on every
iteration of the loop' idea. It instead, only refreshes the path if the
command is not found. After the first refresh, if the command still is
not found, it throws and error.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refresh paths every loop</title>
<updated>2024-02-19T08:04:17+00:00</updated>
<author>
<name>Rory Dudley</name>
</author>
<published>2024-02-19T08:04:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/commit/?id=670f3864e08003b89a362f381a12d509611db870'/>
<id>670f3864e08003b89a362f381a12d509611db870</id>
<content type='text'>
Implements the path refresh at the start of each REPL loop. On this
commit, it is printing out how long it needed to refresh all the paths
in milliseconds.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implements the path refresh at the start of each REPL loop. On this
commit, it is printing out how long it needed to refresh all the paths
in milliseconds.
</pre>
</div>
</content>
</entry>
<entry>
<title>Call programs from full and relative paths</title>
<updated>2024-02-18T02:52:06+00:00</updated>
<author>
<name>Rory Dudley</name>
</author>
<published>2024-02-18T02:52:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/commit/?id=6cf0f1b12e880f3cd88f013a070406bfb303831a'/>
<id>6cf0f1b12e880f3cd88f013a070406bfb303831a</id>
<content type='text'>
Allow user to input a fullpath or relative path to a file that should be
forked to.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Allow user to input a fullpath or relative path to a file that should be
forked to.
</pre>
</div>
</content>
</entry>
<entry>
<title>Control flow in cd</title>
<updated>2024-02-18T02:51:17+00:00</updated>
<author>
<name>Rory Dudley</name>
</author>
<published>2024-02-18T02:51:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/commit/?id=7fbd8e662e8f66937d647ec1f687dd8f7946de49'/>
<id>7fbd8e662e8f66937d647ec1f687dd8f7946de49</id>
<content type='text'>
Make the control flow in our cd implementation a bit easier to
read/follow.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make the control flow in our cd implementation a bit easier to
read/follow.
</pre>
</div>
</content>
</entry>
<entry>
<title>EOF behavior</title>
<updated>2024-02-18T02:50:00+00:00</updated>
<author>
<name>Rory Dudley</name>
</author>
<published>2024-02-18T02:50:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/commit/?id=55ff53d3a8b4cb879a50918f4df491c6043de9dd'/>
<id>55ff53d3a8b4cb879a50918f4df491c6043de9dd</id>
<content type='text'>
Print a newline before quitting when we receive an EOF.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Print a newline before quitting when we receive an EOF.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update cd</title>
<updated>2024-02-18T02:27:17+00:00</updated>
<author>
<name>Rory Dudley</name>
</author>
<published>2024-02-18T02:27:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/commit/?id=0c01a478fa57cbd0c4e7836d1b4e697014da4d67'/>
<id>0c01a478fa57cbd0c4e7836d1b4e697014da4d67</id>
<content type='text'>
Instead of printing an error if the path is not specified, simply 'cd'
into the user's home directory instead.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of printing an error if the path is not specified, simply 'cd'
into the user's home directory instead.
</pre>
</div>
</content>
</entry>
<entry>
<title>Change directories</title>
<updated>2024-02-17T05:54:48+00:00</updated>
<author>
<name>Rory Dudley</name>
</author>
<published>2024-02-17T05:54:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/commit/?id=22645fe49fcf488b46fbbcfae7d189c5c9c8c350'/>
<id>22645fe49fcf488b46fbbcfae7d189c5c9c8c350</id>
<content type='text'>
Added logic to change directories with 'cd'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Added logic to change directories with 'cd'.
</pre>
</div>
</content>
</entry>
<entry>
<title>Capture SIGINT</title>
<updated>2024-02-17T05:36:31+00:00</updated>
<author>
<name>Rory Dudley</name>
</author>
<published>2024-02-17T05:36:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dwarvish.org/dwarvish.git/commit/?id=c101a8c2abf0c25fc75e4101a83ae56bc2a9b789'/>
<id>c101a8c2abf0c25fc75e4101a83ae56bc2a9b789</id>
<content type='text'>
Added logic to capture the interrupt signal. Using a rust crate called
'ctrlc' to do the heavy lifting. Program will simply reprint the prompt
on a new line if the interrup signal is detected.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Added logic to capture the interrupt signal. Using a rust crate called
'ctrlc' to do the heavy lifting. Program will simply reprint the prompt
on a new line if the interrup signal is detected.
</pre>
</div>
</content>
</entry>
</feed>
