If the work function opens and closes $netdir/data for an echo
redirection *before* the asynchronous cat process opens it,
aux/trampoline (or tlsclient) will receive a hangup, terminating the
connection.
To fix this, redirect work's stdout to $netdir/data so that it remains
open, and adjust the echo commands accordingly.
When running a plumber and rio combo within a window we were wrongly
using the 'root' rios /dev/wctl. This change happened when we removed
$wctl and had subtly changed the priority of ways /bin/window used to
talk to rio. This mimics the old behavior.
While window did work when run under riostart without $wctl,
the change window running from the plumber. It is typical
for lib/profile to contain:
plumber
rio -s riostart
Previously this worked because rio polluted the envgroup
with $wctl and $wsys, but without $wctl or /dev/wctl the
plumber's window fails to find rio. In favor of not breaking
this configuration we allow window to fallback to checking $wsys
and attaching to the none window. This should keep window working
in all cases in which the wctl pollution worked before.
reboot(1) doesn't shut down the file system gracefully,
and fshalt -r didn't support passing a kernel; this
change allows rebooting into a new kernel with fshalt.
History was built using a heuristic where a file not present in
the dump in 30 days was considered as a deleted file, without
being important if those days had an actual dump. Having the file
server off 30 days made all the files to be deleted from the
history point of view. This new version is rewriten from scratch
in rc and it does not try to detect deleted files since it can
be derived only with fragile assumptions.
When a user isn't allowed to log into a file server, we
used to silently dump the user back to the console,
reporting that the command succeeded.
We should give the user an error when they fail to log in,
and we should exit unsuccessfully.
This status is communicated by setting up a sentinel env
var, and clearning it just before we execute the user
command.
This specifically fixes
% man -P ktrans
We dont have font widths for kanji in our troff
font files, so we can use aux/mnihongo to render
the character using libdraw, and grab the bitmap from
there. It's not pretty, but aux/mnihongo exists so
lets at least use it.
This also updates /sys/man/1/ktrans to specify the
Jp font to comply with aux/mnihongo.
Test(1) was fixed some time ago [1] to properly parse all of its
command line arguments. As such, we need to be more careful about
using test(1) with globbing patterns.
[1] changeset b562b269ce
When grep gets a single file argument, it does
not show the file name. This makes seeing the
file name in the output of 'g' difficult.
Pass a spare /dev/null to each invocation of g,
in order to force it to show the file name.
The initial working directory of a new window may be set by a
`-cd directory` option. However, the `-cd directory` option is
not capable of handling paths with spaces when used via wctl.
To enable paths with spaces the function
/sys/src/cmd/rio/wctl.c:/^parsewctl is extended to handle quoted
directory paths.
Before applying the patch the following will fail to open a new
window by writing to /dev/wctl:
<snip>
% rio -i window
% mkdir '/tmp/path with space'
% echo new -cd '''/tmp/path with space''' window -x rc >> /dev/wctl
% pwd
/tmp/path with space
<snap>
The following invocation fails as well:
<snip>
% window -cd '/tmp/path with space'
% pwd
/tmp/path with space
<snap>
After applying the patch the above sequences work as expected,
opening a window running rc with the working directory set to
'/tmp/path with space'.
remove old /sys/src/games/nes/joynes in favor of joy(1).
joy(1) has more buttons for the other emulators; there is
no longer a significance in the order of the keys.
document nusb/joy, add information in each emulator manpage.
When we plumb a file, we open it in the current working
directory if it exists. However, if it doesn't exist,
we end up opening it relative to the editor's working
directory.
Expanding the path to works around this issue.
patch from gall0ws:
> It's impossible to get whois right and probably nobody cares about it,
> nevertheless this small patch fixes some issues with the current version:
>
> * use a more common filter for default boilerplate (useful when
> following the referral chain)
> * updated boilerplate for *.co.uk *.net.uk *.org.uk
> * added case *.com *.net (got it from iana.org)
> * use ARIN for IPv6 addresses
> * when unsure, check first whether whois.nic.$tld exists otherwise
> usual fallback to InterNIC
> * fixed regexp for the referral chain (case, extra spaces or /)
- add usage handling.
--
cinap
hget supports adding custom headers with -r;
it makes sense for hpost to do the same, both
because custom headers are more likely necessary
with POSTs, and for consistency.
The initial protocol handling in exportfs for
cpu and import services is a huge mess.
Saparate the code out into its own program with
its own oexportfs(4) manpage.
When searching directories recursively, it's still
desirable to filter the contents by the file pattern,
so that 'g foo /sys/src' doesn't end up searching for
foo within .$O files.
Files passed explicitly are still searched, so for the
old behavior, just use walk:
g foo `{walk -f $dir}
When called with the -m flag window would always exit with
some error, usually status='no match', because of an if-match
being the last status-setting command in the script.
Fix inconsistencies between programs and their usage
messages, correct instances where information seems
to be missing or lost. This includes missing arguments,
making usage consistent with manuals, and so on.
When redirecting output from "", it prints the command
to stdout, which garbles things like:
% foo
<inspect output>
% "" > /dev/snarf
Now, we send it to stderr.