diff ec73849b6936d839410ccb239d14b2f7c7ca3d6f uncommitted --- a/lib/namespace +++ b/lib/namespace @@ -43,3 +43,10 @@ . /lib/namespace.local . /lib/namespace.$sysname . /cfg/$sysname/namespace + +bind -c /usr/glenda /n/fossil/usr/glenda +bind -c /n/fossil/usr/ /usr/ +bind -c /n/other/usr/$user/tmp /usr/$user/tmp +bind -c /usr/$user/tmp /tmp + +cd /usr/$user --- a/rc/bin/fshalt +++ b/rc/bin/fshalt @@ -24,6 +24,10 @@ bind -c '#s' /srv bind '#p' /proc +# start venti flushing +venti/sync -h localhost >[2]/dev/null & +venti/sync >[2]/dev/null & + unmount /mnt/consoles >[2]/dev/null kill consolefs | rc # don't compete with /mnt/consoles sleep 1 @@ -30,12 +34,31 @@ c=`{ls /srv/cwfs*cmd >[2]/dev/null} h=`{ls /srv/hjfs*cmd >[2]/dev/null} -e=`{ls /srv/ext4*cmd >[2]/dev/null} -s=`{awk '/^sd./ {print substr($1,3,1)}' '#S/sdctl' >[2]/dev/null} +f=`{ls /srv/fscons*>[2]/dev/null} # for scram, don't scram other systems bind -b '#P' /dev >[2]/dev/null +if(! ~ $reboot yes){ + if (test -e '#P'/apm) + scram=yes + if (test -e '#P'/acpitbls -a -e '#P'/iow) + scram=yes +} +echo -n syncing... +for(i in $f) @ { + echo -n $i... + echo fsys all sync >>$i +} + +# flush the last bit of possible fossil traffic +if (ls /srv | grep -s fossil) { + echo -n venti... + venti/sync -h localhost >[2]/dev/null & + venti/sync >[2]/dev/null & + sleep 5 +} + # halting (binaries we run can't be on the fs we're halting) ramfs builtin cd /tmp @@ -73,6 +96,12 @@ while(test -e $i) sleep 1 } + for(i in $f) @ { + echo -n $i... + echo fsys all halt >>$i + sleep 2 + } + echo echo done halting --- a/rc/bin/service/telcodata +++ b/rc/bin/service/telcodata @@ -1,3 +1,15 @@ #!/bin/rc -echo This is the plan 9 incoming fax line. -echo Please do not make data calls to us. + +fn sigint { +} + +fn sighup { + echo kill > /proc/$pid/note +} + +while () { + echo -n user: + user=`{read -n 1} + if (~ $#user 1) + auth/login $user +} --- a/rc/bin/termrc +++ b/rc/bin/termrc @@ -93,9 +93,4 @@ if(test -f /dev/apm) aux/apm -if(~ $terminal *reform*){ - reform/pm - reform/audio -} - -dontkill '^(ipconfig|factotum|mntgen|venti|hjfs|kfs|cfs|cwfs.*|9660srv|dossrv|paqfs|cs|dns|listen|reboot|usbd|kb|disk|ether|wpa)$' +dontkill '^(ipconfig|factotum|mntgen|venti|hjfs|kfs|cfs|cwfs.*|9660srv|dossrv|paqfs|cs|dns|listen|reboot|usbd|kb|disk|ether|wpa|fossil)$' --- a/sys/man/1/git +++ b/sys/man/1/git @@ -230,7 +230,7 @@ .B -b option will cause the repository to be initialized as a bare repository. Passing the -. -u +.B -u .I upstream option will cause the upstream to be configured to .I upstream. --- a/sys/man/6/keyboard +++ b/sys/man/6/keyboard @@ -25,6 +25,15 @@ .B Caps .B Lock acts as an additional control key. +To make it work like an actual +.B Caps +.B Lock +key ou can get it with: +.PP +.RS +.L +echo none 58 63588 >/dev/kbmap +.RE .PP The delete character .RB ( 0x7F ) --- a/sys/src/9/boot/nusbrc +++ b/sys/src/9/boot/nusbrc @@ -5,7 +5,7 @@ mkdir -p -m 700 '#σc/usb' mkdir -p -m 700 '#σc/usbnet' -if(! nusb/usbd) +if(! nusb/usbd -d) exit @{ @@ -71,7 +71,7 @@ devs='#σc/sdU'^($1 $5) rm -rf '#σc/usb/'^$1.* '#σc/usb/'^$5.hid '#σc/usbnet/'^$1.* $devs $devs.* } - rc < '#σ/usb/usbevent' & + rc -x < '#σ/usb/usbevent' & } # usbd removes this file once all devices have been enumerated --- a/sys/src/9/ip/devip.c +++ b/sys/src/9/ip/devip.c @@ -816,7 +816,7 @@ } /* - * find a unused loacal port for a protocol. + * find a unused local port for a protocol. * * p needs to be locked */ --- a/sys/src/cmd/aux/getflags.c +++ b/sys/src/cmd/aux/getflags.c @@ -5,7 +5,7 @@ void usage(void) { - print("status=usage\n"); + fprint(2, "status=usage\n"); exits(0); } --- a/sys/src/cmd/aux/vga/igfx.c +++ b/sys/src/cmd/aux/vga/igfx.c @@ -837,7 +837,7 @@ dpll = igfx->pipe[x].dpll; /* enable pll */ dpll->ctrl.v = 1<<31; - /* LCPLL 2700 (non scc) reference */ + /* LCPLL 2700 (non ssc) reference */ dpll->ctrl.v |= 3<<28; genwrpll(freq, &n2, &p1, &r2); --- a/sys/src/cmd/cmp.c +++ b/sys/src/cmd/cmp.c @@ -127,6 +127,6 @@ static void usage(void) { - print("usage: cmp [-lLs] file1 file2 [offset1 [offset2] ]\n"); + fprint(2, "usage: cmp [-lLs] file1 file2 [offset1 [offset2] ]\n"); exits("usage"); }
Fri Apr 19 03:16:04 EDT 2024
Sawubona, bengifuna ukwazi intengo yakho.
Thu Apr 18 10:19:26 EDT 2024
ramfs -a -m /tmp -S ramsrv mkdir '#σc'/ram echo 3 > '#σc'/ram/ram <>[3]/srv/ramsrv mkdir -p /tmp/^(bin dev fd env srv shr proc lib sys/lib net) dircp /bin /tmp/bin dircp /lib /tmp/lib dircp /sys/lib /tmp/sys/lib mount -a /srv/cs /net mount -a /srv/dns /net bind -c /tmp / bind '#c' /dev bind '#d' /fd bind -c '#e' /env bind '#p' /proc bind -c '#s' /srv bind -q '#σ' /shr bind -a '#¤' /dev bind -qa '#¶' /dev bind -a '#l' /net bind -a '#I' /net bind -a '#a' /net
Thu Apr 18 10:06:56 EDT 2024
ramfs mkdir -p /tmp/^(bin dev fd env srv shr proc lib sys/lib net) dircp /bin /tmp/bin dircp /lib /tmp/lib dircp /sys/lib /tmp/sys/lib bind '#c' /dev bind '#d' /fd bind -c '#e' /env bind '#p' /proc bind -c '#s' /srv bind -q '#σ' /shr bind -a '#¤' /dev bind -qa '#¶' /dev bind -a '#l' /net bind -a '#I' /net bind -a '#a' /net mount -a /srv/cs /net mount -a /srv/dns /net bind -c /tmp /
Thu Apr 18 10:06:38 EDT 2024
src(0xffffffff8011767c); // dumpstack+0x10 // data at 0xffffffff8208f460? 80171012 src(0xffffffff80171012); // panic+0xeb // data at 0xffffffff8208f5b0? 8021991e src(0xffffffff8021991e); // cclone+0x42 // data at 0xffffffff8208f5f8? 8021a505 src(0xffffffff8021a505); // createdir+0x73 // data at 0xffffffff8208f628? 801eb6d6 src(0xffffffff801eb6d6); // shrcreate+0x34b // data at 0xffffffff8208f698? 8021b290 src(0xffffffff8021b290); // namec+0x970 // data at 0xffffffff8208f768?
Thu Apr 18 06:38:31 EDT 2024
Aloha, makemake wau eʻike i kāu kumukūʻai.
Thu Apr 18 05:30:14 EDT 2024
Hæ, ég vildi vita verð þitt.
Wed Apr 17 23:47:13 EDT 2024
xinit: XFree86_VT property unexpectedly has 0 items instead of 1 xinit: Unable to run program "xterm": No such file or directory Specify a program on the command line or make sure that /opt/local/bin is in your path. xinit: connection to X server lost waiting for X server to shut down
Wed Apr 17 15:44:46 EDT 2024
From 7f0f4210b60b912032737146fb036cefd71d670b Mon Sep 17 00:00:00 2001 From: Amavect <amavect@gmail.com> Date: Fri, 12 Apr 2024 23:38:40 -0500 Subject: [PATCH] fix backspace deleting login prompt devkbd directly echos to the terminal, but it doesn't know the line buffer length. Instead, let devcons control the echoing. Move kbd functions from devcons into devkbd. Remove kbdputc from fns.h Create consreadkbdline to reduce indentation. Remove the now unneeded precondition in the echo function. Backspace now deletes a UTF-8 codepoint during the login prompt. Visual mismatch may still happen if a codepoint is not a glyph. It's good enough for now. --- kern/devcons.c | 139 ++++++++++++++++++------------------------------- kern/devkbd.c | 58 ++++++++++++++++++++- kern/fns.h | 1 - 3 files changed, 108 insertions(+), 90 deletions(-) diff --git a/kern/devcons.c b/kern/devcons.c index 8c94993..aa4438d 100644 --- a/kern/devcons.c +++ b/kern/devcons.c @@ -4,8 +4,6 @@ #include "fns.h" #include "error.h" -#include "keyboard.h" - #include <authsrv.h> #undef write @@ -267,68 +265,16 @@ echoscreen(char *buf, int n) static void echo(char *buf, int n) { - if(kbd.raw) - return; if(screenputs != 0) echoscreen(buf, n); else write(1, buf, n); } -static int -_kbdputc(Queue *q, int c) -{ - char buf[UTFmax]; - Rune r = c; - int n; - - if((n = runetochar(buf, &r)) > 0){ - echo(buf, n); - qproduce(q, buf, n); - } - return 0; -} - -/* _kbdputc, but with compose translation */ -int -kbdputc(Queue *q, int c) +static void +echochar(char c) { - static int collecting, nk; - static Rune kc[5]; - int i; - - switch(c){ - case 0: - case Kcaps: - case Knum: - case Kshift: - case Kaltgr: - case Kmod4: - case Kctl: - /* ignore modifiers; see nextrune() of kbdfs */ - return 0; - - case Kalt: - collecting = 1; - nk = 0; - return 0; - } - - if(!collecting) - return _kbdputc(q, c); - - kc[nk++] = c; - c = latin1(kc, nk); - if(c < -1) /* need more keystrokes */ - return 0; - if(c != -1) /* valid sequence */ - _kbdputc(q, c); - else - for(i=0; i<nk; i++) - _kbdputc(q, kc[i]); - nk = 0; - collecting = 0; - return 0; + echo(&c, 1); } @@ -517,13 +463,58 @@ qreadcons(Queue *q, char *buf, int n) return qread(q, buf, n); } +static long +consreadkbdline(void *buf, long n) +{ + char ch; + int eol; + + while(!qcanread(lineq)){ + eol = 1; + if(qreadcons(kbdq, &ch, 1) == 1){ + eol = 0; + kbd.line[kbd.x] = ch; + switch(ch){ + case '\b': + if(kbd.x > 0){ + kbd.x--; + /* attempt deleting a codepoint */ + while(kbd.x > 0 && kbd.line[kbd.x] < (char)-0x40) + kbd.x--; + /* codepoint == glyph? One can hope... */ + echochar(ch); + } + break; + case 0x15: + kbd.x = 0; + break; + case '\n': + kbd.x++; + echochar(ch); + /* fallthrough */ + case 0x04: + eol = 1; + break; + default: + kbd.x++; + echochar(ch); + } + } + if(kbd.x == sizeof(kbd.line) || eol){ + qwrite(lineq, kbd.line, kbd.x); + kbd.x = 0; + } + } + return qread(lineq, buf, n); +} + static long consread(Chan *c, void *buf, long n, vlong off) { char *b; char tmp[128]; /* must be >= 6*NUMSIZE */ char *cbuf = buf; - int ch, i, eol; + int i; vlong offset = off; if(n <= 0) @@ -550,36 +541,8 @@ consread(Chan *c, void *buf, long n, vlong off) } while (n>0 && qcanread(kbdq)); n = cbuf - (char*)buf; } - } else { - while(!qcanread(lineq)) { - eol = 1; - if(qreadcons(kbdq, &kbd.line[kbd.x], 1) == 1){ - eol = 0; - ch = kbd.line[kbd.x]; - switch(ch){ - case '\b': - if(kbd.x) - kbd.x--; - break; - case 0x15: - kbd.x = 0; - break; - case '\n': - kbd.x++; - case 0x04: - eol = 1; - break; - default: - kbd.x++; - } - } - if(kbd.x == sizeof(kbd.line) || eol){ - qwrite(lineq, kbd.line, kbd.x); - kbd.x = 0; - } - } - n = qread(lineq, buf, n); - } + } else + n = consreadkbdline(buf, n); qunlock(&kbd.lk); poperror(); return n; diff --git a/kern/devkbd.c b/kern/devkbd.c index e0921e2..6fe3143 100644 --- a/kern/devkbd.c +++ b/kern/devkbd.c @@ -4,9 +4,65 @@ #include "fns.h" #include "error.h" +#include "keyboard.h" + static Queue* keyq; static int kbdinuse; +static int +_kbdputc(Queue *q, int c) +{ + char buf[UTFmax]; + Rune r = c; + int n; + + if((n = runetochar(buf, &r)) > 0) + qproduce(q, buf, n); + return 0; +} + +/* _kbdputc, but with compose translation */ +static int +kbdputc(Queue *q, int c) +{ + static int collecting, nk; + static Rune kc[5]; + int i; + + switch(c){ + case 0: + case Kcaps: + case Knum: + case Kshift: + case Kaltgr: + case Kmod4: + case Kctl: + /* ignore modifiers; see nextrune() of kbdfs */ + return 0; + + case Kalt: + collecting = 1; + nk = 0; + return 0; + } + + if(!collecting) + return _kbdputc(q, c); + + kc[nk++] = c; + c = latin1(kc, nk); + if(c < -1) /* need more keystrokes */ + return 0; + if(c != -1) /* valid sequence */ + _kbdputc(q, c); + else + for(i=0; i<nk; i++) + _kbdputc(q, kc[i]); + nk = 0; + collecting = 0; + return 0; +} + void kbdkey(Rune r, int down) { @@ -17,7 +73,7 @@ kbdkey(Rune r, int down) if(!kbdinuse || keyq == nil){ if(down) - kbdputc(kbdq, r); /* /dev/cons */ + kbdputc(kbdq, r); return; } diff --git a/kern/fns.h b/kern/fns.h index f267781..e1fa041 100644 --- a/kern/fns.h +++ b/kern/fns.h @@ -78,7 +78,6 @@ int iprint(char*, ...); void isdir(Chan*); int iseve(void); #define islo() (0) -int kbdputc(Queue*, int); void kbdkey(Rune, int); int kproc(char*, void(*)(void*), void*); void ksetenv(char*, char*, int); -- 2.44.0
Wed Apr 17 11:33:53 EDT 2024
oi, só passando para dar um oi mesmo...
Wed Apr 17 11:08:40 EDT 2024
Hello it's alex again. We have encountered an issue with receiving replies and we were unable to get your last message. I use special components that can deliver your business more customers, bookings, sign ups and more hands free! Reply with the word "Yes" and I will send more information! I apologize for the second message. Thanks!