Zbigniew Jędrzejewski-Szmek [Sun, 12 Oct 2014 20:05:49 +0000 (16:05 -0400)]
tests: fix some tests to pass in koji
FAIL: test-engine
=================
Cannot find cgroup mount point: No such file or directory
Assertion 'r >= 0' failed at ../src/test/test-engine.c:46, function main(). Aborting.
FAIL: test-sched-prio
=====================
Cannot find cgroup mount point: No such file or directory
Assertion 'r >= 0' failed at ../src/test/test-sched-prio.c:42, function main(). Aborting.
FAIL: test-bus-cleanup
======================
Assertion 'sd_bus_open_system(&bus) >= 0' failed at ../src/libsystemd/sd-bus/test-bus-cleanup.c:40, function test_bus_open(). Aborting.
after new: refcount 1
Brandon L Black [Sat, 11 Oct 2014 23:36:06 +0000 (23:36 +0000)]
Set $NOTIFY_SOCKET for control procs if NotifyAccess=all
Zbigniew Jędrzejewski-Szmek [Sat, 11 Oct 2014 15:37:37 +0000 (11:37 -0400)]
Modernization
David Herrmann [Sat, 11 Oct 2014 16:53:26 +0000 (18:53 +0200)]
NEWS: don't mention noinst_* debug programs
systemd-evcat and systemd-modeset are not installed systemd wide and
should really just be used by developers to test the libsystemd-terminal
features. No reason to mention it in NEWS.. despite the undulating
rainbows..
David Herrmann [Sat, 11 Oct 2014 16:49:20 +0000 (18:49 +0200)]
terminal/grdrm: force deep modeset on enter
Usually, when our session is activated (or re-configurated) we should be
able to try a page-flip to our buffer. The kernel driver should reject it
if it is incompatible. As it turns out, drivers don't do this. Therefore,
we now force a deep modeset if we're not sure what mode is set.
This has the side-effect that we might get glitches on session-switches
(depending on driver behavior). However, there's no way around this and it
is what everyone does so far. Most drivers still detect if we keep the
mode and so don't touch the clocks. Therefore, we just get a regular async
flip.
Dan Williams [Wed, 8 Oct 2014 19:15:45 +0000 (14:15 -0500)]
sd-dhcp-client: support non-Ethernet hardware addresses
Like Infiniband. See RFC 4390 section 2.1 for details on DHCP
and Infiniband; chaddr is zeroed, hlen is set to 0, and htype
is set to ARPHRD_INFINIBAND because IB hardware addresses
are 20 bytes in length.
Michael Scherer [Sat, 11 Oct 2014 08:13:43 +0000 (04:13 -0400)]
Report aa_change_onexec error code
Since aa_change_onexec return the error code in errno, and return
-1, the current code do not give any useful information when
something fail. This make apparmor easier to debug, as seen on
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760526
Lukasz Skalski [Fri, 10 Oct 2014 14:42:19 +0000 (16:42 +0200)]
bus-proxyd: fix compatibility with old dbus-1
'ListQueuedOwners' method should return 'NameHasNoOwner' error
if chosen name is not available on bus.
Emil Renner Berthing [Thu, 18 Sep 2014 13:24:55 +0000 (15:24 +0200)]
mount-setup: skip relabelling when SELinux and SMACK not supported
This is also the only place where FTW_ACTIONRETVAL is used, so
this makes systemd compile without SELinux or SMACK support
when the standard library doesn't support this extension.
Tobias Hunger [Thu, 9 Oct 2014 19:37:17 +0000 (21:37 +0200)]
fstab-generator: Honor mount.usr*= on kernel command line
This allows to configure boot loader entries for systems where the
root and usr filesystems are in different subvolumes (or even on
different drives).
Lukasz Skalski [Fri, 10 Oct 2014 10:29:04 +0000 (12:29 +0200)]
kdbus: fix buffer overflow in bus_get_owner_kdbus() function
Commit
710fc9779b7c (kdbus repo) introduced attaching items[]
instead of name[] in kdbus_cmd_conn_info struct. Commit
581fe6c81
(systemd repo) caught up with this change, but item size was not
properly calculated.
Lennart Poettering [Fri, 10 Oct 2014 10:37:21 +0000 (12:37 +0200)]
man: reference table in systemd-detect-virt(1) from ConditionVirtualization= documentation
Lennart Poettering [Fri, 10 Oct 2014 10:36:57 +0000 (12:36 +0200)]
man: include zVM in systemd-detect-virt list
Lennart Poettering [Fri, 10 Oct 2014 10:29:08 +0000 (12:29 +0200)]
man: rework VM/container identifier list into a table, and include descriptions for all entries
(also remove chroot from the list, we don't detect that anymore)
Lennart Poettering [Fri, 10 Oct 2014 09:11:25 +0000 (11:11 +0200)]
nspawn: actually allow access to /dev/net/tun in the container
It's not sufficient to just copy the device node over, we need to update
the policy for it too.
Ivan Shapovalov [Fri, 10 Oct 2014 03:52:26 +0000 (23:52 -0400)]
systemd-hibernate-resume@.service: remove unnecessary ordering
They were left from an early review iteration, when hibernate-resume
functionality was intended to work also outside of initramfs.
Now this is not the case, and these dependencies became redundant
as systemd-fsck-root.service can never be part of initramfs, and
systemd-remount-fs.service makes little sense in it.
Zbigniew Jędrzejewski-Szmek [Fri, 10 Oct 2014 03:30:45 +0000 (22:30 -0500)]
build-sys: use -Wno-gnu-variable-sized-type-not-at-end under clang
Otherwise we get useless warnings about journal code.
Zbigniew Jędrzejewski-Szmek [Fri, 10 Oct 2014 03:25:01 +0000 (22:25 -0500)]
build-sys: use -Wno-typedef-redefinition only for clang
Our checks for -Wno-xxx switches do not work with gcc [1].
[1] https://gcc.gnu.org/wiki/FAQ#wnowarning
Zbigniew Jędrzejewski-Szmek [Wed, 8 Oct 2014 00:01:02 +0000 (20:01 -0400)]
Update TODO
Rahul Sundaram [Fri, 10 Oct 2014 02:14:36 +0000 (22:14 -0400)]
man: clarify what "microsoft" and "oracle" stand for
https://bugzilla.redhat.com/show_bug.cgi?id=1150477
Zbigniew Jędrzejewski-Szmek [Fri, 10 Oct 2014 02:57:56 +0000 (22:57 -0400)]
systemctl: remove casts in formatting
Zbigniew Jędrzejewski-Szmek [Thu, 9 Oct 2014 23:52:31 +0000 (19:52 -0400)]
journalctl: use pager for --list-boots
Jan Janssen [Sat, 6 Sep 2014 08:36:34 +0000 (10:36 +0200)]
sd-journal: fix sd_journal_enumerate_unique skipping values
sd_journal_enumerate_unique will lock its mmap window to prevent it
from being released by calling mmap_cache_get with keep_always=true.
This call may return windows that are wider, but compatible with the
parameters provided to it.
This can result in a mismatch where the window to be released cannot
properly be selected, because we have more than one window matching the
parameters of mmap_cache_release. Therefore, introduce a release_cookie
to be used when releasing the window.
https://bugs.freedesktop.org/show_bug.cgi?id=79380
Zbigniew Jędrzejewski-Szmek [Fri, 10 Oct 2014 02:51:35 +0000 (22:51 -0400)]
sd-journal: change check to assert
As of
0f99f74a14 'sd-journal: verify that object start with the field
name' this condition should never happen.
Zbigniew Jędrzejewski-Szmek [Fri, 10 Oct 2014 02:44:29 +0000 (22:44 -0400)]
sd-journal: do not reset sd_j_enumerate_unique position on error
systemctl would call sd_j_enumerate_unique() interleaved with
sd_j_next(). But the latter can remove a file if it detects an
error in it. In those circumstances sd_j_enumerate_unique would
restart with the first file in hashmap. With many corrupted files
sd_j_enumerate_unique might iterate over the list multiple times.
Avoid this by jumping to the next file in unique list if possible,
or setting a flag that tells sd_j_enumerate_unique that it is done
otherwise.
Lennart Poettering [Thu, 9 Oct 2014 16:26:47 +0000 (18:26 +0200)]
man: document the new "rescue" kernel command line option
Michal Schmidt [Thu, 9 Oct 2014 15:27:57 +0000 (17:27 +0200)]
service: enter SERVICE_STOP_SIGTERM state after getting "STOPPING=1"
SERVICE_STOP would mean we're running the ExecStop command. That's not
the case with "STOPPING=1".
Instead we should enter the same state as if we just told the service
to stop, i.e. SERVICE_STOP_SIGTERM.
This fixes a bug where voluntarily exiting services would hang around in
deactivating state until timeout.
Lennart Poettering [Thu, 9 Oct 2014 14:51:31 +0000 (16:51 +0200)]
update TODO
Daniel Mack [Thu, 9 Oct 2014 13:40:17 +0000 (15:40 +0200)]
bus-proxy: allow getpeersec() to fail
getpeersec() will fail for non-SELinux enabled machines, so don't make that
a hard error.
Susant Sahani [Thu, 9 Oct 2014 13:31:11 +0000 (19:01 +0530)]
socket-proxyd: Unchecked return value from library
CID 1237543 (#1 of 1): Unchecked return value from library
(CHECKED_RETURN)
Patrik Flykt [Wed, 8 Oct 2014 08:00:07 +0000 (11:00 +0300)]
sd-dhcp6-lease: Name the structure containing IAADDR data
With this change the DHCP6_OPTION_IAADDR_LEN define can be removed in
favor of using sizeof(). Using the name of the struct and sizeof()
makes it clearer how much and what data is being copied from the
DHCPv6 message.
Daniel Mack [Thu, 9 Oct 2014 11:26:53 +0000 (13:26 +0200)]
bus-policy: move name list iteration to policy users
We need to figure out which of the possible names satisfied the policy,
so we cannot do the iteration in check_policy_item() but have to leave it
to the users.
Test cases amended accordingly.
Lukasz Skalski [Thu, 9 Oct 2014 09:02:47 +0000 (11:02 +0200)]
logind: mount per-user tmpfs with 'smackfsroot=*' for smack enabled systems
Lennart Poettering [Thu, 9 Oct 2014 09:36:34 +0000 (11:36 +0200)]
man: SyslogIdentifier= has an effect on journal logging too
Daniel Mack [Thu, 9 Oct 2014 09:26:09 +0000 (11:26 +0200)]
sd-bus: check return value of asprintf()
Check for OOM conditions of asprintf() in bus_set_address_user().
Zbigniew Jędrzejewski-Szmek [Thu, 9 Oct 2014 00:22:51 +0000 (20:22 -0400)]
systemctl: suggest -xe not -xn
https://bugzilla.redhat.com/show_bug.cgi?id=1150289
Lennart Poettering [Wed, 8 Oct 2014 23:46:31 +0000 (01:46 +0200)]
update TODO
Zbigniew Jędrzejewski-Szmek [Sun, 5 Oct 2014 03:17:45 +0000 (23:17 -0400)]
sd-event: also update signal mask when disconnecting sources
Zbigniew Jędrzejewski-Szmek [Sun, 5 Oct 2014 02:57:43 +0000 (22:57 -0400)]
sd-event: be more careful when enabling/disabling signals
When a child event is disabled (in order to be freed) and there is no
SIGCHLD signal event, sd_event_source_set_enabled will disable SIGCHLD
even if there are other child events.
Also remove some unneeded signalfd updates.
https://bugs.freedesktop.org/show_bug.cgi?id=84659
Based-on-a-patch-by: Hristo Venev <mustrumr97@gmail.com>
Jan Synacek [Wed, 8 Oct 2014 06:04:52 +0000 (08:04 +0200)]
man/systemctl: document enable on masked units
Thomas Hindoe Paaboel Andersen [Wed, 8 Oct 2014 21:57:32 +0000 (23:57 +0200)]
util: avoid double close of fd
We could end with a double close if we close the fd loop and flush_fd
fails. That would make us goto fail and there we close the fd once
again. This patch sets the fd to the return value for safe_close: -1
A fd with negative value will be ignored by the next call to
safe_close.
CID#996223
Lennart Poettering [Wed, 8 Oct 2014 20:37:45 +0000 (22:37 +0200)]
time: functions named "internal" really shouldn't be exported
Also, let's try to make function names descriptive, instead of using
bools for flags.
Mantas Mikulėnas [Tue, 7 Oct 2014 11:55:21 +0000 (14:55 +0300)]
core: map the 'rescue' argument to rescue.target
Even though the 'emergency' and 'single' aliases come from sysvinit, the
lack of 'rescue' is still quite confusing (caught me by surprise for the
9th time yet) and inconsistent with `systemctl rescue` as well.
Lennart Poettering [Wed, 8 Oct 2014 19:32:30 +0000 (21:32 +0200)]
Update TODO
Daniel Mack [Wed, 8 Oct 2014 13:32:41 +0000 (15:32 +0200)]
sd-bus: sync kdbus.h (ABI break)
Sync kdbus.h once again. Two thing have changed:
a) KDBUS_CMD_EP_* was renamed to KDBUS_CMD_ENDPOINT_*
b) struct kdbus_cmd_hello and struct kdbus_cmd_make gained a
'features' bitfield (which is currently unused)
Tom Gundersen [Wed, 8 Oct 2014 13:01:07 +0000 (15:01 +0200)]
nspawn: copy /dev/net/tun from host
This enables tuntap support in the container (assumning the necessary capabilities are in place).
Rahul Sundaram [Wed, 8 Oct 2014 05:42:59 +0000 (01:42 -0400)]
note on relative symlink in os-release
Lukas Nykryn [Wed, 8 Oct 2014 09:59:46 +0000 (11:59 +0200)]
systemctl: add add-wants and add-requires verbs
Lukas Nykryn [Wed, 8 Oct 2014 09:58:57 +0000 (11:58 +0200)]
unit: move UnitDependency to unit-name
Zbigniew Jędrzejewski-Szmek [Wed, 8 Oct 2014 02:01:37 +0000 (22:01 -0400)]
NEWS: update for 217
Zbigniew Jędrzejewski-Szmek [Wed, 8 Oct 2014 01:41:14 +0000 (21:41 -0400)]
man: mention docker as type of virtualization
Jan Synacek [Tue, 7 Oct 2014 11:35:41 +0000 (13:35 +0200)]
core: don't allow enabling if unit is masked
Daniel Mack [Tue, 7 Oct 2014 15:58:29 +0000 (17:58 +0200)]
bus-proxyd: assorted cleanups and fixes
Just some cleanups around policy checks that came up during review.
The code is still not productive.
Zbigniew Jędrzejewski-Szmek [Tue, 7 Oct 2014 06:02:59 +0000 (02:02 -0400)]
/proc/sys prefixes are not necessary for sysctl anymore
Zbigniew Jędrzejewski-Szmek [Tue, 7 Oct 2014 13:11:03 +0000 (09:11 -0400)]
Update TODO
Zbigniew Jędrzejewski-Szmek [Tue, 7 Oct 2014 13:19:41 +0000 (09:19 -0400)]
man: document stripping of quotes
Zbigniew Jędrzejewski-Szmek [Tue, 7 Oct 2014 13:19:24 +0000 (09:19 -0400)]
man: move commandline parsing to a separate section
It is very long already, and obscures the description of
ExecStart, and it is about to get longer.
Daniel Mack [Tue, 7 Oct 2014 10:36:09 +0000 (12:36 +0200)]
bus-proxyd: check return values of getpeercred() and getpeersec()
If we can't get the remote peer or security creds, bail out.
Spotted by coverity.
Daniel Mack [Tue, 7 Oct 2014 10:10:06 +0000 (12:10 +0200)]
sd-bus: check return value of vasprintf
Check for OOM situations when vasprintf() returns < 0 in bus_error_setfv().
Spotted by coverity.
Daniel Mack [Tue, 7 Oct 2014 10:02:04 +0000 (12:02 +0200)]
sd-bus: fix KDBUS_CMD_FREE user
Fix a user of the KDBUS_CMD_FREE ioctl that was missed in the transition.
Daniel Mack [Tue, 7 Oct 2014 09:32:07 +0000 (11:32 +0200)]
sd-bus: fix use-after-free in close_kdbus_msg()
Walk the items first, then free the memory of the message.
Also, while at it, make coverity happy with an explicit (void) prefix.
We intentionally ignore the return value here.
Martin Pitt [Tue, 7 Oct 2014 09:22:31 +0000 (11:22 +0200)]
keymap: Fix touchpad toggle key on Asus laptops
https://launchpad.net/bugs/1377352
Martin Pitt [Tue, 7 Oct 2014 09:20:04 +0000 (11:20 +0200)]
keymap: Fix touchpad toggle on Toshiba Satellite P75-A7200
Just like everywhere else we use KEY_F21 instead of KEY_TOUCHPAD_TOGGLE for X
friendliness.
Thomas Hindoe Paaboel Andersen [Mon, 6 Oct 2014 21:58:46 +0000 (23:58 +0200)]
sd-bus: remove unused variable
It is no longer used after
d663f1b1a92a778bcdc68f29b8c08cb49431b4f7
Daniel Mack [Mon, 6 Oct 2014 16:36:16 +0000 (18:36 +0200)]
sd-bus: sync kdbus.h (ABI break)
The KDBUS_CMD_FREE ioctl now uses a struct rather than a direct pointer
to the offset to free.
The KDBUS_CMD_MSG_CANCEL ioctl has also changes, but there's no user of
it yet in systemd.
Zbigniew Jędrzejewski-Szmek [Sun, 5 Oct 2014 22:41:31 +0000 (18:41 -0400)]
build-sys: use linux/memfd.h if available
linux/memfd.h was added linux 3.17, so it might not be widely
available for a while.
Also, check if memfd_create is defined, for the HAVE_LINUX_MEMFD_H
check to have a chance of succeeding.
Also, collapse all ifdefs for memfd-related stuff, because they
were all added together so there's no need to check separately.
Thomas Hindoe Paaboel Andersen [Sun, 5 Oct 2014 20:33:20 +0000 (22:33 +0200)]
terminal: remove an unused initialization
Zbigniew Jędrzejewski-Szmek [Sun, 5 Oct 2014 19:29:20 +0000 (15:29 -0400)]
Update TODO
David Sommerseth [Fri, 3 Oct 2014 13:53:45 +0000 (15:53 +0200)]
ask-password: Add --echo to enable echoing the user input
Programs such as OpenVPN may use ask-password for not only retrieving
passwords, but also usernames. Masking usernames with * seems just silly.
v2 - Don't mess with termios flags, instead print the input
instead of an asterix. Resolves issues with backspace
and TAB input.
v3 - Renamed 'do_echo' variables and argument to 'echo'. Also
modified the ask_password_{tty,agent,auto} API instead of
additional wrapper functions.
[zj: undo changes to ask_password_auto, since no callers were using
the new argument.]
Zbigniew Jędrzejewski-Szmek [Sun, 5 Oct 2014 18:04:02 +0000 (14:04 -0400)]
bus: add assert to check that we're not freeing a static structure
CID #996315.
David Herrmann [Sun, 5 Oct 2014 15:44:09 +0000 (17:44 +0200)]
terminal/idev: don't remove consumed-mods from kbd-matches
XKB consumed mods include modifiers that *didn't* affect the translation,
but might affect it if used. This is very misleading, given that we are
usually not interested in that information. Therefore, keep them in real
mods to behave like X11 does. Maybe at some point, XKB introduces proper
shortcut matching...
Also make evcat display consumed modifiers so we can better debug those
situations.
David Herrmann [Sun, 5 Oct 2014 13:49:26 +0000 (15:49 +0200)]
terminal/screen: perform bold->light conversion only on foreground
Bold glyphs always use light colors. However, this color conversion is
limited to the foreground color, so skip it for backgrounds.
David Herrmann [Sun, 5 Oct 2014 13:48:32 +0000 (15:48 +0200)]
terminal/subterm: leave bold-light conversion to parent
We rely on the parent terminal to do color conversion, so also leave
bold->light conversion to the parent. Otherwise, it will be performed
twice and we might apply it on the wrong color.
Tom Gundersen [Sun, 5 Oct 2014 13:26:54 +0000 (15:26 +0200)]
terminal/screen: add support for alternate screen buffers
Hook up SM/RM 47/1047-1049 and enable alternate screen buffers for term
applications.
(David: rebased on top of -git, renamed helpers and added docs)
David Herrmann [Sun, 5 Oct 2014 12:53:18 +0000 (14:53 +0200)]
terminal/screen: save state in separate object
Terminal state can be saved/restored by applications. To simplify our
internal handling, put all affected state into a separate object.
Especially with alternate screen buffers, this will simplify our code
significantly.
David Herrmann [Sun, 5 Oct 2014 12:47:57 +0000 (14:47 +0200)]
terminal/subterm: skip setting parent's cursor
We draw our own cursor in subterm now, so there's no reason to update the
cursor-position of the parent terminal on each frame. The parent's cursor
is hidden, anyway.
David Herrmann [Sun, 5 Oct 2014 12:45:33 +0000 (14:45 +0200)]
terminal: fix TERM_FLAG_* comment
7BIT mode is enabled by default. Fix the comment to state this correctly.
Tom Gundersen [Sat, 4 Oct 2014 21:03:15 +0000 (23:03 +0200)]
terminal: fix restoring of screen flags
Thomas Hindoe Paaboel Andersen [Sat, 4 Oct 2014 21:51:45 +0000 (23:51 +0200)]
test: only use assert_se
The asserts used in the tests should never be allowed to be
optimized away
Tom Gundersen [Sat, 4 Oct 2014 11:10:41 +0000 (13:10 +0200)]
consoled: add a unit file
The unit file is statically enabled, but still requires --enable-terminal
to actually get installed.
Tom Gundersen [Sat, 4 Oct 2014 11:12:49 +0000 (13:12 +0200)]
consoled: move from /bin to /lib/systemd
This should not normally be run manually, but rather through systemd.
Tom Gundersen [Sat, 4 Oct 2014 11:11:40 +0000 (13:11 +0200)]
systemd-bus-proxyd: distribute the .in file also for the user version
Zbigniew Jędrzejewski-Szmek [Sat, 4 Oct 2014 02:08:23 +0000 (22:08 -0400)]
build-sys: fix make distcheck
Zbigniew Jędrzejewski-Szmek [Sat, 4 Oct 2014 01:06:52 +0000 (21:06 -0400)]
man: say that SecureBits= are space separated
Zbigniew Jędrzejewski-Szmek [Sat, 4 Oct 2014 00:57:30 +0000 (20:57 -0400)]
sd-id128: do stricter checking of random boot id
If we are bothering to check whether the kernel is not feeding us
bad data, we might as well do it properly.
CID #1237692.
Tobias Hunger [Sat, 4 Oct 2014 00:41:43 +0000 (20:41 -0400)]
fstab-generator: Small cleanup
Zbigniew Jędrzejewski-Szmek [Fri, 3 Oct 2014 23:47:47 +0000 (19:47 -0400)]
sd-bus: split out cleanup into separate function
m is always non-null at this point. This function is too long anyway.
Zbigniew Jędrzejewski-Szmek [Fri, 3 Oct 2014 23:17:56 +0000 (19:17 -0400)]
core/namespace: remove invalid check
dir cannot be NULL here, because it was allocated with alloca.
CID #1237768.
Zbigniew Jędrzejewski-Szmek [Fri, 3 Oct 2014 23:16:11 +0000 (19:16 -0400)]
core/namespace: remove invalid check
root cannot be NULL here, because it was allocated with alloca.
CID #1237769.
Zbigniew Jędrzejewski-Szmek [Fri, 3 Oct 2014 22:49:45 +0000 (18:49 -0400)]
sd-event: check the value of received signal
Appease coverity report #1237775.
Also rename ss to n, to make it visually different from ss.
Zbigniew Jędrzejewski-Szmek [Fri, 3 Oct 2014 21:44:23 +0000 (17:44 -0400)]
man: use more markup in daemon(7)
David Herrmann [Fri, 3 Oct 2014 13:58:44 +0000 (15:58 +0200)]
console: add user console daemon
This adds a first draft of systemd-consoled. This is still missing a lot
of features and does some rather primitive rendering. However, it shows
the direction this code is going and serves as basis for further testing.
The systemd-consoled binary should be run as `systemd --user' unit. It
automatically picks up any session marked as Desktop=SYSTEMD-CONSOLE.
Therefore, you can use any login-manager you want (ranging from /bin/login
to gdm) to create sessions for systemd-consoled. However, the sessions
managers must be prepared to set the Desktop= variable properly.
The user-session is called `systemd-console', only the daemon providing
the terminal environment is called `systemd-consoled' (mind the 'd').
So far, only a single terminal session is provided on each opened
user-session. However, we support multiple user-sessions (even across
multiple seats) just fine. In the future, the workspace logic will get
extended so you can have multiple terminal sessions in a single
user-session for easier access.
Note that this is still experimental! Instructions on how to run it will
follow shortly.
David Herrmann [Fri, 3 Oct 2014 13:54:21 +0000 (15:54 +0200)]
pty: optimize read loop
As it turns out, I can actually send data to the pty faster than the
terminal can read. Therefore, make sure we read as much data as possible
but bail out early enough to not cause starvation.
Kernel TTY buffers are 4k, so reduce the overall buffer size, but read
more than once if possible (up to 8 times sounds reasonable).
David Herrmann [Fri, 3 Oct 2014 13:27:25 +0000 (15:27 +0200)]
terminal/screen: adjust screen age only on update
Instead of increasing the screen-age on redraw, we now increase it only on
real updates. This is effectively the same, but avoids increased age
counters on backbuffer rendering. Therefore, we can now check age counters
against fronbuffers safely, while rendering frames in background.
David Herrmann [Fri, 3 Oct 2014 12:44:41 +0000 (14:44 +0200)]
terminal/screen: add color converter
Terminals use pseudo color-codes mixed with 8bit and 24bit colors. Provide
a color-converter so external renderers only have to deal with ARGB32
colors.
This requires a color-palette as input as there's no fixed mapping. We
provide a default, but maybe we wanna support external palettes in the
future.
David Herrmann [Fri, 3 Oct 2014 12:42:42 +0000 (14:42 +0200)]
terminal/screen: add cursor rendering
This is the most simple way to render cursors: flip attr->inverse of the
cursor cell. This causes the background and foreground colors of the
cursor-cell to be inversed.
Now that we render cursors ourselves, make subterm not call into the
parent terminal to render cursors.
David Herrmann [Fri, 3 Oct 2014 12:30:37 +0000 (14:30 +0200)]
terminal/screen: mark cursor dirty on enabled/disable
If we hide or show the cursor, we change visual attributes and have to
mark the underlying cell as dirty. Otherwise, the terminal will not be
redrawn.
David Herrmann [Fri, 3 Oct 2014 11:11:08 +0000 (13:11 +0200)]
terminal/idev: add helper to match keyboard shortcuts
Matching keyboard shortcuts on internationalized keyboards is actually
non-trivial. Matching the actual key is easy, but the modifiers can be
used by both, the matching and the translation step. Therefore, XKB
exports "consumed-modifiers" that we use to figure out whether a modifier
was already used by the translation step.
The new IDEV_KBDMATCH() helper can be used to match on any keyboard
shortcut and it will do the right thing.
David Herrmann [Fri, 3 Oct 2014 10:50:41 +0000 (12:50 +0200)]
terminal/screen: add keyboard mapping
Implement the feed_keyboard() handling by mapping XKB keys according to
DEC-VT behavior.
Public information on terminal key-mappings is pretty scarce. We only
implement the most basic mapping for now. Further improvements welcome!
David Herrmann [Fri, 3 Oct 2014 10:48:36 +0000 (12:48 +0200)]
terminal/idev: don't map XKB_KEY_NoSymbol as ASCII 0
XKB_KEY_NoSymbol is defined as 0 but does not correspond to a VT key with
ASCII value 0. No such key exists, so don't try to find such a key.