Joachim Nilsson
2e66db3fea
helpers.c:printv() - Iterate over size of buffer
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-24 20:40:44 +02:00
Joachim Nilsson
376811c1a7
doc/config.md: Update run and task, mention pipes + redirects
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-21 22:52:48 +02:00
Joachim Nilsson
9b5f2388c1
Alpine Linux: Add LXDM service .conf
...
Enable LXDM using:
initctl enable lxdm
initctl reload
The latter command reloads all /etc/finit.d/*.conf files and starts lxdm
in runlevels 2-5.
Remember to first edit /etc/lxdm/lxdm.conf, necessary to get a session.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 15:33:56 +02:00
Joachim Nilsson
686193b701
Only load modules at bootstrap
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 14:03:56 +02:00
Joachim Nilsson
b43bca529c
Minor, fix build error
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 13:57:23 +02:00
Joachim Nilsson
545171a8b2
Minor, improve comments in parse_dynamic()
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 13:50:44 +02:00
Joachim Nilsson
d54d5b7f20
Allow kernel modules to be loaded from /etc/finit.d/*.conf
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 13:48:07 +02:00
Joachim Nilsson
e52d952ca5
Alpine: Move bootstrap services and setup from finit.conf to finit.d/*.conf
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 13:30:36 +02:00
Joachim Nilsson
633a56054b
Add support for boot[S]trap services in /etc/finit.d/*.conf
...
This patch enables support for bootstrap services in /etc/finit.d/
Please note, however, that this does not mean that all configuration
directives are now allowed in /etc/finit.d/*.conf -- the intention is
only to simplify distribution setups.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 13:21:11 +02:00
Joachim Nilsson
3eeb966f15
Alpine Linux: Simplify build instructions by referencing script
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 12:55:32 +02:00
Joachim Nilsson
d09253bdbd
Make Alpine build script executable
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 12:50:36 +02:00
Joachim Nilsson
0052793a46
Update Alpine Linux README
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 11:41:05 +02:00
Joachim Nilsson
333871caf2
Minor, reorder
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 11:40:56 +02:00
Joachim Nilsson
ef9d0c479e
Load mousedev kernel driver for Alpine installs
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 01:40:24 +02:00
Joachim Nilsson
d5cce03a76
Enable D-Bus plugin for Alpine installs
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-10 01:39:23 +02:00
Joachim Nilsson
744903d455
Alpine Linux finit.conf, clear space at end for easy script append
...
Restore original file layout somewhat, it's better if we clear the space
at the end of the file for easy `cat BOOTSTRAP.conf >>/etc/finit.conf`
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-06 08:12:44 +02:00
Joachim Nilsson
cc00be48b5
Move runlevel stanza to the end, possibly more intuitive
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 21:24:59 +02:00
Joachim Nilsson
b45a37ca47
Add simple build script for targeting Alpine
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 21:20:32 +02:00
Joachim Nilsson
f1f9ee712a
Refactor Alpine example to use /etc/finit.d/*.conf for services
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 21:15:11 +02:00
Joachim Nilsson
7c4a9ad5af
alpine: Migrate rc.local bootstrap tasks to finit.conf
...
Finit now supports pipes and redirects in run/task stanzas. Hence, we
can reduce rc.local to an example template.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 20:16:54 +02:00
Joachim Nilsson
f3a000560f
exec_runtask(): Refactor, remove GLIBC:isms to build with musl
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 20:05:22 +02:00
Joachim Nilsson
fdd13c1ae1
README: New shell redirect + pipe possibilities with task + run
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 16:35:22 +02:00
Joachim Nilsson
0585767258
README: Update tty configuration examples with noclear + nowait
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 16:35:04 +02:00
Joachim Nilsson
9e7e92b4b7
run stanzas are never caught in service_monitor()
...
A run stanza blocks operation by calling waitpid(), so it will never be
caught by the service_monitor() function. Hence, we need to clean up
any bootsrap calls after waitpid(), or at least perform a manual state
change.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 16:02:23 +02:00
Joachim Nilsson
29822ef0f7
Always collect bootstrap tasks, regardless of previous runlevel
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 16:02:01 +02:00
Joachim Nilsson
718e82bc10
svc_clean_dynamic(): Actually clean dirty services ...
...
Add missing call to svc_mark_clean() in while() loop.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 16:01:05 +02:00
Joachim Nilsson
684314db0f
Allow pipe + redirect in task/run stanzas, exec() in /bin/sh
...
This patch extends the capabilities of task and run .conf stanzas by
enabling pipes and redirects.
Example:
task [s] echo "foo" | cat >/tmp/bar
run [s] echo "$HOME" >/tmp/secret
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 16:00:49 +02:00
Joachim Nilsson
442598282f
Update Alpine Linux sample to latest Finit dev.
...
- Show progress when booting
- Use noclear + nowait on TTY's
- Update `loadkmap` args
Works on Alpine Linux 3.4 .. 3.6
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-04 07:19:12 +02:00
Joachim Nilsson
3e2b78305d
Update finit.conf tty documentation
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-01 06:45:29 +02:00
Joachim Nilsson
8eea64cebf
getty: Set $TERM environment variable if given in tty config
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-01 06:41:22 +02:00
Joachim Nilsson
b8a7cb6b93
tty-register(): Fix regression in built-in TTY baud + term parser
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-01 06:40:52 +02:00
Joachim Nilsson
529b39ebba
tty: Add 'noclear' + 'nowait' options to built-in and external tty's
...
This patch aligns the two tty configuration stanzas, thus clear and wait
are now the default for both.
tty [LVLS] <DEV> [BAUD] [noclear] [nowait] [TERM]
tty [LVLS] <CMD> <ARGS> [noclear] [nowait]
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-01 06:10:08 +02:00
Joachim Nilsson
f029ba2111
Reorder functions a bit, group run_getty*() family
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-01 05:50:50 +02:00
Joachim Nilsson
277c3dbb14
getty: Remove TTY clear from built-in getty, delegate to run_getty()
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-09-01 05:47:53 +02:00
Joachim Nilsson
f273ecc135
Fix #79 : Add 'nowait' option to tty setting, external getty
...
This patch makes it possible to disable the "Please press Enter" prompt
when using an external getty. Simply append `nowait` to the .conf entry
and Finit will spawn the getty immediately.
A future patch will add support for `noclear` as well to external getty,
as well as a change in default (=> `wait`) for the built-in getty.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-31 00:51:11 +02:00
Joachim Nilsson
2fe257b7af
getty.c: Handle Ctrl-U properly, erase line to beginning
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-30 17:19:43 +02:00
Joachim Nilsson
907595d9ed
getty.c: Ignore signals like SIGINT, SIGHUP
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-30 17:19:12 +02:00
Joachim Nilsson
55c12aa6f6
Remove developer debug message
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-30 15:08:14 +02:00
Joachim Nilsson
04891d3e5b
Update and align service descriptions in finit.conf example
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-30 15:05:31 +02:00
Joachim Nilsson
9973cd22a5
Update sample .conf files after purge of startx and user settings
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-30 15:02:39 +02:00
Joachim Nilsson
a2f4b35e4e
Fix #77 : Remove deprecated startx and user .conf settings
...
It is strongly recommended to instead use the service stanza to start
XDM/GDM, or use startx after a regular login.
Note: the `user NAME` setting was always reserved for use with startx
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-30 15:01:05 +02:00
Joachim Nilsson
1de540dd67
Update external getty TTY documentation, remove limitations
...
Also, provide an agetty example.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-30 14:47:15 +02:00
Joachim Nilsson
dec21e758a
Fix #78 : Support agetty cmd line format for external getty
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-30 14:44:10 +02:00
Joachim Nilsson
513f03b897
Merge branch 'external-getty-support'
2017-08-27 17:08:21 +02:00
Joachim Nilsson
371fb3d0d0
Add example for using an external getty
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-27 17:07:12 +02:00
Joachim Nilsson
f9f1846c8b
Document alternative tty ... config option for external getty
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-27 17:03:39 +02:00
Joachim Nilsson
f7b9b7be96
tty.c: Free memory for external getty on tty_unregister()
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-27 16:57:26 +02:00
Joachim Nilsson
74affb32d3
tty_register(): Fix parser for external getty
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-27 16:43:01 +02:00
Joachim Nilsson
675f82a6b9
run_getty2(): Minor fixes only, whitespace + cautionary _exit()
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-27 16:41:58 +02:00
Joachim Nilsson
19fcfcfef4
Initial support for external getty
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-27 15:02:55 +02:00
Joachim Nilsson
7c50d86a55
Restore pre built-in run_getty() as run_getty2()
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-27 15:01:42 +02:00
Joachim Nilsson
b629348973
Refactor TTY exec, prepare for external getty
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-27 15:00:43 +02:00
Joachim Nilsson
7c185b4575
Fix really bizarre inetd builtin example ...
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-21 21:23:51 +02:00
Joachim Nilsson
fefa6a93ca
Merge branch 'emergency-shell-improvements'
2017-08-19 20:17:31 +02:00
Joachim Nilsson
299962118a
Update debug section with info on rescue shell, issue #76
2017-08-19 20:16:44 +02:00
Joachim Nilsson
054baed134
Reap zombie processes in emergency shell mode, issue #76
...
The emergency shell is just a Finit debug mode. This patch adresses a
concern from GitHub issue #76 , with zombie processes in this mode.
Emergency shell could be further improved, e.g. informing the real Finit
process of each collected child (zombie) to be restarted if needed.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-08-15 08:09:19 +02:00
Joachim Nilsson
b20fafd9fa
tty.c: Add support for reloading a single TTY
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-14 11:03:59 +02:00
Joachim Nilsson
62081d9525
tty.c: Refactor, break out enabled check + stop/start
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-14 11:03:10 +02:00
Joachim Nilsson
100b4c70e4
tty_enabled(): Simplify, tty_exists() checks for existence
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-14 10:54:51 +02:00
Joachim Nilsson
5631849ced
Travis-CI: Update build dependency, libite --> v1.9.2
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-10 17:48:14 +02:00
Joachim Nilsson
14ee218443
Refactor, use libite (-lite) version of initscr()
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-09 16:25:22 +02:00
Joachim Nilsson
52fe525442
Update version requirement for libite, v1.9.2
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-09 16:25:01 +02:00
Joachim Nilsson
fec00377e5
Update documentation for tty .conf option
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-09 15:36:31 +02:00
Joachim Nilsson
c9ab70e30f
Update section on built-in getty, add info on noclear option
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-09 15:18:16 +02:00
Joachim Nilsson
8aef1e76c3
Follow-up to eec32e2: Support for removing TTYs at runtime
...
In commit eec32e2 support for reloading TTY configurations was added.
This patch is a follow-up to that with support for cleaning up and
removing allocated TTYs.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-09 15:05:32 +02:00
Joachim Nilsson
44f69bd575
Check if symlink with lstat(), mtime with stat()
...
With the new scheme using /etc/finit.d/available/, and symlinks from
there to the enabled directory, we need to check mtime of .conf files
using stat(), not lstat() which we need to check if .conf is a symlink.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-09 15:05:32 +02:00
Joachim Nilsson
963b736d8b
tty: Refactor, remove useless runlevel argument
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-09 15:05:32 +02:00
Joachim Nilsson
4cc3aed139
Avoid 2 sec block of Finit when stopping TTYs
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-09 15:05:32 +02:00
Joachim Nilsson
e791e3dbe9
Make silent bootup the default, use --enable-progress for old style
...
This patch disables console heading and bootup progress messages by
default. Use --enable-progress to get the old behavior back, or try
the new HOOK_BANNER and HOOK_SVC_UP to run a custom progress.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-09 15:05:32 +02:00
Joachim Nilsson
d34ee62f77
Update copyright years
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 15:32:24 +02:00
Joachim Nilsson
e48901b90f
tty: Clear tty before login: prompt by default, add 'noclear' option
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 15:31:59 +02:00
Joachim Nilsson
60f73dc952
tty.c: Refactor parsing of tty .conf stanza in tty_register()
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 15:30:51 +02:00
Joachim Nilsson
eec32e299b
Allow loading TTYs from /etc/finit.d rather than /etc/finit.conf
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 15:28:22 +02:00
Joachim Nilsson
fe362341dc
finit.conf: Remove check config, replaced by fsck over /etc/fstab
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 15:01:31 +02:00
Joachim Nilsson
8505db24b7
Refactor, rename local variables
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 12:28:52 +02:00
Joachim Nilsson
560adb2065
Remove debug message(s) from tty_fallback()
...
When the TTY fallback mechanism is enabled tty_fallback() prints this
annoying debug message whenever *any* is process is collected by PID 1:
"Not starting fallback (%d) shell, lost pid %d", fallback, lost"
This patch removes it, and a two other useless debug messages.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 11:06:28 +02:00
Joachim Nilsson
6676d4b50c
Silence service start/stop *before* launching TTYs
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 11:04:50 +02:00
Joachim Nilsson
c1bd3961cf
log_init(): If called with debug disbled set (or restore) LOG_NOTICE
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 00:11:24 +02:00
Joachim Nilsson
4fa47eaf71
log_init(): If debug mode enabled, set loglevel LOG_DEBUG
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 00:08:27 +02:00
Joachim Nilsson
e5f47024af
early_logit(): If debug mode enable, also print to stderr
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 00:07:49 +02:00
Joachim Nilsson
115b5f1ca7
Add HOOK_BANNER for plugins to override the default Finit banner()
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 00:07:21 +02:00
Joachim Nilsson
878885e2b2
Load plugins much earlier, for future banner plugin
...
This patch moves the plugin loader much earlier, making it possible to
provide a custom banner/logo in a plugin.
To facilitate this move we need to also move banner later and parsing
of the kernel cmdline earlier, right after mouting /proc.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-08 00:05:07 +02:00
Joachim Nilsson
709e4230c8
plugin: Add private method plugin_exists() to check for HOOKs
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-07 23:33:43 +02:00
Joachim Nilsson
46c5e41b68
README: Reduce indentation of code blocks, use ``` instead
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-07 23:18:06 +02:00
Joachim Nilsson
0b43d0dc70
Refactor screen_init(), preparing for migration to libite
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-07 23:00:27 +02:00
Joachim Nilsson
99f3f0291a
Makefile.am: Fix cut-and-paste error
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 21:48:16 +02:00
Joachim Nilsson
6d3d190134
reboot: Add search path to libite (-lite) headers and .so
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 21:40:46 +02:00
Joachim Nilsson
769659767c
Minor, comment fixes only
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 21:12:54 +02:00
Joachim Nilsson
99818f9ce0
Convert banner() and printv() to use new screen_init() values
...
This patch changes the traditional look of the Finit boot sequence.
Now we stick to the screen width probed by screen_init(), or max
132 chars.
Also, some minor cleanup of the currently unused print_timestamp()
method used by printv() when showing [ OK ] or [FAIL] of services
at boot.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 20:59:49 +02:00
Joachim Nilsson
be6f0de0df
Add util.c:screen_init() to probe screen size once per boot
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 20:58:43 +02:00
Joachim Nilsson
405cf4d997
initctl: Use actual terminal/screen width for table listings
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 12:55:34 +02:00
Joachim Nilsson
91480a0f02
configure: Check for termios.h, needed by screen_width()
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 12:55:10 +02:00
Joachim Nilsson
90793c71a2
util: Import screen_width() developed for the SMCRoute project
...
This patch introduces the screen_width() method from the SMCRoute
project. The code is hereby also available under MIT/X11.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 12:53:19 +02:00
Joachim Nilsson
9bcb3e5778
initctl: top:ify table headings, i.e. use captial letters
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 12:39:41 +02:00
Joachim Nilsson
c97e23bd58
initctl: Remove currently unused -d debug flag
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 12:38:22 +02:00
Joachim Nilsson
73f1b986dd
initctl: Fix regression in initctl utmp
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 12:37:59 +02:00
Joachim Nilsson
b06502b0cb
initctl: Use printheader() from libite for table headings
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-04 12:37:20 +02:00
Joachim Nilsson
c4b6fab3f3
Travis-CI: Update with latest version of libite, v1.9.1
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-03 16:46:52 +02:00
Joachim Nilsson
109b5bb9df
Update TODO, some completed and some deprecated features
...
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-03 15:16:36 +02:00
Joachim Nilsson
6f61e8e915
Remove hard-coded paths to system tools available in $PATH
...
Since at least a44daf2 both run() and run_interactive() can access all
system tools in _PATH_STDPATH. A system that uses non-standard paths,
e.g. /system/bin and /apps/bin, should update _PATH_STDPATH.
For reference, see issue #69 and PRs #70 and #72 .
Signed-off-by: Joachim Nilsson <troglobit@gmail.com >
2017-07-03 13:18:42 +02:00