Commit graph

2519 commits

Author SHA1 Message Date
Vladimir 'phcoder' Serbinenko
e35e46fce1 * grub-core/term/ieee1275/ofconsole.c (put): Correct prototype.
(readkey): Likewise.
2010-08-25 22:32:17 +02:00
BVK Chaitanya
8ecbb72dee Multiple variable names support to "export" command.
* normal/context.c (grub_cmd_export): "export" command supports
	multiple variable names.
2010-08-25 18:50:41 +05:30
BVK Chaitanya
d24c6190ae add changelog 2010-08-25 18:34:20 +05:30
Samuel Thibault
04ddcc6a88 2010-08-23 Samuel Thibault <samuel.thibault@ens-lyon.org>
* util/grub.d/30_os-prober.in: Fix conversion from grub-probe
	--target=drive output to Mach device name.
2010-08-23 22:41:14 +02:00
BVK Chaitanya
0c8b61d8e4 automake based build system for grub 2010-08-23 23:26:24 +05:30
BVK Chaitanya
645586e686 Replace --enable-grub-emu-modules with grub-emu-lite.
* kern/emu/cache.S: New file.  Wrapper for $target_cpu specific
	cache.S.

	* include/grub/emu/misc.h (grub_emu_init): New prototype.
	* kern/emu/full.c: New file. For grub-emu specific initialization.
	* kern/emu/lite.c: New file. For grub-emu-lite initialization.
	* kern/emu/main.c: Call initialization function grub_emu_init.

	* Makefile.in: Include grub-emu-lite in install.
	* commands/parttool.c: Use grub_no_autoload to differentiate
	between grub-emu and grub-emu-lite.
	* include/grub/misc.h: New variable grub_no_autoload.

	* conf/any-emu.rmk: New rules for grub-emu-lite.
	* configure.ac: Remove --enable-grub-emu-modules.
	* genmk.rb: Cleanup unnecessary rules.
	* include/grub/dl.h: Remove GRUB_NO_MODULES macro.

	* normal/main.c: Don't load list files on grub-emu-lite.
	* util/misc.c (grub_arch_sync_caches): Removed.
2010-08-23 23:06:29 +05:30
Colin Watson
f86a4030ed * kern/mips/startup.S (grub_prefix): Update comment to refer to
grub-mkimage rather than grub-mkelfimage.
* kern/powerpc/ieee1275/startup.S (grub_prefix): Likewise.
2010-08-23 12:55:47 +01:00
Vladimir 'phcoder' Serbinenko
0677694455 * term/at_keyboard.c (grub_at_keyboard_getkey_noblock): Don't discard
a key after CapsLock or NumLock. It's just a qemu bug.
2010-08-22 17:10:39 +02:00
Vladimir 'phcoder' Serbinenko
df26241939 * include/grub/usb.h (grub_usb_device): Add 'data' field back. It's
needed by libusb wrapper.
2010-08-21 02:09:16 +02:00
Samuel Thibault
b40ea81bc7 2010-08-21 Samuel Thibault <samuel.thibault@ens-lyon.org>
* docs/grub.texi (GNU/Hurd): Document booting GNU/Hurd.
2010-08-21 01:36:02 +02:00
Vladimir 'phcoder' Serbinenko
dee5057594 * loader/multiboot.c (grub_cmd_module): Don't unzip module if
--nounzip is passed.
2010-08-21 00:57:12 +02:00
Vladimir 'phcoder' Serbinenko
05a765c88b USB hotunplugging and USB serial support.
* bus/usb/ohci.c (grub_ohci_transfer): Fill *actual and respect timeout.
	* bus/usb/uhci.c (grub_free_queue): Compute *actual.
	(grub_uhci_transfer): Respect timeout and set *actual.
	* bus/usb/usb.c (grub_usb_device_initialize): Correctly skip fields of
	non-standard length.
	(grub_usb_device_attach): Autoload modules.
	(GRUB_MOD_INIT): Set grub_term_poll_usb.
	(GRUB_MOD_FINI): Unset grub_term_poll_usb.
	* bus/usb/usbhub.c (grub_usb_hub): Replace speed with devices. All
	users updated.
	(grub_usb_add_hub): Fill nports and children.
	(attach_root_port): Receive hub instead of controller.
	All users updated. Fill hub->devices.
	(grub_usb_root_hub): Allocate hub->devices.
	(detach_device): New function.
	(poll_nonroot_hub): Fill children and detach devices.
	* bus/usb/usbtrans.c (grub_usb_bulk_readwrite): Accept timeout and
	actual arguments. All users updated.
	(grub_usb_bulk_read_extended): New function.
	* bus/usb/serial/common.c: New file.
	* bus/usb/serial/ftdi.c: Likewise.
	* bus/usb/serial/pl2303.c: Likewise.
	* commands/terminal.c (handle_command): Support wildcard.
	* commands/usbtest.c: Output "Unknown" instead of empty string.
	* conf/any-emu.rmk (pkglib_MODULES): Add usbserial_common.mod.
	(usbserial_common_mod_SOURCES): New variable.
	(usbserial_common_mod_CFLAGS): Likewise.
	(usbserial_common_mod_LDFLAGS): Likewise.
	(pkglib_MODULES): Add usbserial_pl2303.mod.
	(usbserial_pl2303_mod_SOURCES): New variable.
	(usbserial_pl2303_mod_CFLAGS): Likewise.
	(usbserial_pl2303_mod_LDFLAGS): Likewise.
	(pkglib_MODULES): Add usbserial_ftdi.mod.
	(usbserial_ftdi_mod_SOURCES): New variable.
	(usbserial_ftdi_mod_CFLAGS): Likewise.
	(usbserial_ftdi_mod_LDFLAGS): Likewise.
	(pkglib_MODULES): Add serial.mod.
	(serial_mod_SOURCES): New variable.
	(serial_mod_CFLAGS): Likewise.
	(serial_mod_LDFLAGS): Likewise.
	* conf/i386-pc.rmk: Likewise.
	* conf/mips-yeeloong.rmk: Likewise.
	* conf/i386.rmk (serial_mod_SOURCES): Add term/ns8250.c.
	* conf/mips-yeeloong.rmk (kernel_img_SOURCES): Likewise.
	* disk/usbms.c (first_available_slot): New variable.
	(grub_usbms_attach): Don't reuse free slots due to potential cache
	problems.
	* include/grub/serial.h: Moved to ..
	* include/grub/ns8250.h: ...this.
	* include/grub/serial.h: New file.
	* include/grub/term.h (grub_term_poll_usb): New variable.
	* include/grub/terminfo.h (grub_terminfo_input_state): Pass term to
	readkey. All users updated.
	(grub_terminfo_output_state): Pass term to put.
	* include/grub/usb.h (GRUB_USB_REQTYPE): New enum.
	(grub_usb_controller_dev): Add timeout and actual arguments to
	transfer. All users updated.
	(grub_usb_interface): New field detach_data.
	(grub_usb_device): New fields children and nports.
	(grub_usb_ep_type_t): New type.
	(grub_usb_get_ep_type): New function.
	(grub_usb_bulk_read_extended): Likewise.
	* include/grub/usbdesc.h (grub_usb_desc): New type.
	* include/grub/usbserial.h: New file.
	* include/grub/usbtrans.h (grub_usb_transaction): New field preceding.
	* kern/term.c (grub_term_poll_usb): New variable.
	(grub_getkey): Call grub_term_poll_usb if set.
	(grub_checkkey): Likewise.
	(grub_getkeystatus): Likewise.
	* term/serial.c: Moved controller-specific parts to ...
	* term/ns8250.c: ... here.
	* term/serial.c: Mostly rewritten.
	* term/usb_keyboard.c: Reorganised to use GET_REPORT only on attaching
	according to spec.
2010-08-20 21:34:52 +02:00
Vladimir 'phcoder' Serbinenko
fb1d7b7975 Add ChangeLog 2010-08-20 21:26:27 +02:00
Robert Millan
21a313dedc 2010-08-20 Robert Millan <rmh@gnu.org>
Make kFreeBSD code more generic to support ext2fs as root, ufs as
	a separate module and maybe other interesting combinations.
	
	* util/grub.d/10_kfreebsd.in (load_kfreebsd_module): New function.
	(kfreebsd_entry): Use load_kfreebsd_module() to load modules.
	(kfreebsd_entry): Add generic filesystem module load routine.
	Map GRUB `ext2' to kFreeBSD `ext2fs'.
2010-08-20 16:36:07 +02:00
Colin Watson
63c734a63e * commands/i386/pc/sendkey.c (keysym_table): Rename "numlock" to
"numcenter" (I misunderstood the purpose of this entry).
* docs/grub.texi (sendkey): Likewise.
2010-08-20 00:15:23 +01:00
Colin Watson
c4d1654256 * commands/i386/pc/sendkey.c (options): Remove "keep" from all
status flag options; simply omitting the option is equivalent and
simpler.  Rename "wait" to "pause".  Rename "sysreq" to "sysrq".
(keysym_table): Rename "num5numlock" to "numlock".
(grub_cmd_sendkey): Reinitialise `andmask' and `ormask', so that we
can uniformly say that only the last of multiple `sendkey'
invocations has any effect.
* docs/grub.texi (sendkey): New section.
2010-08-20 00:05:14 +01:00
Colin Watson
93541d660d * commands/i386/pc/sendkey.c (options): Fix three typos. 2010-08-19 21:53:50 +01:00
Vladimir 'phcoder' Serbinenko
b4ece5e11e Implement sendkey support.
* commands/i386/pc/sendkey.c: New file.
	* conf/i386-pc.rmk (pkglib_MODULES): Add sendkey.mod.
	(sendkey_mod_SOURCES): New variable.
	(sendkey_mod_CFLAGS): Likewise.
	(sendkey_mod_LDFLAGS): Likewise.
2010-08-19 21:03:14 +02:00
Colin Watson
51f1f5afab * configure.ac: Move AM_INIT_AUTOMAKE after AC_CANONICAL_TARGET to
fix warnings from Autoconf.
2010-08-18 11:15:08 +01:00
Colin Watson
9da94e0576 * acinclude.m4 (grub_ASM_USCORE): Use a more accurate grep pattern,
to avoid false positives with some assemblers that output things
like "someprefix_func" as part of their output.
2010-08-18 11:08:00 +01:00
Robert Millan
729a0f2e0c 2010-08-15 Robert Millan <rmh@gnu.org>
* kern/emu/misc.c (grub_get_libzfs_handle): Handle libzfs_init()
	errors.
	* kern/emu/getroot.c (find_root_device_from_libzfs): Handle
	grub_get_libzfs_handle() errors.
2010-08-15 22:48:23 +02:00
Robert Millan
f3710e088c 2010-08-14 Robert Millan <rmh@gnu.org>
* kern/emu/misc.c (grub_find_zpool_from_dir): Abort function if
	filesystem is not ZFS.
2010-08-14 16:53:25 +02:00
BVK Chaitanya
7a3c13dea5 Fix for misspelled color names defaulting to black/black (bug
reported by Doug Nazar)

	* include/grub/normal.h (grub_parse_color_name_pair): Add return
	status to prototype.
	* normal/color.c (grub_parse_color_name_pair): Return failure
	status.
	(grub_env_write_color_normal): Ignore bad color names.
	(grub_env_write_color_highlight): Likewise.
	* normal/main.c (GRUB_MOD_INIT): Set default color names.
2010-08-12 20:52:42 +05:30
BVK Chaitanya
ab8ba50d75 "shift" command support to GRUB script.
* include/grub/script_sh.h (grub_script_shift): New prototype.
	* script/execute.c (grub_script_shift): New function.
	* script/main.c (grub_script_init): Register shift command.
	(grub_script_fini): Unregister shift command.
	* util/grub-script-check.c (grub_script_cmd_shift): New function.

	* tests/grub_script_shift.in: New testcase.
	* conf/tests.rmk: Rules for new testcase.
2010-08-12 12:07:27 +05:30
BVK Chaitanya
4d61999e33 "continue" command support to GRUB script.
* script/execute.c (grub_script_execute_cmdwhile): Continue support.
	(grub_script_break): Continue support.
	* script/main.c (grub_script_init): Register continue command.
	(grub_script_fini): Unregister continue command.

	* tests/grub_script_continue.in: New testcase.
	* conf/tests.rmk: Rules for new testcase.
2010-08-12 11:48:21 +05:30
BVK Chaitanya
4df51e0007 "break" command support to GRUB script.
* conf/common.rmk: Rule updates to grub-script-check.
	* include/grub/misc.h (grub_min): New function.
	* include/grub/script_sh.h (grub_script_init): New prototype.
	(grub_script_fini): New prototype.
	(grub_script_break): New prototype.
	* script/main.c (grub_script_init): New function.
	(grub_script_fini): New function.
	* script/execute.c (grub_script_break): New function.
	* normal/main.c: Calls to grub_script_{init,fini}.
	* util/grub-script-check.c (grub_script_break): New function.

	* tests/grub_script_break.in: New testcase.
	* conf/tests.rmk: Rules for new test case.
2010-08-12 09:35:15 +05:30
BVK Chaitanya
f12c842082 Function parameters support to GRUB script.
* script/yylex.l (VARIABLE): Regular expression update.
	* script/function.c (grub_script_function_call): Moved ...
	* script/execute.c (grub_script_function_call): ... to here.
	(grub_script_execute_arglist_to_argv): Removed.
	(grub_script_arglist_to_argv): New function.
	* script/argv.c: New file.
	(grub_script_argv_free): New function.
	(grub_script_argv_next): Likewise.
	(grub_script_argv_append): Likewise.
	(grub_script_argv_split_append): Likewise.
	* include/grub/script_sh.h (grub_script_argv): New struct.
	(grub_script_argv_free): New function.
	(grub_script_argv_next): Likewise.
	(grub_script_argv_append): Likewise.
	(grub_script_argv_split_append): Likewise.

	* conf/common.rmk (normal.mod): New source script/argv.c.

	* tests/grub_script_echo1.in: More tests.
	* tests/grub_script_vars1.in: Likewise.
	* tests/grub_script_functions.in: New test case.
	* conf/tests.rmk: Rules for new testcase.
2010-08-12 09:20:58 +05:30
BVK Chaitanya
8022b74825 Remove grub_script_cmdblock struct.
* include/grub/script_sh.h: Remove grub_script_cmdblock.
	* script/parser.y: Likewise.
	* script/execute.c: Rename cmdblock suffix to cmdlist.
	* script/script.c: Likewise.
	* util/grub-script-check.c: Likewise.
2010-08-12 09:04:37 +05:30
Yves Blusseau
79a6ba6101 2010-08-11 Yves Blusseau <blusseau@zetam.org>
* .bzrignore: add grub-macho2img
2010-08-11 13:24:37 +02:00
Vladimir 'phcoder' Serbinenko
d04b9414a8 * kern/i386/qemu/init.c (grub_qemu_init_cirrus): Fix compilation error. 2010-08-11 04:25:56 +02:00
Vladimir 'phcoder' Serbinenko
f947ab49b0 Remove the dump of sm712 initialisation sequence.
* include/grub/pci.h (GRUB_PCI_CLASS_SUBCLASS_VGA): New const.
	* include/grub/vga.h (GRUB_VGA_IO_ARX_READ): New register.
	(GRUB_VGA_IO_MISC_WRITE): Likewise.
	(GRUB_VGA_CR_*): Added many registers.
	(GRUB_VGA_SR_*): Likewise.
	(GRUB_VGA_GR_*): Likewise.
	(grub_vga_write_arx): New function.
	(grub_video_hw_config): New struct.
	(grub_vga_set_geometry): New function.
	* kern/i386/qemu/init.c (load_palette): Use grub_vga_write_arx and
	GRUB_PCI_CLASS_SUBCLASS_VGA.
	* video/cirrus.c (grub_video_cirrus_setup): Use grub_vga_set_geometry.
	* video/sm712.c (grub_sm712_write_reg): New function
	(grub_sm712_read_reg): Likewise.
	(grub_sm712_sr_write): Likewise.
	(grub_sm712_gr_write): Likewise.
	(grub_sm712_cr_write): Likewise.
	(grub_sm712_write_arx): Likewise.
	(grub_sm712_cr_shadow_write): Likewise.
	(grub_sm712_write_dda_lookup): Likewise.
	(grub_video_sm712_setup): Initialise the video rather then
	blindly replay the dump.
	(main) [TEST]: Add a routine to be able to compile as standalone for
	tests.
	* video/sm712_init.c (sm712_init): Removed.
	(sm712_sr_seq1): New array.
	(sm712_sr_seq2): Likewise.
2010-08-11 04:18:07 +02:00
Vladimir 'phcoder' Serbinenko
f0206638bf * include/grub/vga.h: Add missing grub/pci.h include. 2010-08-11 04:00:06 +02:00
Yves Blusseau
2764da3ba2 2010-08-10 Yves Blusseau <blusseau@zetam.org>
* util/grub-macho2img.c (main): fix typo
2010-08-10 16:32:48 +02:00
Vladimir 'phcoder' Serbinenko
cf0c775ed4 * include/grub/vga.h (grub_vga_gr_write): Add GRUB_MACHINE_PCI_IO_BASE.
(grub_vga_gr_read): Likewise.
	(grub_vga_cr_write): Likewise.
	(grub_vga_cr_read): Likewise.
	(grub_vga_sr_write): Likewise.
	(grub_vga_sr_read): Likewise.
	(grub_vga_palette_read): Likewise.
	(grub_vga_palette_write): Likewise.
	* video/sm712.c (GRUB_SM712_REG_BASE): New definition.
	(grub_sm712_sr_read): New function.
	(grub_video_sm712_setup): Use grub_vga_sr_write and grub_sm712_sr_read.
	* video/sm712_init.c (sm712_init): Substract GRUB_MACHINE_PCI_IO_BASE.
2010-08-10 13:43:43 +02:00
Robert Millan
07f360e92d 2010-08-09 Robert Millan <rmh@gnu.org>
* kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Filter
	out unused variables on non-ZFS build.
2010-08-09 17:44:24 +02:00
Robert Millan
346c207240 2010-08-08 Robert Millan <rmh@gnu.org>
Fix path generation for sub-filesystems in ZFS.
	
	* kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Add
	missing slash.
2010-08-09 00:11:19 +02:00
Robert Millan
7117542069 2010-08-08 Robert Millan <rmh@gnu.org>
* util/grub-fstest.c (read_file, cmd_cmp): Improve error message.
2010-08-08 22:47:32 +02:00
Robert Millan
0d8286f328 2010-08-08 Robert Millan <rmh@gnu.org>
* util/grub.d/10_kfreebsd.in: When files required for ZFS do not
	exist, issue a proper error message (rely on `ls' for translated
	strings).
2010-08-08 16:27:58 +02:00
Robert Millan
55dd292477 2010-08-08 Robert Millan <rmh@gnu.org>
Fix grub-probe invocation.
	
	* util/grub.d/10_kfreebsd.in: s/label/fs_label/g.
2010-08-08 15:45:33 +02:00
Robert Millan
d3dd9e80f6 2010-08-04 Robert Millan <rmh@gnu.org>
* configure.ac: Remove checks for getfsstat() and getmntany().
	Add checks for `<sys/param.h>' and `<sys/mount.h>'.
	* kern/emu/misc.c [HAVE_GETMNTANY]: Remove `<sys/mnttab.h>'.
	[HAVE_SYS_PARAM_H]: Include `<sys/param.h>'.
	[HAVE_SYS_MOUNT_H]: Include `<sys/mount.h>'.
	[HAVE_LIBZFS && HAVE_LIBNVPAIR] (find_mount_point_from_dir): Remove
	function.
	(grub_find_zpool_from_dir): Use statfs() instead of indirect matching
	via find_mount_point_from_dir() and getfsstat() / getmntany().
2010-08-04 14:45:58 +02:00
Robert Millan
0de22aa997 2010-08-04 Robert Millan <rmh@gnu.org>
* include/grub/emu/misc.h (grub_find_mount_point_from_dir)
	(grub_find_zpool_from_mount_point): Merge into ...
	(grub_find_zpool_from_dir): ... this.
	* kern/emu/misc.c: Likewise.
	
	* kern/emu/misc.c
	(grub_make_system_path_relative_to_its_root): Replace
	grub_find_mount_point_from_dir() / grub_find_zpool_from_mount_point()
	with grub_find_zpool_from_dir().
	* kern/emu/getroot.c (find_root_device_from_libzfs): Likewise.
2010-08-04 13:29:13 +02:00
Robert Millan
62858144fe 2010-08-04 Robert Millan <rmh@gnu.org>
Support OpenSolaris in ZFS device resolution.
	
	* configure.ac: Check for getmntany().
	* kern/emu/misc.c [HAVE_GETMNTANY]: Include `<sys/mnttab.h>'.
	[HAVE_GETMNTANY] (grub_find_zpool_from_mount_point): Add OpenSolaris
	support.
2010-08-04 00:15:29 +02:00
Robert Millan
9dd6fd50b4 2010-08-03 Robert Millan <rmh@gnu.org>
Fix grub-emu build.
	
	* include/grub/util/misc.h: Move `<grub/util/libzfs.h>' to ...
	* include/grub/emu/misc.h: ... here.
	
	* include/grub/util/misc.h (grub_get_libzfs_handle): Move function ...
	* include/grub/emu/misc.h (grub_get_libzfs_handle): ... here.
	
	* util/misc.c: Remove `<grub/util/libzfs.h>'.
	[HAVE_LIBZFS] (libzfs_handle, fini_libzfs)
	(grub_get_libzfs_handle): Move to ...
	* kern/emu/misc.c [HAVE_LIBZFS] (__libzfs_handle, fini_libzfs)
	(grub_get_libzfs_handle): ... here.
2010-08-03 23:51:48 +02:00
BVK Chaitanya
c9f7ff97cf * script/execute.c (grub_script_execute_cmdline): Check for NULL
as command name case.
2010-08-03 11:56:36 +05:30
Colin Watson
a870a783be * disk/raid.c (insert_array): Select unique numbers for named arrays
as well, for use as keys in the disk cache.
2010-08-02 09:51:23 -05:00
Robert Millan
c7db243b92 2010-08-01 Robert Millan <rmh@gnu.org>
* util/grub.d/10_kfreebsd.in: Initialize ${kfreebsd_device} as the
	kFreeBSD device name, except on ZFS where the filesystem label is
	used.
	(kfreebsd_entry): On ZFS root, load `opensolaris.ko', `zfs.ko' and
	`/boot/zfs/zpool.cache'.
	Set mountfrom kernel variable using ${kfreebsd_device}.
2010-08-01 23:21:09 +02:00
Robert Millan
f7abdefbdd 2010-08-01 Robert Millan <rmh@gnu.org>
Make it even harder to use uninitialized `libzfs_handle' (and
	make the interface a bit simpler).
	
	* include/grub/util/misc.h (grub_util_init_libzfs)
	(libzfs_handle): Remove.
	(grub_get_libzfs_handle): New prototype.
	
	* util/misc.c [HAVE_LIBZFS] (libzfs_handle): Add `static'
	attribute.
	(grub_util_init_libzfs): Remove.
	(grub_get_libzfs_handle): New function.
	
	* kern/emu/getroot.c (find_root_device_from_libzfs): Use
	grub_get_libzfs_handle() to obtain a libzfs handle instead of
	accessing `libzfs_handle' directly.
2010-08-01 23:12:24 +02:00
Robert Millan
c882acc031 2010-08-01 Robert Millan <rmh@gnu.org>
* include/grub/emu/misc.h (grub_find_mount_point_from_dir)
	(grub_find_zpool_from_mount_point): New function prototypes.
	
	* kern/emu/getroot.c [HAVE_GETFSSTAT]: Move `<sys/mount.h>' to ...
	* kern/emu/misc.c [HAVE_GETFSSTAT]: ... here.
	
	* kern/emu/getroot.c (find_mount_point_from_dir): Move to ...
	* kern/emu/misc.c (grub_find_mount_point_from_dir): ... this.  Remove
	`static' attribute.
	
	* kern/emu/getroot.c (find_root_device_from_libzfs): Split code for
	finding zpool from mount point into ...
	* kern/emu/misc.c (grub_find_zpool_from_mount_point): ... this.
	
	* kern/emu/misc.c (grub_make_system_path_relative_to_its_root): When
	requested path is part of a ZFS pool, use
	grub_find_zpool_from_mount_point() to detect its filesystem name,
	and generate a path with `/fsname@path' syntax.
2010-08-01 22:59:02 +02:00
Colin Watson
8bfe31d82b * include/grub/util/libzfs.h (libzfs_init): Set argument list to
(void) rather than () so that this is a proper prototype.
2010-08-01 16:41:46 -05:00
Vladimir 'phcoder' Serbinenko
553df63d76 * lib/arg.c (grub_arg_show_help): Add the necessary spacing. 2010-08-01 21:01:05 +02:00