we'r getting a rectangle taller than a single line from
coladd() which causes textresize() to collapse the tag
text to zero height.
should probably fix coladd() instead.
introduce kernel inspured Block structure with
read/write pointers to pass packets arround.
the intend is to avoid copying when adding/removing
frame headers and simplifying the drivers.
the driver now calls etheriq() directly allowing it to
queue multiple packets in one pass without having
to keep state.
transmit gets a buffer passed that has room for
frame headers and trailers so no copying is needed.
blocks are refcounted avoiding another copy when
passed to only one receive queue (common case).
receive queues are now limited to 100KB avoiding
buffer bloat.
Dq* a memory leak in destroyfid has been fixed.
lots of minor cleanups.
from: http://9fans.net/archive/2013/04/327
since <compose>x is not yet entrenched, i have a suggestion for ease of
input. suppose <compose>x were redefined so the syntax were
"<compose>x[0-9a-f]+;". in the case that 6 hex digits are entered, then
the ";" is not necessary.
not only would this allow for entering 21-bit runes, it would also allow for
short sequences to be entered more easily.
- erik
using strlen() gives the number of bytes in the utf-8 string.
could use utflen() instead, but decided to just go in a loop
and get rid of the counters all together.
UTF-16 surrogates are not handled.
the process is *NOT* allowed to exit after a srvrelease() as
it still holds a reference (srv->rref) preventing the srv
from beging freed/ended (listensrv) before srvacquire().
ethernet packets with sizes that where not multiples of 4 where
discarded because the check uses the smsc frame size instead of
the payload size. when a usb read returns just one packet, theres
no next frame header and the calculated frame size is bigger than
the usb read which caused the whole packet to be discarded as invalid.
thanks to mischief for testing and debugging!
usb is bound after /dev, so a hanging usb device will hang
access to /dev. we avoid this by releasing the srv, which
allows the fs to still handle reads and walks of the
directories.
ios are serialized by a qlock in the Umsc structure.
add checktag and nil checks in cfsdump() making sure to notice
when the roroot directory structures is corrupted.
cwrecur() used tag == Tsuper to indicate that this is the first
level recursive invocation. this is confusing as we really expect
Tdir tag in that case for the root directory. instead, we now
pass the correct tag (Tdir) and use cw->depth > 1 to see if we
are past the root.
the block tag was only checked when the block was not in
the memory cache. check the tag always!
fork child exportfs with new rendezvous group.
fix missing close of pipe filedescriptors on error.
fix missing close of other end of pipe in child.
dont bark when we get eof on the first init string read.
this condition can happen when unmount opens and
immidiately closes a exported srv file.
running page in own note group avoids killing it when we
exit mothra.
copypaste dupfds() function from page and use it to close
unneeded file descriptors.
we are not using stdout (fd=1) and it, so dup nullfd over it.
this drops the old window reference when using with -w flag.
the RFNAMEG flag isnt needed because we are calling newwindow()
which forks the namespace for us.
reopen stdin/stdout for the external viewer to the new window.
newwindow() used to mount the new window directly on /dev, resulting
in the old window and the new one being mounted over each other.
we now try to unmount the old window from /dev first, mount new
window to /mnt/wsys (replacing the old) and then bind /mnt/wsys
before /dev.
if theres no /mnt/wsys, just mount window directly before /dev.
dont rely on postnote to shutdown client. instead, make reads on
cons, kbd and mouse error. when we mount a window system over
exportfs, the pid useless and even dangerous! pid should be
only used by clients forked by rio itself.
fix bug in resized(), goodrect() takes rect in screen coordinates!
make rectonscreen() fix window size if the window doesnt fit
on the screen.
improve goodrect() to check for windows outside of the screen or
bigger than screen without borders visible.
the openbsd sis(4) driver does not actually go through the rest
of softreset() with sis cards. also, rev 635 reads the mac address
differently, so copy-paste code from openbsd to handle that.