<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for rtems (2010-07-15)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>sh</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libcsupport/include/rtems/libio.h: Changed
rtems_filesystem_node_types_t to an enum. Declare
rtems_filesystem_handlers_default,
rtems_filesystem_operations_default,
rtems_filesystem_default_evalpath(),
rtems_filesystem_default_evalformake, and
rtems_filesystem_default_node_type().
* libfs/src/dosfs/msdos.h: Fixed msdos_node_type() prototype.
* libfs/src/defaults/default_evalformake.c,
libfs/src/defaults/default_handlers.c,
libfs/src/defaults/default_node_type.c,
libfs/src/defaults/default_ops.c: New files.
* libfs/Makefile.am: Reflect changes above.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2504&r2=text&tr2=1.2505&diff_format=h">M</a></td><td width='1%'>1.2505</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libcsupport/include/rtems/libio.h.diff?r1=text&tr1=1.76&r2=text&tr2=1.77&diff_format=h">M</a></td><td width='1%'>1.77</td><td width='100%'>cpukit/libcsupport/include/rtems/libio.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libfs/Makefile.am.diff?r1=text&tr1=1.45&r2=text&tr2=1.46&diff_format=h">M</a></td><td width='1%'>1.46</td><td width='100%'>cpukit/libfs/Makefile.am</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libfs/src/defaults/default_evalformake.c?rev=1.1&content-type=text/vnd.viewcvs-markup">A</a></td><td width='1%'><font color="#000088">1.1</font></td><td width='100%'><font color="#000088">cpukit/libfs/src/defaults/default_evalformake.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libfs/src/defaults/default_handlers.c?rev=1.1&content-type=text/vnd.viewcvs-markup">A</a></td><td width='1%'><font color="#000088">1.1</font></td><td width='100%'><font color="#000088">cpukit/libfs/src/defaults/default_handlers.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libfs/src/defaults/default_node_type.c?rev=1.1&content-type=text/vnd.viewcvs-markup">A</a></td><td width='1%'><font color="#000088">1.1</font></td><td width='100%'><font color="#000088">cpukit/libfs/src/defaults/default_node_type.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libfs/src/defaults/default_ops.c?rev=1.1&content-type=text/vnd.viewcvs-markup">A</a></td><td width='1%'><font color="#000088">1.1</font></td><td width='100%'><font color="#000088">cpukit/libfs/src/defaults/default_ops.c</font></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libfs/src/dosfs/msdos.h.diff?r1=text&tr1=1.24&r2=text&tr2=1.25&diff_format=h">M</a></td><td width='1%'>1.25</td><td width='100%'>cpukit/libfs/src/dosfs/msdos.h</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2504 rtems/cpukit/ChangeLog:1.2505
--- rtems/cpukit/ChangeLog:1.2504 Wed Jul 14 10:49:12 2010
+++ rtems/cpukit/ChangeLog Thu Jul 15 02:36:37 2010
</font><font color='#997700'>@@ -1,3 +1,19 @@
</font><font color='#000088'>+2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * libcsupport/include/rtems/libio.h: Changed
+ rtems_filesystem_node_types_t to an enum. Declare
+ rtems_filesystem_handlers_default,
+ rtems_filesystem_operations_default,
+ rtems_filesystem_default_evalpath(),
+ rtems_filesystem_default_evalformake, and
+ rtems_filesystem_default_node_type().
+ * libfs/src/dosfs/msdos.h: Fixed msdos_node_type() prototype.
+ * libfs/src/defaults/default_evalformake.c,
+ libfs/src/defaults/default_handlers.c,
+ libfs/src/defaults/default_node_type.c,
+ libfs/src/defaults/default_ops.c: New files.
+ * libfs/Makefile.am: Reflect changes above.
+
</font> 2010-07-14 Joel Sherrill <joel.sherrill@oarcorp.com>
* libnetworking/rtems/rtems_syscall.c: Fix warning.
<font color='#006600'>diff -u rtems/cpukit/libcsupport/include/rtems/libio.h:1.76 rtems/cpukit/libcsupport/include/rtems/libio.h:1.77
--- rtems/cpukit/libcsupport/include/rtems/libio.h:1.76 Sat Jul 3 14:13:25 2010
+++ rtems/cpukit/libcsupport/include/rtems/libio.h Thu Jul 15 02:36:37 2010
</font><font color='#997700'>@@ -56,20 +56,16 @@
</font> typedef _off64_t rtems_off64_t;
/**
<font color='#880000'>- * @name File System Node Types
- *
- * @{
</font><font color='#000088'>+ * @brief File system node types.
</font> */
<font color='#880000'>-
-#define RTEMS_FILESYSTEM_DIRECTORY 1
-#define RTEMS_FILESYSTEM_DEVICE 2
-#define RTEMS_FILESYSTEM_HARD_LINK 3
-#define RTEMS_FILESYSTEM_SYM_LINK 4
-#define RTEMS_FILESYSTEM_MEMORY_FILE 5
-
-/** @} */
-
-typedef int rtems_filesystem_node_types_t;
</font><font color='#000088'>+typedef enum {
+ RTEMS_FILESYSTEM_INVALID_NODE_TYPE,
+ RTEMS_FILESYSTEM_DIRECTORY,
+ RTEMS_FILESYSTEM_DEVICE,
+ RTEMS_FILESYSTEM_HARD_LINK,
+ RTEMS_FILESYSTEM_SYM_LINK,
+ RTEMS_FILESYSTEM_MEMORY_FILE
+} rtems_filesystem_node_types_t;
</font>
/**
* @name File System Node Operations
<font color='#997700'>@@ -360,6 +356,10 @@
</font> */
rtems_filesystem_rmnod_t rmnod_h;
};
<font color='#000088'>+
+extern const rtems_filesystem_file_handlers_r
+rtems_filesystem_handlers_default;
+
</font> /**
* This method defines the interface to the default open(2)<span style="background-color: #FF0000"> </span>
* system call support which is provided by a file system<span style="background-color: #FF0000"> </span>
<font color='#997700'>@@ -892,10 +892,29 @@
</font> rtems_filesystem_statvfs_t statvfs_h;
};
<font color='#880000'>-/*
- * @brief Default filesystem evalpath
</font><font color='#000088'>+extern const rtems_filesystem_operations_table
+rtems_filesystem_operations_default;
+
+/**
+ * @brief Provides a defualt routine for filesystem
+ * implementation of path evaluation.
</font> */
<font color='#000088'>+int rtems_filesystem_default_evalpath(
+ const char *pathname,
+ size_t pathnamelen,
+ int flags,
+ rtems_filesystem_location_info_t *pathloc
+);
</font>
<font color='#000088'>+/**
+ * @brief Provides a defualt routine for filesystem
+ * implementation of path evaluation for make.
+ */
+int rtems_filesystem_default_evalformake(
+ const char *path,
+ rtems_filesystem_location_info_t *pathloc,
+ const char **name
+);
</font>
/**
* @brief Provides a defualt routine for filesystem
<font color='#997700'>@@ -918,6 +937,14 @@
</font>
/**
* @brief Provides a defualt routine for filesystem
<font color='#000088'>+ * implementation to determine the node type.
+ */
+rtems_filesystem_node_types_t rtems_filesystem_default_node_type(
+ rtems_filesystem_location_info_t *pathloc
+);
+
+/**
+ * @brief Provides a defualt routine for filesystem
</font> * implementation to create a new node.
*/
int rtems_filesystem_default_mknod(
<font color='#006600'>diff -u rtems/cpukit/libfs/Makefile.am:1.45 rtems/cpukit/libfs/Makefile.am:1.46
--- rtems/cpukit/libfs/Makefile.am:1.45 Wed Jul 14 10:44:43 2010
+++ rtems/cpukit/libfs/Makefile.am Thu Jul 15 02:36:37 2010
</font><font color='#997700'>@@ -30,7 +30,9 @@
</font> src/defaults/default_write.c src/defaults/default_fpathconf.c \
src/defaults/default_unmount.c src/defaults/default_evaluate_link.c \
src/defaults/default_open.c src/defaults/default_close.c \
<font color='#880000'>- src/defaults/default_fsunmount.c src/defaults/default_mknod.c
</font><font color='#000088'>+ src/defaults/default_fsunmount.c src/defaults/default_mknod.c \
+ src/defaults/default_node_type.c src/defaults/default_evalformake.c \
+ src/defaults/default_handlers.c src/defaults/default_ops.c
</font>
noinst_LIBRARIES += libimfs.a
libimfs_a_SOURCES =
<font color='#006600'>diff -u /dev/null rtems/cpukit/libfs/src/defaults/default_evalformake.c:1.1
--- /dev/null Thu Jul 15 03:10:32 2010
+++ rtems/cpukit/libfs/src/defaults/default_evalformake.c Thu Jul 15 02:36:37 2010
</font><font color='#997700'>@@ -0,0 +1,32 @@
</font><font color='#000088'>+/**
+ * @file
+ *
+ * @ingroup LibIO
+ *
+ * @brief rtems_filesystem_default_evalformake() implementation.
+ */
+
+/*
+ * Copyright (c) 2010
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#include <rtems/libio.h>
+#include <rtems/seterr.h>
+
+int rtems_filesystem_default_evalformake(
+ const char *path,
+ rtems_filesystem_location_info_t *pathloc,
+ const char **name
+)
+{
+ rtems_set_errno_and_return_minus_one( ENOTSUP );
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/cpukit/libfs/src/defaults/default_handlers.c:1.1
--- /dev/null Thu Jul 15 03:10:33 2010
+++ rtems/cpukit/libfs/src/defaults/default_handlers.c Thu Jul 15 02:36:37 2010
</font><font color='#997700'>@@ -0,0 +1,39 @@
</font><font color='#000088'>+/**
+ * @file
+ *
+ * @ingroup LibIO
+ *
+ * @brief rtems_filesystem_handlers_default definition.
+ */
+
+/*
+ * Copyright (c) 2010
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#include <rtems/libio.h>
+
+const rtems_filesystem_file_handlers_r rtems_filesystem_handlers_default = {
+ .open_h = rtems_filesystem_default_open,
+ .close_h = rtems_filesystem_default_close,
+ .read_h = rtems_filesystem_default_read,
+ .write_h = rtems_filesystem_default_write,
+ .ioctl_h = rtems_filesystem_default_ioctl,
+ .lseek_h = rtems_filesystem_default_lseek,
+ .fstat_h = rtems_filesystem_default_fstat,
+ .fchmod_h = rtems_filesystem_default_fchmod,
+ .ftruncate_h = rtems_filesystem_default_ftruncate,
+ .fpathconf_h = rtems_filesystem_default_fpathconf,
+ .fsync_h = rtems_filesystem_default_fsync,
+ .fdatasync_h = rtems_filesystem_default_fdatasync,
+ .fcntl_h = rtems_filesystem_default_fcntl,
+ .rmnod_h = rtems_filesystem_default_rmnod
+};
</font>
<font color='#006600'>diff -u /dev/null rtems/cpukit/libfs/src/defaults/default_node_type.c:1.1
--- /dev/null Thu Jul 15 03:10:33 2010
+++ rtems/cpukit/libfs/src/defaults/default_node_type.c Thu Jul 15 02:36:37 2010
</font><font color='#997700'>@@ -0,0 +1,29 @@
</font><font color='#000088'>+/**
+ * @file
+ *
+ * @ingroup LibIO
+ *
+ * @brief rtems_filesystem_default_node_type() implementation.
+ */
+
+/*
+ * Copyright (c) 2010
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#include <rtems/libio.h>
+
+rtems_filesystem_node_types_t rtems_filesystem_default_node_type(
+ rtems_filesystem_location_info_t *pathloc
+)
+{
+ return RTEMS_FILESYSTEM_INVALID_NODE_TYPE;
+}
</font>
<font color='#006600'>diff -u /dev/null rtems/cpukit/libfs/src/defaults/default_ops.c:1.1
--- /dev/null Thu Jul 15 03:10:33 2010
+++ rtems/cpukit/libfs/src/defaults/default_ops.c Thu Jul 15 02:36:37 2010
</font><font color='#997700'>@@ -0,0 +1,43 @@
</font><font color='#000088'>+/**
+ * @file
+ *
+ * @ingroup LibIO
+ *
+ * @brief rtems_filesystem_operations_default definition.
+ */
+
+/*
+ * Copyright (c) 2010
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * D-82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#include <rtems/libio.h>
+
+const rtems_filesystem_operations_table rtems_filesystem_operations_default = {
+ .evalpath_h = rtems_filesystem_default_evalpath,
+ .evalformake_h = rtems_filesystem_default_evalformake,
+ .link_h = rtems_filesystem_default_link,
+ .unlink_h = rtems_filesystem_default_unlink,
+ .node_type_h = rtems_filesystem_default_node_type,
+ .mknod_h = rtems_filesystem_default_mknod,
+ .chown_h = rtems_filesystem_default_chown,
+ .freenod_h = rtems_filesystem_default_freenode,
+ .mount_h = rtems_filesystem_default_mount,
+ .fsmount_me_h = rtems_filesystem_default_fsmount,
+ .unmount_h = rtems_filesystem_default_unmount,
+ .fsunmount_me_h = rtems_filesystem_default_fsunmount,
+ .utime_h = rtems_filesystem_default_utime,
+ .eval_link_h = rtems_filesystem_default_evaluate_link,
+ .symlink_h = rtems_filesystem_default_symlink,
+ .readlink_h = rtems_filesystem_default_readlink,
+ .rename_h = rtems_filesystem_default_rename,
+ .statvfs_h = rtems_filesystem_default_statvfs
+};
</font>
<font color='#006600'>diff -u rtems/cpukit/libfs/src/dosfs/msdos.h:1.24 rtems/cpukit/libfs/src/dosfs/msdos.h:1.25
--- rtems/cpukit/libfs/src/dosfs/msdos.h:1.24 Mon May 31 08:56:36 2010
+++ rtems/cpukit/libfs/src/dosfs/msdos.h Thu Jul 15 02:36:37 2010
</font><font color='#997700'>@@ -242,7 +242,7 @@
</font>
int msdos_free_node_info(rtems_filesystem_location_info_t *pathloc /* IN */);
<font color='#880000'>-int msdos_node_type(rtems_filesystem_location_info_t *pathloc);
</font><font color='#000088'>+rtems_filesystem_node_types_t msdos_node_type(rtems_filesystem_location_info_t *pathloc);
</font>
int msdos_mknod(
const char *path, /* IN */
</pre>
<p> </p>
<a name='cs2'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>sh</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
* score/include/rtems/seterr.h: Include <errno.h>.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2505&r2=text&tr2=1.2506&diff_format=h">M</a></td><td width='1%'>1.2506</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/include/rtems/seterr.h.diff?r1=text&tr1=1.8&r2=text&tr2=1.9&diff_format=h">M</a></td><td width='1%'>1.9</td><td width='100%'>cpukit/score/include/rtems/seterr.h</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2505 rtems/cpukit/ChangeLog:1.2506
--- rtems/cpukit/ChangeLog:1.2505 Thu Jul 15 02:36:37 2010
+++ rtems/cpukit/ChangeLog Thu Jul 15 02:40:27 2010
</font><font color='#997700'>@@ -1,5 +1,9 @@
</font> 2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
<font color='#000088'>+ * score/include/rtems/seterr.h: Include <errno.h>.
+
+2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
</font> * libcsupport/include/rtems/libio.h: Changed
rtems_filesystem_node_types_t to an enum. Declare
rtems_filesystem_handlers_default,
<font color='#006600'>diff -u rtems/cpukit/score/include/rtems/seterr.h:1.8 rtems/cpukit/score/include/rtems/seterr.h:1.9
--- rtems/cpukit/score/include/rtems/seterr.h:1.8 Mon Jan 16 09:13:58 2006
+++ rtems/cpukit/score/include/rtems/seterr.h Thu Jul 15 02:40:28 2010
</font><font color='#997700'>@@ -19,6 +19,8 @@
</font> #ifndef _RTEMS_SETERR_H
#define _RTEMS_SETERR_H
<font color='#000088'>+#include <errno.h>
+
</font> /**
* This is a helper macro which will set the variable errno and return
* -1 to the caller. This pattern is common to many POSIX methods.
</pre>
<p> </p>
<a name='cs3'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>sh</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libfs/src/devfs/devfs.h, libfs/src/devfs/devfs_node_type.c: Fixed
devFS_node_type() prototype.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/ChangeLog.diff?r1=text&tr1=1.2506&r2=text&tr2=1.2507&diff_format=h">M</a></td><td width='1%'>1.2507</td><td width='100%'>cpukit/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libfs/src/devfs/devfs.h.diff?r1=text&tr1=1.8&r2=text&tr2=1.9&diff_format=h">M</a></td><td width='1%'>1.9</td><td width='100%'>cpukit/libfs/src/devfs/devfs.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/libfs/src/devfs/devfs_node_type.c.diff?r1=text&tr1=1.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</td><td width='100%'>cpukit/libfs/src/devfs/devfs_node_type.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/ChangeLog:1.2506 rtems/cpukit/ChangeLog:1.2507
--- rtems/cpukit/ChangeLog:1.2506 Thu Jul 15 02:40:27 2010
+++ rtems/cpukit/ChangeLog Thu Jul 15 02:59:56 2010
</font><font color='#997700'>@@ -1,5 +1,10 @@
</font> 2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
<font color='#000088'>+ * libfs/src/devfs/devfs.h, libfs/src/devfs/devfs_node_type.c: Fixed
+ devFS_node_type() prototype.
+
+2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
</font> * score/include/rtems/seterr.h: Include <errno.h>.
2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
<font color='#006600'>diff -u rtems/cpukit/libfs/src/devfs/devfs.h:1.8 rtems/cpukit/libfs/src/devfs/devfs.h:1.9
--- rtems/cpukit/libfs/src/devfs/devfs.h:1.8 Sat Jun 12 00:18:02 2010
+++ rtems/cpukit/libfs/src/devfs/devfs.h Thu Jul 15 02:59:57 2010
</font><font color='#997700'>@@ -158,7 +158,7 @@
</font> * @retval always returns RTEMS_FILESYSTEM_DEVICE
*/
<font color='#880000'>-extern int devFS_node_type(
</font><font color='#000088'>+extern rtems_filesystem_node_types_t devFS_node_type(
</font> rtems_filesystem_location_info_t *pathloc
);
<font color='#006600'>diff -u rtems/cpukit/libfs/src/devfs/devfs_node_type.c:1.2 rtems/cpukit/libfs/src/devfs/devfs_node_type.c:1.3
--- rtems/cpukit/libfs/src/devfs/devfs_node_type.c:1.2 Sun Nov 29 07:18:56 2009
+++ rtems/cpukit/libfs/src/devfs/devfs_node_type.c Thu Jul 15 02:59:57 2010
</font><font color='#997700'>@@ -12,7 +12,7 @@
</font>
#include "devfs.h"
<font color='#880000'>-int devFS_node_type(
</font><font color='#000088'>+rtems_filesystem_node_types_t devFS_node_type(
</font> rtems_filesystem_location_info_t *pathloc
)
{
</pre>
<p> </p>
<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>