Peter Hutterer [Thu, 8 Jan 2015 23:33:27 +0000 (09:33 +1000)]
hwdb: add missing line between the G400 entries
Error, DATA expected but got 'mouse:usb:v046dpc24c:name:Logitech G400s Optical
Gaming Mouse:' in '/etc/udev/hwdb.d/70-mouse.hwdb':
Error, MATCH expected but got ' MOUSE_DPI=400@1000 *800@1000 2000@1000
4000@1000' in '/etc/udev/hwdb.d/70-mouse.hwdb':
Introduced in
6366e349
Lennart Poettering [Thu, 8 Jan 2015 22:21:01 +0000 (23:21 +0100)]
core: check both EPERM and EACCES for OOM adjustments
Lennart Poettering [Thu, 8 Jan 2015 22:13:28 +0000 (23:13 +0100)]
update TODO
Lennart Poettering [Thu, 8 Jan 2015 22:12:16 +0000 (23:12 +0100)]
core: make EPERM errors when applying OOM adjustment for forked processes non-fatal
This should be useful for user namespaces.
Lennart Poettering [Thu, 8 Jan 2015 22:11:35 +0000 (23:11 +0100)]
loginctl: port to generic verbs.h API
Lennart Poettering [Thu, 8 Jan 2015 18:16:44 +0000 (19:16 +0100)]
man: remove references to systemadm from systemctl man page
The tool is badly maintained and we shouldn't refence such old cruft.
Lennart Poettering [Thu, 8 Jan 2015 18:15:49 +0000 (19:15 +0100)]
machined: when cloning a raw disk image, also set the NOCOW flag
Lennart Poettering [Thu, 8 Jan 2015 18:14:08 +0000 (19:14 +0100)]
man: bring machinectl man page up-to-date
Lennart Poettering [Thu, 8 Jan 2015 17:08:40 +0000 (18:08 +0100)]
man: bring systemctl man page and --help text into the same order
Lennart Poettering [Thu, 8 Jan 2015 17:07:25 +0000 (18:07 +0100)]
man: add the same command sections to the man page as the --help text shows
Lennart Poettering [Thu, 8 Jan 2015 14:33:46 +0000 (15:33 +0100)]
systemctl,loginctl: start polkit agent for all polkit enabled operations
Lennart Poettering [Thu, 8 Jan 2015 14:23:54 +0000 (15:23 +0100)]
machinectl: given that machinectl invokes a number of polkit enabled methods, start the polkit agent on terminals
Lennart Poettering [Thu, 8 Jan 2015 14:09:12 +0000 (15:09 +0100)]
machinectl: show most recent log output in "machinectl status", too
Lennart Poettering [Thu, 8 Jan 2015 13:38:52 +0000 (14:38 +0100)]
loginctl: show the 10 most recent log user/session log lines in "loginctl user-status" and "loginctl session-status"
Peter Hutterer [Thu, 8 Jan 2015 21:53:55 +0000 (07:53 +1000)]
hwdb: note that we care about the maximum frequency in MOUSE_DPI
Devices with dynamic frequency scaling adjust the frequency as needed. For
those we only care about the maximum frequency, not the various in betweens.
https://bugs.freedesktop.org/show_bug.cgi?id=87435#c8
Zbigniew Jędrzejewski-Szmek [Thu, 8 Jan 2015 21:45:34 +0000 (16:45 -0500)]
hwdb: adjust max frequency of Logitech RX 250
https://bugs.freedesktop.org/show_bug.cgi?id=87435
Carlos Morata Castillo [Thu, 8 Jan 2015 20:51:49 +0000 (21:51 +0100)]
bash-completion: systemd-nspawn update
*Autocompletion for dirs, doesn't leave until you press space.
*Added tmpfs, volatile and network-macvlan options.
I tried with the SELinux options with seinfo(setools-console), but too
messy to get it right. Even Daniel Walsh haven't done it yet. :)
Andrey Chaser [Thu, 8 Jan 2015 21:21:06 +0000 (16:21 -0500)]
cryptsetup: support header= option
https://bugs.freedesktop.org/show_bug.cgi?id=66396
Dave Reisner [Sat, 20 Dec 2014 03:59:51 +0000 (22:59 -0500)]
test-verbs: add unit tests for verbs minilib
Dave Reisner [Thu, 8 Jan 2015 02:54:45 +0000 (21:54 -0500)]
doc: fix stale references to systemd-verify
This was subsumed into systemd-analyze back in
142c4ecaa98.
Peter Mattern [Sat, 20 Dec 2014 14:09:19 +0000 (15:09 +0100)]
man: add hostnamed chassis type "embedded" to machine-info(5)
man machine-info lacks hostnamed chassis type "embedded" as introduced in 218. The following lines should fix this.
Zbigniew Jędrzejewski-Szmek [Thu, 8 Jan 2015 19:45:57 +0000 (14:45 -0500)]
man: mention where timesyncd keeps the timestamp
David Herrmann [Thu, 8 Jan 2015 20:06:14 +0000 (21:06 +0100)]
bus-proxyd: fix EPERM on replies
Imagine a kdbus peer sending a method-call without EXPECT_REPLY set
through the proxy to a dbus1 peer. The proxy turns the missing
EXPECT_REPLY flag into a dbus1 NO_REPLY_EXPECTED flag. However, if the
receipient ignores that flag (valid dbus1 behavior) and sends a reply, the
proxy will try to forward it to the original peer. This will fail with
EPERM as the kernel didn't track the reply.
We have two options now: Either we ignore EPERM for reply messages, or we
track reply-windows in the proxy so we can properly ignore replies if
EXPECT_REPLY wasn't set.
This commit chose the first option: ignore EPERM for replies. The only
down-side is that replies without matching method call will no longer be
forwarded by the proxy. This works on dbus1, though.
Nobody sane does this, so lets ignore it.
David Herrmann [Thu, 8 Jan 2015 19:58:59 +0000 (20:58 +0100)]
bus-proxyd: optimize replies if they're not requested
If a caller does not request a reply, dont send it. This skips message
creation and speeds up NO_REPLY_EXPECTED cases. Note that sd-bus still
handles this case internally, but if we handle it in bus-proxyd, we can
skip the whole message creation step.
David Herrmann [Thu, 8 Jan 2015 16:43:48 +0000 (17:43 +0100)]
bus-proxy: augment credentials from /proc for cmdline update
dbus1 does not provide cmdline, so we have to augment our credentials from
/proc to beautify the bus-proxyd cmdline. We dont use this for anything
but beautification, so there shouldn't be any problems due to /proc
pid-recycling races.
This fixes bus-proxyd to no longer display 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
in its cmdline.
Tom Gundersen [Tue, 6 Jan 2015 18:50:25 +0000 (19:50 +0100)]
nspawn: fix error message when mknod fails
Tom Gundersen [Tue, 6 Jan 2015 18:12:38 +0000 (19:12 +0100)]
path-util: plug leak
David Herrmann [Thu, 8 Jan 2015 15:13:39 +0000 (16:13 +0100)]
dbus1-generator: fix array sentinal
Add a {} sentinal entry so the config-iterator can properly iterate all
array elements. Fixes a segfault in the dbus1-generator.
Umut Tezduyar Lindskog [Tue, 16 Dec 2014 07:45:28 +0000 (08:45 +0100)]
build: print conditions of ldconfig, hibernate configs
Lukasz Skalski [Thu, 8 Jan 2015 10:10:21 +0000 (11:10 +0100)]
sd-bus: fix copy-paste error
Lennart Poettering [Thu, 8 Jan 2015 02:20:10 +0000 (03:20 +0100)]
update TODO
Lennart Poettering [Thu, 8 Jan 2015 02:17:50 +0000 (03:17 +0100)]
journal: bump RLIMIT_NOFILE when journal files to 16K (if possible)
When there are a lot of split out journal files, we might run out of fds
quicker then we want. Hence: bump RLIMIT_NOFILE to 16K if possible.
Do these even for journalctl. On Fedora the soft RLIMIT_NOFILE is at 1K,
the hard at 4K by default for normal user processes, this code hence
bumps this up for users to 4K.
https://bugzilla.redhat.com/show_bug.cgi?id=1179980
Lennart Poettering [Thu, 8 Jan 2015 00:59:58 +0000 (01:59 +0100)]
udevadm: don't hit an assert when obsolete parameters are passed
https://bugzilla.redhat.com/show_bug.cgi?id=1178051
Lennart Poettering [Thu, 8 Jan 2015 00:28:15 +0000 (01:28 +0100)]
update TODO
Lennart Poettering [Thu, 8 Jan 2015 00:27:13 +0000 (01:27 +0100)]
util: make it easy to initialize the crtime from the current time in fd_setcrtime()
Lennart Poettering [Thu, 8 Jan 2015 00:25:40 +0000 (01:25 +0100)]
import: also set NOCOW for gpt disk images
Given the write patterns on disk images, we better should turn COW off
for them. In particular as the file systems used inside the disk images
should do their own data integrity checks anyway and we don't need
multiple layers of it.
Lennart Poettering [Thu, 8 Jan 2015 00:22:29 +0000 (01:22 +0100)]
journald: turn off COW for journal files on btrfs
btrfs' COW logic results in heavily fragment journal files, which is
detrimental for perfomance. Hence, turn off COW for journal files as we
create them.
Turning off COW comes at the cost of data integrity guarantees, but this
should be acceptable, given that we do our own checksumming, and
generally have a pretty conservative write pattern.
Also see discussion on linux-btrfs:
http://www.spinics.net/lists/linux-btrfs/msg41001.html
Lennart Poettering [Wed, 7 Jan 2015 22:02:08 +0000 (23:02 +0100)]
util: upgrade default $TERM from vt102 to vt220 if we have no idea about the connected terminal
So far, if we had no knowledge about the correct $TERM we defaulted to
v102, as a safe, conservative choice. However, the terminfo data for
vt102 is not aware of pageup/pagedown, which makes "less" much harder
work with than necessary. Setting vt220 allows them to work correctly.
"vt220" should be a sufficiently safe choice too, given that xterm,
gnome-terminal and the linux console all strive to implement vt220 as
baseline, already to pass pageup/pagedown correctly to apps.
Effectively, with this change "journalctl -e" run inside a
"systemd-nspawn" terminal will now run a pager where pageup/pagedown
works, which is quite an improvement of usability for containers.
Lennart Poettering [Wed, 7 Jan 2015 21:51:48 +0000 (22:51 +0100)]
bus-util: fix error number output when waiting for job
Lennart Poettering [Wed, 7 Jan 2015 21:19:59 +0000 (22:19 +0100)]
update TODO
Lennart Poettering [Wed, 7 Jan 2015 21:19:02 +0000 (22:19 +0100)]
units: make resolved pull in its own .busname unit, but only on kdbus systems
The daemon requires the busname unit to operate, since it contains the
policy that allows it to acquire its service name.
Lennart Poettering [Wed, 7 Jan 2015 21:08:25 +0000 (22:08 +0100)]
service: automatically create After= dependency from services to their .busname units, if BusName= is set
Lennart Poettering [Wed, 7 Jan 2015 21:07:09 +0000 (22:07 +0100)]
conf-parse: don't accept invalid bus names as BusName= arguments in service units
Lennart Poettering [Wed, 7 Jan 2015 21:05:20 +0000 (22:05 +0100)]
conf-parse: make syntax logging functions behave more like other log functons
In particular, don't patch the error number to EINVAL if 0, and don't
negate it.
(Also, add do {} while (false) around multi-line macro)
Lennart Poettering [Wed, 7 Jan 2015 20:54:31 +0000 (21:54 +0100)]
units: improve Description= for systemd's own busname unit
Jonas Ådahl [Wed, 7 Jan 2015 08:23:37 +0000 (16:23 +0800)]
hwdb: mouse DPI data, Logitech Gaming Mouse G400
Lennart Poettering [Wed, 7 Jan 2015 19:42:14 +0000 (20:42 +0100)]
busctl: exit cleanly when the bus connection is severed
Lennart Poettering [Wed, 7 Jan 2015 19:36:23 +0000 (20:36 +0100)]
sd-bus: when we synthesize messages, initialize timestamps ourselves
Lennart Poettering [Wed, 7 Jan 2015 19:25:30 +0000 (20:25 +0100)]
sd-bus: unify how we set the sender of synthetic messages
Lennart Poettering [Wed, 7 Jan 2015 18:53:39 +0000 (19:53 +0100)]
sd-bus: make use of the newly added timestamps on kdbus kernel messages
Lennart Poettering [Wed, 7 Jan 2015 18:29:14 +0000 (19:29 +0100)]
sd-bus: always catch name requests for the special names "org.freedesktop.DBus" and "org.freedesktop.DBus.Local" and refuse them
Lennart Poettering [Wed, 7 Jan 2015 18:18:04 +0000 (19:18 +0100)]
update TODO
Lennart Poettering [Wed, 7 Jan 2015 18:13:48 +0000 (19:13 +0100)]
machinectl: prettify "machinectl list" output
Michael Biebl [Fri, 28 Nov 2014 05:04:48 +0000 (06:04 +0100)]
sysv-generator: initialize units before use to ensure correct ordering
The original loop called fix_order() on each service immediately after
loading it, but fix_order() would reference other units which were not
loaded yet.
This resulted in bogus and unnecessary orderings based on the static
start priorities.
Therefore call load_sysv() for every init script when traversing them in
enumerate_sysv(). This ensures that all units are loaded when
fix_order() is called.
Bug-Debian: https://bugs.debian.org/771118
Lennart Poettering [Wed, 7 Jan 2015 17:00:38 +0000 (18:00 +0100)]
update TODO
Lennart Poettering [Wed, 7 Jan 2015 16:40:10 +0000 (17:40 +0100)]
man: document nss-mymachines
Lennart Poettering [Wed, 7 Jan 2015 16:19:46 +0000 (17:19 +0100)]
man: add an alias to libnss_myhostname.so2 for nss-myhostname
The module appears under the name "libnss_myhostname.so.2" in the file
system, hence let's link it up under that name.
Lennart Poettering [Wed, 7 Jan 2015 16:14:04 +0000 (17:14 +0100)]
man: rework nss-myhostname man page
Remove a number of incorrect links, and explain that "localhost" and
"gateway" are now resolved by it, too.
Lennart Poettering [Wed, 7 Jan 2015 13:49:27 +0000 (14:49 +0100)]
Update TODO
Lennart Poettering [Wed, 7 Jan 2015 13:46:45 +0000 (14:46 +0100)]
ptyfwd: simplify how we handle vhangups a bit
Lennart Poettering [Wed, 7 Jan 2015 13:43:10 +0000 (14:43 +0100)]
btrfs-util: rework how we iterate through the results of the TREE_SEARCH results
Let's introduce some syntactic sugar with iteration macros, and add
correct key increment calls.
Michael Biebl [Mon, 5 Jan 2015 08:49:44 +0000 (09:49 +0100)]
sysv-generator: handle Provides: for non-virtual facility names
The list of provided facility names as specified via Provides: in the
LSB header was originally implemented by adding those facilities to the
Names= property via unit_add_name().
In commit
95ed3294c632f5606327149f10cef1eb34422862 the internal SysV
support was replaced by a generator and support for parsing the Names=
option had been removed from the unit file parsing in v186.
As a result, Provides: for non-virtual facility was dropped when
introducing the sysv-generator.
Since quite a few SysV init scripts still use that functionality (at
least in distros like Debian which have a large body of SysV init
scripts), add back support by making those facility names available via
symlinks to the unit filename to ensure correct orderings between
SysV init scripts which use those facility names.
Bug-Debian: https://bugs.debian.org/774335
Lennart Poettering [Wed, 7 Jan 2015 02:08:29 +0000 (03:08 +0100)]
update TODO
Lennart Poettering [Wed, 7 Jan 2015 02:08:00 +0000 (03:08 +0100)]
machinectl: make sure that "machinectl login" exits immediately when the machine it is connected to dies
Lennart Poettering [Wed, 7 Jan 2015 01:14:14 +0000 (02:14 +0100)]
util: make use of kcmp() to compare fds, if it is available
Lennart Poettering [Wed, 7 Jan 2015 00:32:13 +0000 (01:32 +0100)]
util: don't fail recursive bind mounting if we cannot read the mount flags from an obstructed mounted
Lennart Poettering [Wed, 7 Jan 2015 00:18:13 +0000 (01:18 +0100)]
core: implement serialization/deserialization of fd store elements
Lennart Poettering [Tue, 6 Jan 2015 19:33:46 +0000 (20:33 +0100)]
tmpfiles: make gcc shut up
Lennart Poettering [Tue, 6 Jan 2015 19:27:29 +0000 (20:27 +0100)]
journal: consider file deletion errors a reason for rotation
Lennart Poettering [Tue, 6 Jan 2015 18:51:03 +0000 (19:51 +0100)]
journald: whenever we rotate a file, btrfs defrag it
Our write pattern is quite awful for CoW file systems (btrfs...), as we
keep updating file parts in the beginning of the file. This results in
fragmented journal files. Hence: when rotating files, defragment them,
since at that point we know that no further write accesses will be made.
Lennart Poettering [Tue, 6 Jan 2015 18:50:52 +0000 (19:50 +0100)]
Update TODO
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jan 2015 14:53:12 +0000 (09:53 -0500)]
tmpfiles: finish with EXIT_FAILURE if anything failed
Return value is successful only if everything succeeded.
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jan 2015 05:29:40 +0000 (00:29 -0500)]
tree-wide: remove unnecessary LOG_PRI
LOG_DEBUG is already a log level, there is no need to use LOG_PRI which
is for filtering out the facility.
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jan 2015 05:26:26 +0000 (00:26 -0500)]
journal-upload: enable curl debug output conditionally
https://bugs.freedesktop.org/show_bug.cgi?id=86464
Gabor Kelemen [Fri, 2 Jan 2015 22:02:16 +0000 (23:02 +0100)]
po: Initial Hungarian translation
https://bugs.freedesktop.org/show_bug.cgi?id=87982
Chris Atkinson [Thu, 1 Jan 2015 21:35:34 +0000 (16:35 -0500)]
man: clarify path escaping and reference systemd-escape
This patch adds more detail to the description of how path escaping
operates and provides a pointer to the systemd-escape program. Either
would serve to answer the question raised in the bug report, so
hopefully this will allow it to be closed.
https://bugs.freedesktop.org/show_bug.cgi?id=87688
Lennart Poettering [Tue, 6 Jan 2015 02:16:07 +0000 (03:16 +0100)]
build-sys: add two more missing makefile links
Lennart Poettering [Mon, 5 Jan 2015 23:31:38 +0000 (00:31 +0100)]
machined: simplification
Lennart Poettering [Mon, 5 Jan 2015 23:30:25 +0000 (00:30 +0100)]
journald: allow restarting journald without losing stream connections
Making use of the fd storage capability of the previous commit, allow
restarting journald by serilizing stream state to /run, and pushing open
fds to PID 1.
Lennart Poettering [Mon, 5 Jan 2015 23:26:25 +0000 (00:26 +0100)]
core: add new logic for services to store file descriptors in PID 1
With this change it is possible to send file descriptors to PID 1, via
sd_pid_notify_with_fds() which PID 1 will store individually for each
service, and pass via the usual fd passing logic on next invocation.
This is useful for enable daemon reload schemes where daemons serialize
their state to /run, push their fds into PID 1 and terminate, restoring
their state on next start from the data in /run and passed in from PID
1.
The fds are kept by PID 1 as long as no POLLHUP or POLLERR is seen on
them, and the service they belong to are either not dead or failed, or
have a job queued.
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jan 2015 00:03:08 +0000 (19:03 -0500)]
cgroup: memory limits on / are not supported
Zbigniew Jędrzejewski-Szmek [Tue, 6 Jan 2015 00:03:23 +0000 (19:03 -0500)]
cgroup: fix error message
systemd[1]: Failed to set memory.limit_in_bytes on : Invalid argument
Zbigniew Jędrzejewski-Szmek [Thu, 1 Jan 2015 03:40:41 +0000 (04:40 +0100)]
journal: call connect() with dropped privileges
When systemd starts a service, it first opened /run/systemd/journal/stdout
socket, and only later switched to the right user.group (if they are
specified). Later on, journald looked at the credentials, and saw
root.root, because credentials are stored at the time the socket is
opened. As a result, all messages passed over _TRANSPORT=stdout were
logged with _UID=0, _GID=0.
Drop real uid and gid temporarily to fix the issue.
Lennart Poettering [Mon, 5 Jan 2015 16:22:10 +0000 (17:22 +0100)]
core: rework counting of running jobs
Let's unify the code that counts the running jobs a bit, in order to
make sure we are less likely to miss one.
This is related to this bug:
https://bugs.freedesktop.org/show_bug.cgi?id=87349
However, it probably won't fix it fully, and I cannot reproduce the issue.
The change also adds an explicit assert change when the counter is off.
Josef Andersson [Mon, 5 Jan 2015 16:38:54 +0000 (11:38 -0500)]
po: add Swedish translation
https://bugs.freedesktop.org/show_bug.cgi?id=88052
Ivan Shapovalov [Fri, 19 Dec 2014 14:08:07 +0000 (17:08 +0300)]
path-lookup, systemctl: export lookup_paths_init_from_scope() from shared/install.c and use it
Filipe Brandenburger [Mon, 29 Dec 2014 23:22:33 +0000 (15:22 -0800)]
machine: add reference to machine-dbus.h to Makefile.am
Commit
003dffde2c1b93 ("machined: Move image discovery logic into src/shared,
so that we can make use of it from nspawn") moved some definitions from
machine.h to a new machine-dbus.h, but did not include it in Makefile.am
Tested that `make distcheck` works after this fix.
Lennart Poettering [Mon, 5 Jan 2015 15:32:59 +0000 (16:32 +0100)]
tmpfiles: fix 'D' lines
https://bugs.freedesktop.org/show_bug.cgi?id=87953
Lennart Poettering [Mon, 5 Jan 2015 15:23:21 +0000 (16:23 +0100)]
nss-myhostname: always will in canonical hostname field when resolving addresses to hostnames
https://bugs.freedesktop.org/show_bug.cgi?id=87634
Lukasz Skalski [Mon, 5 Jan 2015 13:45:55 +0000 (14:45 +0100)]
bus-proxyd: don't allow to acquire org.freedesktop.DBus name
Michael Biebl [Mon, 5 Jan 2015 13:12:47 +0000 (14:12 +0100)]
core: fix typo in log message
Lennart Poettering [Mon, 5 Jan 2015 12:46:36 +0000 (13:46 +0100)]
machinectl: remove spurious newline
Daniele Medri [Mon, 5 Jan 2015 12:46:18 +0000 (13:46 +0100)]
po: update Italian translation
Daniel Mack [Mon, 5 Jan 2015 12:41:30 +0000 (13:41 +0100)]
sd-bus: sync kdbus.h
Catch up with latest changes in kdbus.ko:
* Signals can be sent as unicast now, hence they need to be marked as
such with the KDBUS_MSG_SIGNAL in the message flags.
* Follow ioctl number change for KDBUS_CMD_FREE
Topi Miettinen [Sun, 4 Jan 2015 18:51:17 +0000 (20:51 +0200)]
util: Do not clear parent mount flags when setting up namespaces
When setting up a namespace, mount flags like noexec, nosuid and
nodev are cleared, so the mounts always have exec, suid and dev
flags enabled.
Copy source directory mount flags to target mount when remounting
the bind mounts.
Lennart Poettering [Mon, 5 Jan 2015 12:19:55 +0000 (13:19 +0100)]
udevadm,..: make --help output of udev tools more like the output of the various other tools
Lennart Poettering [Mon, 5 Jan 2015 11:35:08 +0000 (12:35 +0100)]
fstab-generator: use more appropriate checks for swap and device availability
We always should use the same checks when deciding whether swap support
and mounting of devices is supported. Hence, let's make
fstab-generator's logic more similar to the usual logic we follow:
a) Look for /proc/swaps and no container support before activating
swaps.
b) Look for /sys being writable befire supporting device mounts.
Torstein Husebø [Mon, 5 Jan 2015 08:55:11 +0000 (09:55 +0100)]
libsystemd-network: fix typo in lldp
Colin Walters [Thu, 1 Jan 2015 19:57:08 +0000 (14:57 -0500)]
util: Fix signedness error in lines(), match implementations
Regression introduced by
ed757c0cb03eef50e8d9aeb4682401c3e9486f0b
Mirror the implementation of columns(), since the fd_columns()
functions returns a negative integer for errors.
Also fix columns() to return the unsigned variable instead of the
signed intermediary (they're the same, but better to be explicit).
Lennart Poettering [Mon, 5 Jan 2015 01:58:04 +0000 (02:58 +0100)]
update TODO