aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
AgeCommit message (Collapse)AuthorFilesLines
2020-05-17mk: replace overlapping strcpy with memmoveRuss Cox1-1/+2
Found by ASAN.
2020-05-07all: fix #includes for AIX, add a few AIX "implementation" filesBen Huntsman5-0/+17
2020-05-07mk: support Big Archive Format under AIXBen Huntsman1-0/+4
2020-05-07all: update build scripts to fix AIX XL/C compatibilityBen Huntsman1-1/+1
2020-05-05rc: clean up parser levels, disallow free carats on listsRuss Cox4-31/+37
2020-05-04rc: allow unquoted = in command argumentsRuss Cox2-10/+27
dd fans rejoice! Also helps with commands like go test -run=x.
2020-05-04rc: move free carat handling into parserRuss Cox4-74/+103
This fixes at least one shell script (printfont) that expected 'x'`{y}'z' to mean 'x'^`{y}^'z' as it now does. Before it meant: 'x'^`{y} 'z' One surprise is that adjacent lists get a free carat: (x y z)(1 2 3) is (x1 y2 z3) This doesn't affect any rc script in Plan 9 or plan9port.
2020-05-04rc: move newline handling into parserRuss Cox6-24/+67
2020-05-04rc: add recursive descent parserRuss Cox13-9/+730
The old yacc-based parser is available with the -Y flag, which will probably be removed at some point. The new -D flag dumps a parse tree of the input, without executing it. This allows comparing the output of rc -D and rc -DY on different scripts to see that the two parsers behave the same. The rc paper ends by saying: It is remarkable that in the four most recent editions of the UNIX system programmer’s manual the Bourne shell grammar described in the manual page does not admit the command who|wc. This is surely an oversight, but it suggests something darker: nobody really knows what the Bourne shell’s grammar is. Even examination of the source code is little help. The parser is implemented by recursive descent, but the routines corresponding to the syntactic categories all have a flag argument that subtly changes their operation depending on the context. Rc’s parser is implemented using yacc, so I can say precisely what the grammar is. The new recursive descent parser here has no such flags. It is a straightforward translation of the yacc. The new parser will make it easier to handle free carats in more generality as well as potentially allow the use of unquoted = as a word character. Going through this exercise has highlighted a few dark corners here as well. For example, I was surprised to find that x >f | y >f x | y are different commands (the latter redirects y's output). It is similarly surprising that a=b x | y sets a during the execution of y. It is also a bit counter-intuitive x | y | z x | if(c) y | z are not both 3-phase pipelines. These are certainly not things we should change, but they are not entirely obvious from the man page description, undercutting the quoted claim a bit. On the other hand, who | wc is clearly accepted by the grammar in the manual page, and the new parser still handles that test case.
2020-03-30acme: scale window bodies on resize, not including tag spaceRuss Cox1-3/+5
This avoids reopening collapsed windows after a large vertical resize.
2020-02-03devdraw: fix `cmd-r` to toggle retina vs. non-retina mode on macOS (#361)Martin Palma1-1/+1
and not unexpectedly quitting an application. Fixes #360
2020-01-24acme: report close failure in Put, this time for sureRuss Cox1-5/+5
Missed in 0b349f6f that Bterm is not closing fd.
2020-01-16devdraw: abort alt sequence on window change on macOSRuss Cox1-0/+4
Fixes #3.
2020-01-16malloc: remove lockingDan Cross1-10/+0
The issue manifests in fork: POSIX fork mandates that a fork'd process is created with a single thread. If a multithreaded program forks, and some thread was in malloc() when the fork() happened, then in the child the lock will be held but there will be no thread to release it. We assume the system malloc() must already know how to deal with this and is thread-safe, but it won't know about our custom spinlock. Judging that this is no longer necessary (the lock code was added 15 years ago) we remove it. Signed-off-by: Dan Cross <cross@gajendra.net>
2020-01-15devdraw: avoid deadlock in x11 resizeRuss Cox2-0/+3
Fixes #347.
2020-01-15cmd/rio: xshove: set geometry by window idNicola Girardi1-1/+6
2020-01-15devdraw: set windowrect correctly on x11 if window gets unexpected sizeRuss Cox1-2/+2
Fixes #54.
2020-01-15devdraw: actually send resize event on resizeRuss Cox1-0/+7
Fixes #340. Fixes #343.
2020-01-15factotum: update for new nbrecvul return valueRuss Cox1-2/+30
Unclear whether the old semantics were the right ones, but at least this preserves what they've been for the past however many years.
2020-01-15compress: import Plan9 compresssean2-0/+1289
Add #define USED(x)... boilerplate compress: import Plan9 manpage.
2020-01-15winwatch: Plan 9-ify.Dan Cross1-426/+412
This is new code, and custom to plan9port. Make it conform more closely to plan9 style. Signed-off-by: Dan Cross <cross@gajendra.net>
2020-01-15clock: Remove unused static variable in clock.cDan Cross1-2/+0
`struct Tm tms` was set but never referenced; noticed in a compiler warning. Remove it. Signed-off-by: Dan Cross <cross@gajendra.net>
2020-01-15winwatch: port based Plan 9 winwatchmarkvanatten2-1/+539
Port of Plan 9's winwatch(1).
2020-01-159pfuse: update errortabOleg Nemanov1-0/+2
2020-01-14venti/buildindex: fix hang on large indexesRuss Cox1-1/+1
Fixes #93.
2020-01-14devdraw: notify window resize promptly on x11Russ Cox5-13/+28
Fixes #339.
2020-01-14acme: save/restore multiline tags in Dump/LoadRuss Cox1-4/+16
The dump substitutes each \n in a multiline tag with a 0xff byte. Since it is not valid UTF it cannot occur in an ordinary dump file. Old acmes will just read it in as an error rune. Fixes #135. Fixes #153.
2020-01-14tar: remove /bin/ when invoking compressorsphonologus1-6/+1
2020-01-14devdraw: do not force-hide menu and dock during full screen on macRuss Cox1-3/+15
This hides the menu on dock on all screens which is more than we want. The code was added to fix a problem with Catalina that I can no longer reproduce, so I guess it works now. Fixes #336.
2020-01-13devdraw: hide dock in full screen modeRuss Cox1-0/+13
Unfortunately this hides the dock even if it is on a different screen. We need to figure out how to tell. But this is more usable than not. Probably.
2020-01-13devdraw: correctly hide Mac menu bar (#335)Xiao-Yong1-9/+9
`window:willUseFullScreenPresentationOptions:` is an instance method of the protocol `NSWindowDelegate`.
2020-01-13acme: fix buffer overflow introduced in parsetag refactorRuss Cox3-8/+8
2020-01-13acme: fix movetodel for spaces in file namesRuss Cox1-11/+8
2020-01-13acme: allow spaces in window namesRuss Cox2-5/+20
There are many things we could do to make this work. an environment variable to control the character. Another option would be to use U+00A0 (non-breaking space), which renders the same as space. This change avoids changing the separator character and instead assumes that if the left side of the tag already ends in " Del Snarf |" then what comes before that is the file name. Acme already aggressively preserves the "Del Snarf |", so this should work decently well as a stop-gap. We can always try something else later. Fixes #26. Fixes #104. Fixes #329.
2020-01-13mk: fix hash function (#315)Neven Sajko1-7/+3
Avoid signed integer overflow using ulong instead of long h.
2020-01-13acme: one more place to use parsetagRuss Cox1-5/+1
2020-01-13acme: factor out tag parsing codeRuss Cox3-21/+28
2020-01-13mk: treat X= as empty list in rc shellRuss Cox1-6/+12
This brings mk's behavior when using rc in line with Plan 9's. The existing code is for Unix environment data structures but also was assuming Unix shell semantics where empty and missing variables are mostly equivalent. The Plan 9 code (/sys/src/cmd/mk/plan9.c in the distribution) explicitly removes /env/name (creating an empty list) when the value is missing or an empty string. Fixes #255.
2020-01-13acme: fix crash in X |cat with multiple windowsRuss Cox1-5/+24
Fixes #9. Fixes #219. Fixes #222. Fixes #330.
2020-01-13vac, unvac: allow 128MB cache size, up from 4MBRuss Cox2-2/+2
When a directory has lots of children, vac crashes because it runs out of cache. Fixes #266.
2020-01-139pfuse: do not fswalk("..")Russ Cox1-12/+5
f is open, so walk will fail. The comments say we only need one directory anyway. Fixes #277.
2020-01-13cmd/9pfuse: ignore FMODE_EXEC open flagNicola Girardi1-2/+11
Improved error message in case of unexpected open flags. The message unexpected open flags requested=0100040 unhandled=040 prompted me to clear the FMODE_EXEC flag, although I wonder if I shouldn't have set OEXEC (0x3) instead.
2020-01-13clock: import from plan 9Russ Cox1-0/+104
Fixes #250.
2020-01-13devdraw: AUTOFRAMEWORK CoreFoundation on macOSRuss Cox1-0/+1
Fixes #273.
2020-01-13devdraw: x11 working againRuss Cox14-2340/+1844
Need to think a bit more about locking, but overall it's a working devdraw. Multiclient mode may not be working but nothing is using it yet.
2020-01-13devdraw: multiclient modeRuss Cox3-42/+115
2020-01-13cmapcube: don't crash on initdraw failureRuss Cox1-1/+2
2020-01-13devdraw: more cleanup, clearer lockingRuss Cox8-313/+329
2020-01-13devdraw: refactor, clean up mac screenRuss Cox7-505/+492
Also turn mac-srv.c into a generic srv.c, so we can remove the duplication with x11-srv.c.
2020-01-13devdraw: move per-window globals in mac-screen.m into ClientRuss Cox3-62/+81