Commit graph

2348 commits

Author SHA1 Message Date
Vladimir 'phcoder' Serbinenko
dc71441293 Output \n\r like it was done previously because ncurses is confused by \r\n 2009-12-27 22:35:40 +01:00
Vladimir 'phcoder' Serbinenko
f45e1a9fb7 Allocate correct size 2009-12-27 22:34:49 +01:00
Vladimir 'phcoder' Serbinenko
9c8739a456 2009-12-27 Vladimir Serbinenko <phcoder@gmail.com>
* normal/menu_text.c (grub_print_message_indented): Prevent
	past-the-end-of-array dereference.
2009-12-27 22:32:52 +01:00
Vladimir 'phcoder' Serbinenko
3851cc386e Prevent NULL dereferencing when unregistering ciphers 2009-12-27 22:29:22 +01:00
Vladimir 'phcoder' Serbinenko
3e74249c4c 2009-12-27 Vladimir Serbinenko <phcoder@gmail.com>
* video/readers/jpeg.c (GRUB_MOD_FINI (grub_cmd_jpegtest)): Rename to ..
	(GRUB_MOD_FINI (video_reader_jpeg)): ...this
2009-12-27 22:21:48 +01:00
Vladimir 'phcoder' Serbinenko
1975ecdc59 Fix include in kern/term.c 2009-12-27 17:40:36 +01:00
Vladimir 'phcoder' Serbinenko
562e438b77 Add defines for yeeloong 2009-12-27 17:21:49 +01:00
carles
64fd18edbc 2009-12-27 Carles Pina i Estany <carles@pina.cat>
* normal/cmdline.c (grub_cmdline_get): Print a space after prompt.
	* normal/main.c (grub_normal_read_line): Remove a space from the
	default prompt.
2009-12-27 00:43:21 +01:00
carles
714af9b9e4 2009-12-27 Carles Pina i Estany <carles@pina.cat>
* loader/i386/efi/linux.c (GRUB_MOD_INIT): Improve command summary.
	* loader/i386/ieee1275/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/i386/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/i386/pc/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/powerpc/ieee1275/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/sparc64/ieee1275/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/xnu.c (GRUB_MOD_INIT): Likewise.
2009-12-27 00:36:59 +01:00
Vladimir 'phcoder' Serbinenko
731ffd8773 Fix EFI compilation 2009-12-26 22:16:14 +01:00
Vladimir 'phcoder' Serbinenko
27a8ee52b4 Remove menu init hooks. They are useless 2009-12-26 16:39:16 +01:00
carles
82f3e4125f Fix two dates and one typo in ChangeLog. 2009-12-26 12:08:22 +01:00
carles
c541b01a66 2009-12-27 Carles Pina i Estany <carles@pina.cat>
* video/readers/jpeg.c (cmd): Declare.
	(grub_cmd_jpegtest): Use `grub_command_t' type.
	(GRUB_MOD_INIT): Fix arguments passed to `grub_register_command'.
	Assign to `cmd'.
	(GRUB_MOD_FINI): Use `cmd' to unregister.
	* video/readers/png.c (cmd): Declare.
	(grub_cmd_pngtest): Use `grub_command_t' type.
	(GRUB_MOD_INIT): Fix arguments passed to `grub_register_command'.
	Assign to `cmd'.
	(GRUB_MOD_FINI): Use `cmd' to unregister.
	* video/readers/tga.c (cmd): Declare.
	(grub_cmd_tgatest): Use `grub_command_t' type.
	(GRUB_MOD_INIT): Fix arguments passed to `grub_register_command'.
	Assign to `cmd'.
	(GRUB_MOD_FINI): Use `cmd' to unregister.
2009-12-26 12:06:35 +01:00
carles
864ba2bbca 2009-12-27 Carles Pina i Estany <carles@pina.cat>
* efiemu/main.c (GRUB_MOD_INIT): Fix capitalizations and/or full
	stops.
	* kern/corecmd.c (grub_register_core_commands): Likewise.
	* loader/efi/chainloader.c (GRUB_MOD_INIT): Likewise.
	* loader/i386/bsd.c (GRUB_MOD_INIT): Likewise.
	* loader/i386/efi/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/i386/ieee1275/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/i386/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/i386/pc/chainloader.c (GRUB_MOD_INIT): Likewise.
	* loader/i386/pc/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/multiboot_loader.c (GRUB_MOD_INIT): Likewise.
	* loader/powerpc/ieee1275/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/sparc64/ieee1275/linux.c (GRUB_MOD_INIT): Likewise.
	* loader/xnu.c (GRUB_MOD_INIT): Likewise.
	* mmap/mmap.c (GRUB_MOD_INIT): Likewise.
	* normal/handler.c (insert_handler): Likewise.
	* normal/main.c (GRUB_MOD_INIT): Likewise.
	* term/gfxterm.c (GRUB_MOD_INIT): Likewise.
2009-12-26 11:01:33 +01:00
carles
fdcdbb6633 2009-12-26 Carles Pina i Estany <carles@pina.cat>
* commands/help.c (grub_cmd_help): Print the command name before the
	summary.
	(GRUB_MOD_INIT): Remove command name from the summary.
	* kern/command.c (GRUB_MOD_INIT): If summary is null assign an empty
	strig as summary.
	* lib/arg.c (find_long): Print the command name before the summary.
	* commands/acpi.c (GRUB_MOD_INIT): Remove command name from the
	summary.
	* commands/blocklist.c (GRUB_MOD_INIT): Likewise.
	* commands/cat.c (GRUB_MOD_INIT): Likewise.
	* commands/cmp.c (GRUB_MOD_INIT): Likewise.
	* commands/configfile.c (GRUB_MOD_INIT): Likewise.
	* commands/crc.c (GRUB_MOD_INIT): Likewise.
	* commands/date.c (GRUB_MOD_INIT): Likewise.
	* commands/echo.c (GRUB_MOD_INIT): Likewise.
	* commands/efi/loadbios.c (GRUB_MOD_INIT): Likewise.
	* commands/gptsync.c (GRUB_MOD_INIT): Likewise.
	* commands/handler.c (GRUB_MOD_INIT): Likewise.
	* commands/hdparm.c (GRUB_MOD_INIT): Likewise.
	* commands/hexdump.c (GRUB_MOD_INIT): Likewise.
	* commands/i386/cpuid.c (GRUB_MOD_INIT): Likewise.
	* commands/i386/pc/halt.c (GRUB_MOD_INIT): Likewise.
	* commands/i386/pc/play.c (GRUB_MOD_INIT): Likewise.
	* commands/i386/pc/pxecmd.c (GRUB_MOD_INIT): Likewise.
	* commands/keystatus.c (GRUB_MOD_INIT): Likewise.
	* commands/loadenv.c (GRUB_MOD_INIT): Likewise.
	* commands/ls.c (GRUB_MOD_INIT): Likewise.
	* commands/lspci.c (GRUB_MOD_INIT): Likewise.
	* commands/memrw.c (GRUB_MOD_INIT): Likewise.
	* commands/minicmd.c (GRUB_MOD_INIT): Likewise.
	* commands/parttool.c (GRUB_MOD_INIT): Likewise.
	* commands/password.c (GRUB_MOD_INIT): Likewise.
	* commands/probe.c (GRUB_MOD_INIT): Likewise.
	* commands/read.c (GRUB_MOD_INIT): Likewise.
	* commands/search.c (GRUB_MOD_INIT): Likewise.
	* commands/sleep.c (GRUB_MOD_INIT): Likewise.
	* commands/test.c (GRUB_MOD_INIT): Likewise.
	* commands/xnu_uuid.c (GRUB_MOD_INIT): Likewise.
	* efiemu/main.c (GRUB_MOD_INIT): Likewise.
	* font/font_cmd.c (GRUB_MOD_INIT): Likewise.
	* gettext/gettext.c (GRUB_MOD_INIT): Likewise.
	* kern/corecmd.c (GRUB_MOD_INIT): Likewise.
	* lib/arg.c (GRUB_MOD_INIT): Likewise.
	* loader/efi/appleloader.c (GRUB_MOD_INIT): Likewise.
	* loader/i386/bsd.c (GRUB_MOD_INIT): Likewise.
	* loader/xnu.c (GRUB_MOD_INIT): Likewise.
	* mmap/mmap.c (GRUB_MOD_INIT): Likewise.
	* term/terminfo.c (GRUB_MOD_INIT): Likewise.
	* video/readers/jpeg.c (GRUB_MOD_INIT): Likewise.
	* video/readers/png.c (GRUB_MOD_INIT): Likewise.
	* video/readers/tga.c (GRUB_MOD_INIT): Likewise.
2009-12-26 00:50:59 +01:00
Vladimir 'phcoder' Serbinenko
9c288be27a 2009-12-25 Vladimir Serbinenko <phcoder@gmail.com>
Use search command for preliminar UUID search.

	* commands/search.c: Split into ...
	* commands/search_wrap.c: ...this
	* commands/search.c: ...and this.
	* commands/search_file.c: New file.
	* commands/search_label.c: New file.
	* commands/search_uuid.c: New file.
	* conf/any-emu.rmk (grub_emu_SOURCES): Remove commands/search.c.
	Add commands/search_wrap.c, commands/search_file.c,
	commands/search_label.c and commands/search_uuid.c.
	* conf/common.rmk (pkglib_MODULES): Remove fs_uuid.mod and fs_file.mod.
	(search_mod_SOURCES): Set to commands/search_wrap.c.
	(pkglib_MODULES): Add search_fs_file.mod, search_fs_uuid.mod and
	search_label.mod.
	(search_fs_file_mod_SOURCES): New variable.
	(search_fs_file_mod_CFLAGS): Likewise.
	(search_fs_file_mod_LDFLAGS): Likewise.
	(search_label_mod_SOURCES): Likewise.
	(search_label_mod_CFLAGS): Likewise.
	(search_label_mod_LDFLAGS): Likewise.
	(search_fs_uuid_mod_SOURCES): New variable.
	(search_fs_uuid_mod_CFLAGS): Likewise.
	(search_fs_uuid_mod_LDFLAGS): Likewise.
	(fs_file_mod_SOURCES): Removed.
	(fs_file_mod_CFLAGS): Likewise.
	(fs_file_mod_LDFLAGS): Likewise.
	(fs_uuid_mod_SOURCES): Removed.
	(fs_uuid_mod_CFLAGS): Likewise.
	(fs_uuid_mod_LDFLAGS): Likewise.
	* conf/sparc64-ieee1275.rmk (grub_install_SOURCES):
	Set to util/grub-install.in.
	* disk/fs_file.c: Removed.
	* disk/fs_uuid.c: Likewise.
	* include/grub/search.h: New file.
	* util/grub-install.in: Handle sparc64.
	Create and use load.cfg.
	* util/sparc64/ieee1275/grub-install.in: Removed.
2009-12-25 23:06:52 +01:00
Vladimir 'phcoder' Serbinenko
db9433999c 2009-12-25 Vladimir Serbinenko <phcoder@gmail.com>
* kern/i386/pc/startup.S (grub_biosdisk_get_diskinfo_int13_extensions):
	Ignore return status if CF is cleared.
	(grub_biosdisk_get_diskinfo_standard): Likewise.
2009-12-25 23:01:32 +01:00
Robert Millan
3fdae612d9 2009-12-25 Robert Millan <rmh.grub@aybabtu.com>
* term/i386/pc/at_keyboard.c
	(keyboard_controller_wait_untill_ready): New function.
	(grub_keyboard_controller_write, grub_keyboard_controller_read)
	(keyboard_controller_led): Use keyboard_controller_wait_untill_ready()
	for keyboard polling, rather than duplicate the same loop.  This
	saves a few bytes in code size.
2009-12-25 21:38:09 +00:00
Vladimir 'phcoder' Serbinenko
7ebaa2b4ff 2009-12-25 Vladimir Serbinenko <phcoder@gmail.com>
Support for (pxe[:server[:gateway]]) syntax and
	use environment variable for PXE.

	* commands/i386/pc/pxecmd.c (options): Removed.
	(print_ip): Removed.
	(grub_cmd_pxe): Removed
	(grub_cmd_pxe_unload): New function.
	* fs/i386/pc/pxe.c (grub_pxe_disk_data): New structure.
	(grub_pxe_your_ip): Made static.
	(grub_pxe_default_server_ip): Likewise.
	(grub_pxe_default_gateway_ip): Likewise.
	(grub_pxe_blksize): Likewise.
	(parse_ip): New function.
	(grub_pxe_open): Support server and gateway specification.
	(grub_pxe_close): Free disk->data.
	(grub_pxefs_open): Use disk->data.
	(grub_pxefs_read): Likewise.
	(grub_env_write_readonly): New function.
	(set_mac_env): Likewise.
	(set_env_limn_ro): Likewise.
	(parse_dhcp_vendor): Likewise.
	(grub_pxe_detect): Set the environment variables.
	(set_ip_env): New function.
	(write_ip_env): Likewise.
	(grub_env_write_pxe_default_server): Likewise.
	(grub_env_write_pxe_default_gateway): Likewise.
	(grub_env_write_pxe_blocksize): Likewise.
	(GRUB_MOD_INIT(pxe)): Set environment variables.
	* include/grub/i386/pc/pxe.h (grub_pxe_mac_addr): Rename to ...
	(grub_pxe_mac_addr_t): ... this. All users updated.
	(grub_pxe_your_ip): Removed.
	(grub_pxe_server_ip): Likewise.
	(grub_pxe_gateway_ip): Likewise.
	(grub_pxe_blksize): Likewise.
2009-12-25 22:01:06 +01:00
carles
ec5f98abda 2009-12-25 Carles Pina i Estany <carles@pina.cat>
* commands/help.c: Include `<grub/i18n.h>'.
	(grub_cmd_help): Gettextizze.
	(GRUB_MOD_INIT): Likewise.
	* commands/i386/pc/play.c: Include `<grub/i18n.h>'.
	(GRUB_MOD_INIT): Gettextizze.
	* commands/search.c: Include `<grub/i18n.h>'.
	(options): Gettextizze.
	(GRUB_MOD_INIT): Gettextizze.
	* lib/arg.c: Include `<grub/i18n.h>'.
	(help_options): Gettextizze.
	(find_long): Likewise.
	(grub_arg_show_help): Likewise.
	* normal/dyncmd.c: Include `<grub/i18n.h>'.
	(read_command_list): Gettextizze.
	* po/POTFILES: Add `commands/i386/pc/play.c', `commands/search.c',
	`commands/help.c', `lib/arg.c' and `normal/dyncmd.c'.
2009-12-25 21:51:05 +01:00
Robert Millan
2281552630 2009-12-25 Robert Millan <rmh.grub@aybabtu.com>
* include/grub/i386/at_keyboard.h (NUM_LOCK, SCROLL_LOCK): New macros.
	* term/i386/pc/at_keyboard.c (KEYBOARD_STATUS_NUM_LOCK)
	(KEYBOARD_LED_SCROLL, KEYBOARD_LED_NUM, KEYBOARD_LED_CAPS): New macros.
	(led_status): New variable.
	(keyboard_controller_led): New function.
	(grub_at_keyboard_getkey_noblock): Handle num lock and scroll lock,
	update led status for caps lock, num lock and scroll lock.
2009-12-25 20:33:41 +00:00
Robert Millan
a22008a64f Fix typo in old changelog entry 2009-12-25 20:36:42 +01:00
Felix Zielcke
0ad46fd771 2009-12-25 Felix Zielcke <fzielcke@z-51.de>
* util/hostdisk.c (open_device): Fix a comment.
2009-12-25 18:29:17 +01:00
Vladimir 'phcoder' Serbinenko
d75d75d93b Fix glitch with escape message 2009-12-25 16:53:54 +01:00
Vladimir 'phcoder' Serbinenko
6066889c88 normal_exit command 2009-12-25 16:28:31 +01:00
Vladimir 'phcoder' Serbinenko
0e76d18c5b Fix various issues in menu editor 2009-12-25 13:18:08 +01:00
Vladimir 'phcoder' Serbinenko
a999b9d965 Fix refresh in cmdline 2009-12-25 13:17:27 +01:00
Robert Millan
427d6aa453 Merge my local branch 2009-12-25 12:43:20 +01:00
Vladimir 'phcoder' Serbinenko
2e5b307c47 Make menu editor work 2009-12-25 04:12:29 +01:00
Vladimir 'phcoder' Serbinenko
33c1ed4c8d terminal modules autoloading 2009-12-25 03:37:20 +01:00
Vladimir 'phcoder' Serbinenko
bf2ebfbe02 Lost hunk 2009-12-25 03:36:42 +01:00
Vladimir 'phcoder' Serbinenko
ca04c7a550 Colin Watson's request 2009-12-25 01:20:44 +01:00
Vladimir 'phcoder' Serbinenko
fa533ebb5c Various fixes to make multiterm work 2009-12-25 01:13:21 +01:00
carles
61ba42be03 2009-12-25 Carles Pina i Estany <carles@pina.cat>
* commands/efi/loadbios.c: Capitalize acronyms, replace `could not' by
	`couldn't' and `can not' by `cannot'.
	* commands/i386/pc/drivemap.c: Likewise.
	* disk/ata.c: Likewise.
	* disk/ieee1275/nand.c: Likewise.
	* fs/affs.c: Likewise.
	* fs/fat.c: Likewise.
	* fs/hfs.c: Likewise.
	* fs/hfsplus.c: Likewise.
	* fs/iso9660.c: Likewise.
	* fs/jfs.c: Likewise.
	* fs/minix.c: Likewise.
	* fs/reiserfs.c: Likewise.
	* fs/sfs.c: Likewise.
	* fs/udf.c: Likewise.
	* fs/ufs.c: Likewise.
	* fs/xfs.c: Likewise.
	* loader/powerpc/ieee1275/linux.c: Likewise.
	* loader/sparc64/ieee1275/linux.c: Likewise.
	* util/grub-probe.c: Likewise.
	* util/misc.c: Likewise.
2009-12-25 01:04:51 +01:00
Vladimir 'phcoder' Serbinenko
4fc4ee303d Set default console on non-i386-pc 2009-12-25 00:13:03 +01:00
Vladimir 'phcoder' Serbinenko
840f2e6e08 Remove NEED_INIT. 2009-12-25 00:12:36 +01:00
Vladimir 'phcoder' Serbinenko
288031b37c REtrieve position from right console in loader/i386/linux.c 2009-12-25 00:07:52 +01:00
carles
7fd0baee0f 2009-12-24 Carles Pina i Estany <carles@pina.cat>
* bus/usb/usbhub.c: Fix capitalization, fullstop and newlines in
	grub_errno calls.
	* commands/acpi.c: Likewise.
	* commands/blocklist.c: Likewise.
	* commands/efi/loadbios.c: Likewise.
	* commands/i386/pc/drivemap.c: Likewise.
	* commands/loadenv.c: Likewise.
	* commands/memrw.c: Likewise.
	* commands/password.c: Likewise.
	* commands/videotest.c: Likewise.
	* disk/ata.c: Likewise.
	* disk/ata_pthru.c: Likewise.
	* disk/dmraid_nvidia.c: Likewise.
	* disk/ieee1275/nand.c: Likewise.
	* disk/ieee1275/ofdisk.c: Likewise.
	* disk/loopback.c: Likewise.
	* disk/lvm.c: Likewise.
	* disk/mdraid_linux.c: Likewise.
	* disk/raid.c: Likewise.
	* disk/raid6_recover.c: Likewise.
	* disk/scsi.c: Likewise.
	* efiemu/main.c: Likewise.
	* efiemu/mm.c: Likewise.
	* efiemu/pnvram.c: Likewise.
	* efiemu/symbols.c: Likewise.
	* font/font.c: Likewise.
	* fs/cpio.c: Likewise.
	* fs/hfsplus.c: Likewise.
	* fs/iso9660.c: Likewise.
	* fs/jfs.c: Likewise.
	* fs/minix.c: Likewise.
	* fs/ntfs.c: Likewise.
	* fs/ntfscomp.c: Likewise.
	* fs/reiserfs.c: Likewise.
	* fs/ufs.c: Likewise.
	* fs/xfs.c: Likewise.
	* gettext/gettext.c: Likewise.
	* include/grub/auth.h: Likewise.
	* kern/elf.c: Likewise.
	* kern/file.c: Likewise.
	* kern/ieee1275/init.c: Likewise.
	* kern/ieee1275/mmap.c: Likewise.
	* kern/ieee1275/openfw.c: Likewise.
	* kern/powerpc/dl.c: Likewise.
	* kern/sparc64/dl.c: Likewise.
	* lib/arg.c: Likewise.
	* loader/i386/bsd.c: Likewise.
	* loader/i386/bsdXX.c: Likewise.
	* loader/i386/efi/linux.c: Likewise.
	* loader/i386/efi/xnu.c: Likewise.
	* loader/i386/ieee1275/linux.c: Likewise.
	* loader/i386/linux.c: Likewise.
	* loader/i386/multiboot.c: Likewise.
	* loader/i386/pc/linux.c: Likewise.
	* loader/i386/pc/multiboot2.c: Likewise.
	* loader/i386/xnu.c: Likewise.
	* loader/ieee1275/multiboot2.c: Likewise.
	* loader/macho.c: Likewise.
	* loader/machoXX.c: Likewise.
	* loader/multiboot2.c: Likewise.
	* loader/multiboot_loader.c: Likewise.
	* loader/powerpc/ieee1275/linux.c: Likewise.
	* loader/sparc64/ieee1275/linux.c: Likewise.
	* loader/xnu.c: Likewise.
	* loader/xnu_resume.c: Likewise.
	* mmap/i386/pc/mmap.c: Likewise.
	* normal/menu_viewer.c: Likewise.
	* partmap/acorn.c: Likewise.
	* partmap/amiga.c: Likewise.
	* partmap/apple.c: Likewise.
	* script/lexer.c: Likewise.
	* term/gfxterm.c: Likewise.
	* term/i386/pc/serial.c: Likewise.
	* term/i386/pc/vga.c: Likewise.
	* term/ieee1275/ofconsole.c: Likewise.
	* term/terminfo.c: Likewise.
	* video/bitmap.c: Likewise.
	* video/efi_gop.c: Likewise.
	* video/efi_uga.c: Likewise.
	* video/fb/video_fb.c: Likewise.
	* video/i386/pc/vbe.c: Likewise.
	* video/readers/tga.c: Likewise.
	* video/video.c: Likewise.
2009-12-24 23:53:05 +01:00
Vladimir 'phcoder' Serbinenko
6d305d4f7d Fix paging. 2009-12-24 23:37:38 +01:00
Robert Millan
d0e158c2f3 2009-12-24 Robert Millan <rmh.grub@aybabtu.com>
* util/grub-install.in (host_os): New variable.
	* util/i386/efi/grub-install.in (host_os): Likewise.
2009-12-24 22:23:22 +00:00
Vladimir 'phcoder' Serbinenko
abd1cab3d9 Fix terminal_* commands 2009-12-24 23:21:27 +01:00
Vladimir 'phcoder' Serbinenko
9f0cd916a4 Restrict terminfo to serial 2009-12-24 23:20:43 +01:00
Vladimir 'phcoder' Serbinenko
686ff5b4d1 Don't output unnecessary newline in command line prompt 2009-12-24 23:19:54 +01:00
Vladimir 'phcoder' Serbinenko
4b4513adb3 bugfix in cmdline handling 2009-12-24 22:55:06 +01:00
Vladimir 'phcoder' Serbinenko
0aa6339849 Working multi-terminal 2009-12-24 21:54:37 +01:00
Robert Millan
401c0ad6fd 2009-12-24 Robert Millan <rmh.grub@aybabtu.com>
* util/mkisofs/write.c (padblock_write): Abort when given an
	excedingly large embed image, instead of silently truncating it.
2009-12-24 18:00:48 +00:00
Vladimir 'phcoder' Serbinenko
3be7f8de12 FORALL_ACTIVE_TERM_OUTPUTS macro 2009-12-24 17:51:43 +01:00
Robert Millan
8eca55a6eb Imported nyu's multi-input 2009-12-24 17:08:14 +01:00
Vladimir 'phcoder' Serbinenko
2322a12693 remove list iterators to save space 2009-12-24 16:25:10 +01:00
Vladimir 'phcoder' Serbinenko
2e71383172 Core changes hopefully finished 2009-12-24 15:34:33 +01:00