Commit Graph

2940 Commits

Author SHA1 Message Date
Scott Schwartz
37cd522b0a cmd/devdraw: handle X11 selections better
x11-screen.c accepts selection targets with the MIME type
"text/plain;charset-UTF8", but it should do so case insensitively. The
current code draws an error when working with xfce4-terminal 1.0.4,
which sends lower case.  To reproduce, run acme, snarf some text, then
paste in the terminal.  acme will report:
acme: cannot handle selection request for 'text/plain;charset=utf-8' (590)
2025-11-04 07:10:14 -05:00
Dan Cross
499efb270d nroff: bad symbold definition on command line.
`-DTDEVNAME=...` should be `-DNDEVNAME=...`.  We've been
defaulting for "37", probably forever.

Signed-off-by: Dan Cross <cross@gajendra.net>
2025-10-10 14:34:02 -04:00
Russ Cox
19263a1071 devdraw: work around XWayland pointer warping 2025-10-09 19:37:41 -04:00
Arusekk
00754b35a2 devdraw: fix dangling else
Because of a dangling else, after adding a name to an image with 'N',
it was immediately deleted, resulting in Enoname in response to 'n'.

This went mostly unnoticed, since plan9port itself does not use named
images, but it can break external applications like truedraw[1].

[1]: https://git.sr.ht/~arusekk/truedraw

Fixes: c66b52501b ("new draw server")
2025-10-09 09:29:12 -04:00
lufia
8ff39da062 src/cmd/rc: import rc syntax `delim{cmd} for splitting commands from 9atom
Co-authored-by: <ori@eigenstate.org>
2025-07-27 09:55:45 -04:00
Dan Cross
b2fc88d60a SunOS: silence some warnings
Give `-Wformat=0` on illumos/Solaris so that the build does not
complain about `execlp` not having a sentinel (it's nil).  Also
fix an integer size issue when casting to a void pointer.
2025-07-25 18:46:52 +00:00
Dan Cross
9d2e0d31f7 DragonFly: fix build
Fix the build for DragonFlyBSD.
2025-07-25 19:02:59 +00:00
Dan Cross
0bc66bfb3d libthread: remove check for LinuxThreads
libthread had code in `_pthreadinit` to test for LinuxThreads,
and error if it was in use.  This hasn't been relevant since
Linux 2.6, and I can't imagine there are many people trying to
build (recent) plan9port on systems that old.

Unfortunately, this code violated aliasing rules, and compilers
were complaining about it.  But, since it likely hasn't had much
relevance in 20ish years, we can probably just remove it.
2025-07-25 13:06:53 -04:00
Dan Cross
156e745be9 all: remove need for -fcommon
Use `extern` where appropriate so that we can remove `-fcommon`
on macOS and others.  On macOS, `-fcommon` generates a number of
linker warnings.

I've tested building on macOS, Linux, FreeBSD, NetBSD, OpenBSD
and illumos.  I am not in a position to test on AIX or other
more esoteric platforms, however.
2025-07-25 12:25:11 -04:00
Dan Cross
1e6e30e91e rio: proper prototypes in fns.h
Use proper function prototypes in `fns.h`, that include argument
type information.
2025-07-25 11:58:36 -04:00
Dan Cross
655f7c3184 all: clean up misleading indentation warnings
Misleading indentation warnings are actually useful, as they
will occasionally reveal actual bugs (cf the apple `goto fail`
security bug from a few years ago).  Newer versions of clang
(at least) are more aggressive about warnings in this regard,
which has exposed a few warnings that are annoying.  However,
they are easy to address.
2025-07-25 11:20:03 -04:00
Dan Cross
5a9ced10ee sort: rename kcmp to keycmp
Fixes: #648
Fixes: #655
2025-07-24 16:35:15 +00:00
Dan Cross
4089e29e89 warnings: fix warnings on newer compilers
Mostly turning the crank on fixing simple warnings: arrays, for
instance, can never be nil.  A couple of pointers should have been
initialized to `nil` before being tested.

Some logic in `troff` was simplified: basically, an `if` statement had
a condition that must have always been true if that section of code
were being executed at all.
2025-07-24 15:45:31 +00:00
Dan Cross
564d45b5a5 config: add $egrep
Introduce a new variable set in $PLAN9/config:
$egrep, which is conditionally set to either
`egrep` or `grep -E`, based on platform, and use
this when we want to invoke `egrep`.

This works around the endless warnings from GNU
grep stating that `egrep` is deprecated in favor
of `grep -E`, when run on e.g. Linux.
2025-07-23 19:44:54 +00:00
Russ Cox
df9b195ebf libflate: fiz inflatezlibblock
This has obviously never been run.
2025-05-08 13:29:20 -04:00
Roger Peppe
9da5b44513 cmd/devdraw: avoid use of X button state field
This bug is an intermittent annoyance and does not seem likely to be
fixed soon. It means that every so often my acme becomes unusable
because it behaves as if a mouse button is permanently set.

Avoid that issue by keeping track of mouse button state directly.

While we're about it, fix another annoying issue: under Linux the
FocusOut event reset the kstate field but not the kbuttons field,
meaning that the buttons state could inappropriately persist. This
happened occasionally by accident, but was easy to reproduce: with the
mouse button held down, drag outside the window and click Alt-Tab to
switch away from the window. We see a KeyDown event followed by FocusOut
but no KeyUp event.

Change-Id: I3708316478c80c41806d7157ae9929c6cd84b662
2025-03-29 11:23:26 -04:00
Russ Cox
a2567fcac9 devdraw: handle shift of real mouse buttons correctly 2024-06-17 09:28:40 -04:00
Russ Cox
e9cbe46fe6 lib9: skip buggy S_ISCHR check in disksize on OpenBSD
The portable code is already checking S_ISCHR anyway.
2024-06-15 22:15:06 -04:00
Russ Cox
211de84701 acme: remove debug print 2024-06-15 22:10:55 -04:00
Russ Cox
0c79c32675 acme: shift button 3 for reverse search
An experiment. Let's see if it's any good.
Also document the Mac conventions in devdraw(3).
2024-06-15 10:57:45 -04:00
Russ Cox
60ca2be037 all: quiet macOS build again 2024-06-15 10:57:45 -04:00
Russ Cox
b1b88c75fd tpic: clean up 2024-04-06 11:13:59 -04:00
Russ Cox
d5b2552b95 acme: clean up environment after exec
Make up for the lack of a real rfork(RFENVG).
2024-04-06 11:13:24 -04:00
fgergo
897625ff9b mntgen: import mntgen(4) from Plan 9
new file:   man/man4/mntgen.4
new file:   src/cmd/mntgen.c
2024-01-09 15:25:19 -05:00
fgergo
f8681acb37 ramfs: update to work
ramfs: update to work

erealloc(p, 0) is handled correctly
removed fprint(2, ...
removed assert()
2023-12-30 08:58:44 -05:00
Russ Cox
984c2824e3 page: fix viewing of graphics
940f1fd6af broke page on non-PDF files.
2023-09-13 10:48:18 -04:00
matheuristic
dfbafb68e2 acme: have Dump save both low and high DPI fontnames
Instead of only saving a window's currently displayed font's name to the
dump file, have Acme's Dump command save that window's combined low DPI
and high DPI font names when both are available.

See 9fans/plan9port#630
2023-09-05 12:55:40 -04:00
japanoise
65c090346a libframe: Match the color of tick
Previously the vertical bar in tick was always black; fine if you
use the standard black-on-white for everything, but any attempt to
add a dark mode ran into trouble with the tick being half hard-coded
black, half the new text color.
2023-08-23 14:47:08 -04:00
matheuristic
a36e66f0d2 libdraw: fix subfont scaling
A subfont with n chars has n+1 Fontchars, so scalesubfont() needs to
scale all n+1 info entries.
2023-08-21 11:38:17 -04:00
Igor Burago
cc4571fec6 libregexp: allow up to 127 captured subexpressions in one regexp
128 counting with the entire expression match ($0).
2023-03-31 11:50:53 -04:00
Igor Burago
727ce0e123 plumber: increase NMATCHSUBEXP up to 100
Thus up to two-digit subexpression match variables are supported
($1 through $99) in addition to the entire expression match ($0).
2023-03-31 08:17:47 -04:00
Igor Burago
a4d35dc3fd plumber: use strtoul to parse subexpression match variable substitutions 2023-03-30 10:44:30 -04:00
Igor Burago
0790296f73 plumber: increase NMATCHSUBEXP up to libregexp's NSUBEXP 2023-03-30 10:44:30 -04:00
Igor Burago
6c0efecd13 plumber: allow multi-digit subexpression match variable substitutions 2023-03-30 10:44:30 -04:00
Igor Burago
760cf86705 plumber: parametrize the number of stored match pattern subexpressions 2023-03-30 10:44:30 -04:00
zakkor
0392f49cfc devdraw: Fix mouse wheel scrolling in 1-tick increments on macOS 2023-03-29 13:13:42 -04:00
Russ Cox
43f5af9c8d acme: allow larger paste amounts 2023-01-06 12:04:17 -05:00
Russ Cox
940f1fd6af page: scale ppi on high-res displays
Also fix wording of -w warning.
2023-01-06 12:04:17 -05:00
Tom Schwindl
ffbdd1aa20 rio: check the return value of malloc(3) 2022-09-12 10:35:36 -04:00
MvA
846f724983 fix double free bug, simplify error handling, reduce X11 calls 2022-09-11 09:55:17 -04:00
MvA
3e764832bc fix double free bug, simplify error handling, reduce X11 calls, improve style 2022-09-11 09:55:17 -04:00
Derek Stevens
52be2761ae fix indentation 2022-09-07 12:24:01 -04:00
Derek Stevens
0a846f5f0f acme/wind.c: redraw window body with bg color if too small for a single line; ref #10 2022-09-07 12:24:01 -04:00
Tw
9dab36f2af factotum: fix log read inuse bug
When log reading exits, inuse flag should be cleared.

Signed-off-by: Tw <wei.tan@intel.com>
2022-09-07 09:34:32 -04:00
Igor Burago
c57b71966e acme: accept paths with spaces in the 'name' ctl message
As it is allowed to use spaces in file names set interactively through
the tag since 7b1c85f, do not reject names with spaces in the 'name'
ctl message either.

Fixes #559.
2022-09-07 09:32:08 -04:00
Igor Burago
29fae81fb7 plumber: allow underscores in variable names in plumbing rules
Fixes #561.
2022-09-07 09:31:36 -04:00
Igor Burago
4f801be055 plumber: set match variables past the first non-matching subexpression
Fixes #563.
2022-09-07 09:30:40 -04:00
Igor Burago
e4b913866b plumber: fail on buffer exhaustion or runaway quotes in string expansion 2022-09-06 13:21:23 -04:00
Tom Schwindl
a4af25bc0d src/cmd: print all usage messages to stderr
All utilities print their usage message to stderr,
cmp(1) and getflags(8) should do the same.
2022-09-06 13:15:36 -04:00
g-branden-robinson
93f8143600 troff: support \~ as an alias for \ (#567)
In groff, Heirloom Doctools troff, and neatroff, the `\~` escape
sequence produces an adjustable (paddable) but unbreakable space.
mandoc, which does not perform adjustment or render to typesetters,
supports the escape sequence as a synonym for `\ `, the same as `\0`.

This extension is of long pedigree: groff has supported it for at least
30 years, Heirloom for 17, mandoc for 13, and neatroff for 6.

Do the same as mandoc to prevent mis-rendering of documents using this
escape sequence.  Heirloom Doctools troff, a descendant of Documenter's
Workbench troff, would be a good place to look for a compatible
implementation of the adjustable semantics for this sequence.
2022-08-12 23:37:28 -04:00