Commit graph

2719 commits

Author SHA1 Message Date
mischief
61269254d0 synchronize ape's vfprintf with libstdio
in ape's vfprintf we don't check if the file we're writing is actually a string buffer, resulting in a return of -1, when we should actually return the number of bytes that would be written.
2013-11-06 11:22:15 -08:00
cinap_lenrek
7b36a7e1a9 merge 2013-11-05 08:01:43 +01:00
cinap_lenrek
118cf5e36a rio: eleminate temporary allocations before frinsert() and in namecomplete()
frinsert() shouldnt modify the runes passed and the
buffer isnt going to be modified my us during the call
so removing the temporary copies.

namecomplete() makes utf-8 copies of the rune strings so
theres no need to copy the runes.
2013-11-05 08:00:26 +01:00
stanley lieber
fc8734dac1 fortunes: AFTER READ THE PAGE YOU UNDRSTAND WHAT IM TALKING TO YOU ! 2013-11-03 20:01:52 -05:00
stanley lieber
f637986cae aml(2): english 2013-11-03 20:01:03 -05:00
cinap_lenrek
f73bf5f90d aml(2): fix amldelay() decscription. it takes microseconds, not milliseconds. 2013-11-04 00:09:28 +01:00
cinap_lenrek
65829e635c add aml(2) manual page 2013-11-03 22:13:03 +01:00
cinap_lenrek
c5a70cc23d rio: do backspace \b processing inplace avoiding buffer allocation 2013-11-03 04:03:38 +01:00
cinap_lenrek
9619a621ac rio: cleanup and error handling 2013-11-03 00:34:35 +01:00
cinap_lenrek
bcad0cd4e6 rio: huge simplification of flush handling
xfidflush() now uses a simpler way to flush another xfid.

when we can send to Xfid.c channel, we know that the
xfid is completed. so all xfidflush() needs todo is to
do an alt sending to both Xfid.c and Xfid.flushc.

once the send to Xfid.c succeeds, we know the xfid is gone
and we can respond to the flush request.

theres no need to keep track of flush state anymore. so
Xfid.active and Xfid.flushing can be removed.

note, that it is ok to respond normally to a currently
flushed request.
2013-11-02 17:54:42 +01:00
cinap_lenrek
837918ee5e rio: add sanity check in xfidallocthread() 2013-11-01 21:28:03 +01:00
cinap_lenrek
f37ee95fbc rio: enforce flush reply ordering for all xfids
flushing isnt optional for concurrently handled requests.
we need to ensure that Rflush is replied *after* the
origianl request.

so we assign the flushtag for *every* xfid in xfidctl(),
and filsysrespond() checks if the xfid was flushed
*after* replying and wakes up the flushing xfid.
2013-11-01 21:21:24 +01:00
cinap_lenrek
413977c19b rio: properly handle follow up flushes (fixes unexpected reply tag)
when multiple flushes are send, they need to be replied
in order. we ensure this by having the flush xfid taking
over the flushtag (synchronized with a new fs->csyncflush
channel) so the next flush will flush the previous flush.
2013-11-01 18:57:11 +01:00
cinap_lenrek
f87baec1d0 make auto negotiation work on 82562et (thanks mischief!)
the diver used to skip auto negotiation when
auto-negotiation enable (bit 12 in command register)
was clear.

setting the bit now, which makes auto negotiation work.

we skip auto negotiation only when it was already enabled
and status regiser indicates completion (bit 9).
2013-11-01 23:39:41 +01:00
cinap_lenrek
b41bf07867 fix format compiler warning 2013-10-31 15:51:15 +01:00
cinap_lenrek
7e2e5b7a6f kernel: add support for multiboot memory map 2013-10-31 15:50:25 +01:00
BurnZeZ
1259fe5c38 libplumb: search for plumber only at /mnt/plumb, and don't try to mount $plumbsrv if the search fails 2013-10-31 04:26:01 -04:00
BurnZeZ
9a1e762dcc smtp: fix free on uninitialized pointer 2013-10-30 03:12:53 -04:00
cinap_lenrek
7211fd7ce7 fix devshr related panic caused by Mount.to being nil (thanks mischief!)
the shr mount is linked into the Mhead with m->to initially nil. only
after the the server has been attached is m->to set. just check for
it in createdir().
2013-10-30 21:24:44 +01:00
cinap_lenrek
6d4e9f11b7 init: dont rely on path containing dot 2013-10-30 00:38:12 +01:00
mischief
b35df8dd22 vt: discard unhandle OSC escapes, and use nelem instead of sizeof for title buffer 2013-10-28 02:13:35 -07:00
BurnZeZ
96c1e08f48 libjson: fix missing buffer free, slight cleanup 2013-10-28 03:17:53 -04:00
BurnZeZ
a8e8b650f3 libjson: dynamically allocate buffer 2013-10-28 23:21:07 -04:00
cinap_lenrek
82f4c1c0b4 rsa2ssh: fix the megashit 2013-10-28 09:20:07 +01:00
mischief
8c9e7ded17 auth/rsa2ssh: add SSH2 RSA output format (from plan9port) 2013-10-27 18:50:14 -07:00
mischief
420ed37c57 cmd/vt: fix xterm function keys 2013-10-27 18:40:21 -07:00
cinap_lenrek
4ea791806c libjson: fix mistake... (harmless) 2013-10-28 01:24:03 +01:00
cinap_lenrek
ffd3421cf0 libjson: fix for 21 bit runes, implement utf-16 surrogates 2013-10-28 01:19:01 +01:00
BurnZeZ
abb8ce3878 libjson: fix mistake in unicode handler (thanks cinap) 2013-10-27 19:29:02 -04:00
BurnZeZ
b1bc8b5c2b libjson: handle unicode escapes 2013-10-27 15:52:35 -04:00
BurnZeZ
2dc7e311f4 make libjson from /sys/src/cmd/btc/json.c 2013-10-27 15:44:33 -04:00
cinap_lenrek
632b7adffb vt: remove defunct hp terminal emulation 2013-10-27 19:09:13 +01:00
cinap_lenrek
b831ec005b vt: utf-8 support 2013-10-27 19:05:40 +01:00
cinap_lenrek
4a9f900726 mkfiles: do not rely on path containing the . element
when executing generated binaries and helper scripts,
always execute them as ./name instead of relying that
path contsins the dot.
2013-10-26 20:22:01 +02:00
cinap_lenrek
744dbd6bb8 merge 2013-10-26 01:18:23 +02:00
cinap_lenrek
1ca07d817b ndb/common: update ip for d.root-servers.net 2013-10-26 01:11:18 +02:00
cinap_lenrek
946026dc9a merge 2013-10-26 00:58:46 +02:00
cinap_lenrek
384adf4c89 ndb/common: dont use bell-labs dns servers for rfc1980 zones 2013-10-26 00:56:51 +02:00
stanley lieber
424e9d1636 fortunes: etymology: various 2013-10-25 14:46:35 -04:00
cinap_lenrek
8cdade591e kernel: dont spawn closeprocs from closechanq
make closeproc() spawn more procs on demand insead of
doing it from closechanq(). this avoids the palloc lock
checks and simplifies the logic.
2013-10-25 19:51:46 +02:00
cinap_lenrek
c7c7e7ee2a kernel: disable freelist page caching for executables run from uncached mount
the image cache has the property of keeping a channel
for the executable binary arround which prevents the
mountpoint from going away.

this can easily be reproduced by running:

@{rfork n; ramfs; cp /bin/echo /tmp; /tmp/echo}

observe how ramfs stays arround until the image is
reclaimed. the echo binary is also cached but is
unreachable from any namespace.

we now restrict the caching to mounts that use the client
cache (-C flag) only. this should always be the case
for /bin. places where this isnt the case might observe
a performance regression.
2013-10-25 02:42:35 +02:00
cinap_lenrek
b66c4a6232 kernel: keep one closeproc arround in case we are unable to fork a new one
closechanq() is unable to fork a new closeproc when palloc
is locked. so we spawn a closeproc early in chandevinit()
and make sure theres always one process arround to handle
the queue.
2013-10-25 01:54:09 +02:00
cinap_lenrek
3142af56d8 newuser: make lib/profile read drawterms /dev/secstore when available 2013-10-23 23:44:25 +02:00
cinap_lenrek
43eed8d824 factotum: update rsa for ssh2 (sync with sources) 2013-10-22 18:55:00 +02:00
cinap_lenrek
95c865a497 acme: attempt to fix tag lines collapsing to zero height on window move (issue 189)
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.
2013-10-20 22:38:35 +02:00
cinap_lenrek
8ceb100fa4 nusb/ether: new driver interface with kernel inspired Block buffers
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.
2013-10-18 18:41:27 +02:00
cinap_lenrek
5bfaf253d3 keyboard(6): new <compose>x sequence, 21 bit runes. 2013-10-17 19:02:50 +02:00
cinap_lenrek
46f5ac0cd4 html2ms: fix compiler warning for debug code 2013-10-17 18:50:46 +02:00
cinap_lenrek
1015ae8ea8 kbdfs: implement <compoxe>x to enter variable length unicode as suggested by erik quanstro
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
2013-10-17 18:39:44 +02:00
cinap_lenrek
c501fe6936 factotum: fix mschap password (utf-8 to utf-16) conversion
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.
2013-10-17 15:31:07 +02:00
cinap_lenrek
0b3ad2b562 libc: updated acid files for 21 bit rune change 2013-10-17 12:53:01 +02:00
cinap_lenrek
a5e9641906 change Rune from ushort to uint for to 21 bit runes (thanks mischief!)
big big change. requires rebuilding 8c first and then rebuild
everything.
2013-10-17 12:02:45 +02:00
cinap_lenrek
e30f50283c 9p(2): correct usage for srvrelease()/srvacquire()
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().
2013-10-17 08:26:05 +02:00
cinap_lenrek
52fc6d50d4 nusb/ether: fix wrong size check causing odd sized packets to be discarded (thanks mischief!)
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!
2013-10-16 16:42:40 +02:00
cinap_lenrek
965bb2d248 nusb/disk: handle blocking usb access with srv released
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.
2013-10-16 12:26:56 +02:00
cinap_lenrek
1cd4579cdc cwfs: fix putbuf(nil) in error case of cmd_check() 2013-10-16 07:21:12 +02:00
cinap_lenrek
87e187b09c fdisk: fix struct padding for amd64 (from erik quanstros fdisk-64-bit-table patch)
small little patch to help fdisk work properly on 64-bit machines.
sizeof(Table) is 4 bytes too big.
2013-10-16 04:34:58 +02:00
cinap_lenrek
0f994b1b09 aux/statusbar: emit final newline in textmode when finished
bad:
term% echo 1 1 | aux/statusbar -t x
|###########################################################| 100% term%

vs.

good:
term% echo 1 1 | aux/statusbar -t x
|###########################################################| 100%
term%
2013-10-12 03:18:44 +02:00
cinap_lenrek
0460e4be7d cwfs: add checktag() call for cache bucket in dumpblock(), fix error strings 2013-10-11 10:17:17 +02:00
cinap_lenrek
5982c50fa4 cwfs: more checking for cfsdump(), cleanup Tsuper hack in cwrecur()
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!
2013-10-11 06:01:55 +02:00
cinap_lenrek
7f57d5d9c5 unzip/zipfs: handle optional data descriptor signature in trailer 2013-10-10 07:42:13 +02:00
cinap_lenrek
3b99a60154 mothra: handle <input type=image> 2013-10-10 23:59:19 +02:00
cinap_lenrek
f72da96f28 exportfs: start filter in separate rendezvous group 2013-10-08 20:58:55 +02:00
cinap_lenrek
bc18faccde libpanel: fix memory corruption bug in plinitentry(), add pl_erealloc() 2013-10-08 19:58:55 +02:00
cinap_lenrek
1c1bef69aa libc: remove doprint 2013-10-08 19:23:53 +02:00
cinap_lenrek
50e3c936fa ip/torrent: check piece offset, vlong cast 2013-10-08 08:12:05 +02:00
cinap_lenrek
3c2b09c9dc ip/torrent: more checking, backoff from piece on hash error 2013-10-08 07:55:26 +02:00
cinap_lenrek
8046234275 kbdfs: implement keyboard mouse buttons with /dev/mousein 2013-10-07 06:49:34 +02:00
cinap_lenrek
8aeddcf5bb vncs: create dummy /dev/mousein and /dev/mousectl files
this should prevent accidential fiddeling with the kernels
mouse driver.
2013-10-07 06:37:40 +02:00
cinap_lenrek
6c6bd66ed1 devmouse: differential handling of /dev/mousein buttons 2013-10-07 06:34:24 +02:00
cinap_lenrek
ad1111cb3e exportfs: fix more filedescriptor leaks
just closing the pipe isnt enough, we have to
close all remaining file descriptors except sfd
before executing sub exportfs.
2013-10-07 23:18:37 +02:00
cinap_lenrek
6197758ec1 exportfs: fix openmount() rfork flags and filedescriptor leak, silence of on initstr error
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.
2013-10-06 04:42:46 +02:00
cinap_lenrek
cb8eac54ed 5l: apply richard millers 5l-incfloat patch (from sources)
Generate correct ARM vfp code for x++ where x is single precision float.
Example test program (link with '5l -f'): void _main() { float x; x++;}
2013-10-06 01:49:15 +02:00
cinap_lenrek
3da35f028f rio: gone windows gone wrong (fix missing recv(x->flushc, nil) when gone but request flushing) 2013-10-05 22:55:10 +02:00
cinap_lenrek
6187e219da mothra: avoid intermediate rc shell processes, use rfork(RFREND) to isolate rendezvous group 2013-10-04 21:11:56 +02:00
cinap_lenrek
0b42409cf4 page: avoid intermediate rc shell processes with using exec, move newwindow() before forking namespace
use exec to avoid intermediate rc processes.

avoid capturing old namespace in the waiting process by doing the
newwindow() call before it.
2013-10-04 21:10:33 +02:00
cinap_lenrek
d160232747 mothra: run page in own note group, close unneeded filedescriptors after forking
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.
2013-10-04 16:08:19 +02:00
cinap_lenrek
8c1d4604db page: close stdout, reopen stdout/stderr for external viewer and removed useless RFNAMEG flag
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.
2013-10-04 16:03:41 +02:00
cinap_lenrek
0be917ff4d libdraw: make newwindow() unmount the old 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.
2013-10-04 15:57:05 +02:00
cinap_lenrek
40cf5957e0 add sdp(3) from sources 2013-10-04 13:52:22 +02:00
cinap_lenrek
9bcdfac3be merge 2013-10-04 02:27:53 +02:00
cinap_lenrek
5c4756974b page: dont tell rio our pid
$wsys might be from a remote system so pid will not work.

new rio errors out on mouse/cons instead.
2013-10-04 02:26:40 +02:00
cinap_lenrek
fe03ec0e21 rio: gone windows, window resize, rectonscreen, goodrect
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.
2013-10-04 02:17:53 +02:00
ppatience0
7c28d33d4b io.h: change indentation from spaces to tabs 2013-10-03 17:15:11 -04:00
ppatience0
9eab198d05 ether83815: fix `auto neg timed out' error with sis 900 rev 635.
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.
2013-10-03 17:13:08 -04:00
cinap_lenrek
60e3d2782b merge 2013-10-03 17:31:55 +02:00
cinap_lenrek
7ad47f1083 tarfs: make file name safe, canonical and free of . and .. (from sources) 2013-10-03 17:30:03 +02:00
cinap_lenrek
f163d0014a libmach: fix wrong formating for arm LDRH/STRH/LDRSB/LDRSH (MOVHU/MOVBU) instructions 2013-10-02 20:52:13 +02:00
ppatience0
225cc4af5c nusb/ether: add rtl8150 driver, remove unused includes 2013-10-02 02:25:43 -04:00
stanley lieber
805fe4660e fortunes: I think we're done here. 2013-10-02 18:02:49 -04:00
cinap_lenrek
6c758d94bf vt: dont pollute the outer environment (thanks mischief!) 2013-10-02 02:25:50 +02:00
cinap_lenrek
e55d105159 bootrc: +x 2013-10-02 02:01:43 +02:00
cinap_lenrek
505bc9b491 lib9p/hjfs: use x != ~0 instead (type)~x conditionals to work arround arm compiler issue 2013-10-02 01:36:05 +02:00
cinap_lenrek
da2d0ee780 audiohda: allow manual pin routing, more verbose audiostat, initial mute of al widgets
the automatic routing from jack to dac/adc sometimes gets us
a path thats not audible. manually specifying a route path
gets us arround these. the syntax is just a comma separated
list of node ids in the "pin" and "inpin" audioctl commands
instead of a single pin node id.

to find alternative paths, audiostat now lists all the widgets;
not just the pins; and ther input connections.

initially mute all pins and amps of all function groups.
connectpath() and disconnectpath() will mute and unmute
the widgets as required later.
2013-09-29 15:44:26 +02:00
stanley lieber
82362507f7 pkg/list: handle more directory listings 2013-09-28 01:57:31 -04:00
cinap_lenrek
c9bbe34bf6 pc kernel: make syscall() return thru forkret() to handle exceptions
forkret() labels the instructions that can raise exceptions
so they can be handled in trap(). this can happen when
segment descriptors get invalidated.
2013-09-27 19:24:45 +02:00
stanley lieber
64f44612f2 fortunes: I gave up, back to 9front. -- Aram 2013-09-26 12:22:09 -04:00
cinap_lenrek
d9ca084282 tcs: eleminate ambigous html entity runes. 2013-09-26 15:16:12 +02:00
cinap_lenrek
81f726b2b4 audioac97: remove i/o bar magic, fix ac97mixreset busywait-forever timeout
the standard is i/o bar 0 is the mixer and bar 1 is status/control.
the magic with the bar sizes made it fail in qemu. so removing it
for now as all devices seen so far comply to the standard.

if we ever see a sis7012 where this might be swaped uncomment the i=0;

the busywait timeout is too long in ac97mixreset() because rd/wr
have a timeout on ther own. just remove the busy looping and do
a one second delay after mixer reset. (tested with t23)
2013-09-26 23:34:06 +02:00
cinap_lenrek
7265a09524 merge 2013-09-25 20:27:34 +02:00