inc/weekly/weekly_ -text svneol=unset#text/plain
inc/weekly/weekly_surfbar.php -text svneol=unset#text/plain
inc/wrapper-functions.php -text svneol=unset#text/plain
+inc/xml-functions.php svneol=native#text/plain
/index.php -text svneol=unset#text/plain
/install.php -text svneol=unset#text/plain
install/menu-de.sql -text
templates/en/html/member/.htaccess -text svneol=unset#text/plain
templates/en/html/register_header.tpl -text svneol=unset#text/plain
templates/en/html/welcome.tpl -text svneol=unset#text/plain
+templates/xml/.htaccess svneol=native#text/plain
+templates/xml/admin/.htaccess svneol=native#text/plain
+templates/xml/admin/admin_edit_show_surfbar_urls.xml -text
+templates/xml/admin_data_template.xml -text
+templates/xml/template.xml -text
theme/business/css/beg.css -text
theme/business/css/doubler.css -text
theme/business/css/general.css -text
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : tr in templates/de/html/member/member_content_right.tpl, line: 5 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : div in templates/de/html/member/member_welcome_footer.tpl, line: 1 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : table in templates/de/html/member/member_footer.tpl, line: 6 in
-PHP Warning: DOMDocument::loadHTMLFile(): Attribute class redefined in templates/de/html/install/install_page3.tpl, line: 21 in
-PHP Warning: DOMDocument::loadHTMLFile(): Attribute class redefined in templates/de/html/install/install_page3.tpl, line: 27 in
-PHP Warning: DOMDocument::loadHTMLFile(): Attribute class redefined in templates/de/html/install/install_page3.tpl, line: 33 in
-PHP Warning: DOMDocument::loadHTMLFile(): Attribute class redefined in templates/de/html/install/install_page3.tpl, line: 39 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : div in templates/de/html/page_footer.tpl, line: 1 in /home
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : td in templates/de/html/menu/menu_what_end.tpl, line: 1 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : tr in templates/de/html/menu/menu_what_end.tpl, line: 2 in
-PHP Warning: DOMDocument::loadHTMLFile(): Attribute class redefined in templates/de/html/admin/admin_list_beg.tpl, line: 23 in
-PHP Warning: DOMDocument::loadHTMLFile(): Attribute align redefined in templates/de/html/admin/admin_list_beg.tpl, line: 23 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : table in templates/de/html/admin/admin_logout_sql_patches_remove.tpl, line: 10 in
-PHP Warning: DOMDocument::loadHTMLFile(): Attribute class redefined in templates/de/html/admin/admin_login_form.tpl, line: 29 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : td in templates/de/html/admin/admin_main_footer.tpl, line: 1 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : tr in templates/de/html/admin/admin_main_footer.tpl, line: 2 in
PHP Warning: DOMDocument::loadHTMLFile(): Unexpected end tag : table in templates/de/html/admin/admin_main_footer.tpl, line: 12 in
TODOS_PHP=`find -type f -name "*.php" -exec grep "@TODO" {} \; | grep "@" --count`
echo " - TODOs in TPL..."
TODOS_TPL=`find -type f -name "*.tpl" -exec grep "@TODO" {} \; | grep "@" --count`
-echo " - DEPRECATED PHP..."
+echo " - TODOs in XML..."
+TODOS_XML=`find -type f -name "*.xml" -exec grep "@TODO" {} \; | grep "@" --count`
+echo " - DEPRECATED in PHP..."
DEPRECATED_PHP=`find -type f -name "*.php" -exec grep "@DEPRECATED" {} \; | grep "@" --count`
-echo " - DEPRECATED TPL..."
+echo " - DEPRECATED in TPL..."
DEPRECATED_TPL=`find -type f -name "*.tpl" -exec grep "@DEPRECATED" {} \; | grep "@" --count`
+echo " - DEPRECATED in XML..."
+DEPRECATED_XML=`find -type f -name "*.xml" -exec grep "@DEPRECATED" {} \; | grep "@" --count`
echo " - global statements..."
GLOBALS=`find -type f -name "*.php" -exec grep -Hn "global " {} \; | grep -v "//" | grep -v "phpmailer" --count`
echo "$0: Result..."
echo "--------------------------------------"
-echo " - Open TODOs: ${TODOS_PHP}/${TODOS_TPL}"
-echo " - Open DEPRECATED: ${DEPRECATED_PHP}/${DEPRECATED_TPL}"
+echo " - Open TODOs: ${TODOS_PHP}/${TODOS_TPL}/${TODOS_XML}"
+echo " - Open DEPRECATED: ${DEPRECATED_PHP}/${DEPRECATED_TPL}/${DEPRECATED_XML}"
echo " - global statements: ${GLOBALS}"
echo "--------------------------------------"
echo "$0: Thanks for waiting for the final release 0.2.1-FINAL! :-)"
echo "$0: Searching for @TODO ..."
find -type f -name "*.php" -exec grep -Hin "@TODO" {} \; | sort >> ${TODO}
find -type f -name "*.tpl" -exec grep -Hin "@TODO" {} \; | sort >> ${TODO}
+find -type f -name "*.xml" -exec grep -Hin "@TODO" {} \; | sort >> ${TODO}
echo "### ### DEPRECATION FOLLOWS: ### ###" >> ${TODO}
echo "$0: Searching for @DEPRECATED ..."
find -type f -name "*.php" -exec grep -Hin "@DEPRECATED" {} \; | sort >> ${TODO}
find -type f -name "*.tpl" -exec grep -Hin "@DEPRECATED" {} \; | sort >> ${TODO}
+find -type f -name "*.xml" -exec grep -Hin "@DEPRECATED" {} \; | sort >> ${TODO}
echo "$0: Checking for template-warnings.log ..."
LOG=`dirname $0`/template-warnings.log
if test -e "${LOG}"; then
echo "$0: Validating all templates..."
DUMMY=`find templates/de/html/ -type f -name *.tpl -exec php DOCS/tpl-validator.php {} \; 2>&1`
-echo "${DUMMY}" | grep "Warning" | cut -d "/" -f 1-5 | grep -v "error parsing attribute name" > `dirname $0`/template-warnings.log
+echo "${DUMMY}" | \
+ grep "Warning" | \
+ cut -d "/" -f 1-5 | \
+ grep -v "error parsing attribute name" > `dirname $0`/template-warnings.log
echo "$0: done."
-
addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` CHANGE `percents` `percents` FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000");
// Update notes (these will be set as task text!)
- setExtensionUpdateNotes("Prozentsätze können nun fünf Stelle hinter dem Komma sein.");
+ setExtensionUpdateNotes("Prozentsätze können nun fünf Stellen hinter dem Komma sein.");
break;
case '0.5.3': // SQL queries for v0.5.3
************************************************************************/
// Run only once this security check/replacement
-if (defined('__SECURITY')) return;
+if (defined('__SECURITY')) {
+ return;
+} // END - if
// Some security stuff...
if (strpos($_SERVER['PHP_SELF'], basename(__FILE__)) !== false) {
)
);
$show = false;
- } elseif (isPostRequestParameterSet('do_edit')) {
+ } elseif (isFormSent('do_edit')) {
// Delete entries (with confirmation)
adminEditEntriesConfirm(
postRequestParameter('id'),
array(),
true
);
- } elseif (isPostRequestParameterSet('delete')) {
+ } elseif (isFormSent('delete')) {
// Delete entries (with confirmation)
adminDeleteEntriesConfirm(
postRequestParameter('id'),
// Edit or delete button hit?
if (isFormSent('edit')) {
// Show entries for editing
- adminEditEntriesConfirm(
- postRequestParameter('url_id'),
- 'surfbar_urls',
- array(
- 'url_id',
- 'url_userid',
- 'url'
- ),
- array(
- 'bigintval',
- 'addMemberSelectionBox',
- ''
- ),
- array(
- '',
- array(
- false,
- true,
- true,
- 'url_userid[]'
- ),
- ''
- ),
- false,
- 'url_id',
- 'url_userid',
- 'url_userid'
- );
+ showEntriesByXmlCallback('admin_edit_show_surfbar_urls');
+
+ // Do not show the list of URLs after this template
$show = false;
-} elseif (isPostRequestParameterSet('do_edit')) {
+} elseif (isFormSent('do_edit')) {
// Change data of entries
adminEditEntriesConfirm(
postRequestParameter('url_id'),
'url_userid',
'url_userid'
);
-} elseif (isPostRequestParameterSet('delete')) {
+} elseif (isFormSent('delete')) {
// Show entries for deletion
adminDeleteEntriesConfirm(
- postRequestParameter('url_id'),
+ postRequestParameter('url_id'),
'surfbar_urls',
array(
'url_id',
'url_userid',
'url_userid'
);
+
+ // Do not show the list of URLs after this template
$show = false;
-} elseif (isPostRequestParameterSet('do_delete')) {
+} elseif (isFormSent('do_delete')) {
// Remove entries from database
adminDeleteEntriesConfirm(
postRequestParameter('url_id'),
'url_userid',
'url_userid'
);
+
+ // Do not show the list of URLs after this template
$show = false;
-} elseif (isPostRequestParameterSet('do_lock')) {
+} elseif (isFormSent('do_lock')) {
// Un-/lock selected URLs. This does not work for pending URLs
adminLockEntriesConfirm(
postRequestParameter('url_id'),
'url_userid',
'url_userid'
);
-} elseif (isPostRequestParameterSet('undelete')) {
+} elseif (isFormSent('undelete')) {
// Undelete selected URLs. This does only work for deleted URLs... ;-)
adminUndeleteEntriesConfirm(
postRequestParameter('url_id'),
'url_userid'
);
$show = false;
-} elseif (isPostRequestParameterSet('do_undelete')) {
+} elseif (isFormSent('do_undelete')) {
// Undelete selected URLs. This does only work for deleted URLs... ;-)
adminUndeleteEntriesConfirm(
postRequestParameter('url_id'),
}
// Show entries?
-if ($show === false) return false;
+if ($show === false) {
+ // No, a form has already been show
+ return false;
+} // END - if
// List all URLs
$result = SQL_QUERY("SELECT
--- /dev/null
+<?php
+/************************************************************************
+ * Mailer v0.2.1-FINAL Start: 01/27/2011 *
+ * =================== Last change: 01/27/2011 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : xml-functions.php *
+ * -------------------------------------------------------------------- *
+ * Short description : Functions for handling XML templates *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Funktionen zum Umgang mit XML-Templates *
+ * -------------------------------------------------------------------- *
+ * $Revision:: $ *
+ * $Date:: $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: $ *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * For more information visit: http://www.mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (!defined('__SECURITY')) {
+ die();
+} // END - if
+
+// [EOF]
+?>
<td class="header_column bottom right" align="center">
<strong>{--BEG_TOTAL--}:</strong>
</td>
- <td class="header_column bottom" align="center>
+ <td class="header_column bottom" align="center">
<strong>{--LAST_ONLINE_SHORT--}:</strong>
</td>
</tr>
</div>
</td>
<td class="bottom">
- <input type="password" class="form_field" name="password" tabindex="2" size="20" maxlength="100" class="form_field" />
+ <input type="password" class="form_field" name="password" tabindex="2" size="20" maxlength="100" />
</td>
</tr>
$content[pass_message]
<tr>
<td align="right" class="install_right">{--INSTALLER_TEXT_SMTP_HOST--}:</td>
<td align="left">
- <input type="text" class="form_field" name="smtp_host" size="25" value="$content[smtp_host]
+ <input type="text" class="form_field" name="smtp_host" size="25" value="$content[smtp_host]" />
</td>
</tr>
<tr>
<td align="right" class="install_right">{--INSTALLER_TEXT_SMTP_USER--}:</td>
<td align="left">
- <input type="text" class="form_field" name="smtp_user" size="25" value="$content[smtp_user]
+ <input type="text" class="form_field" name="smtp_user" size="25" value="$content[smtp_user]" />
</td>
</tr>
<tr>
<td align="right" class="install_right">{--INSTALLER_TEXT_SMTP_PASS1--}:</td>
<td align="left">
- <input type="password" class="form_field" name="smtp_pass1" size="25" value="$content[smtp_pass1]
+ <input type="password" class="form_field" name="smtp_pass1" size="25" value="$content[smtp_pass1]" />
</td>
</tr>
<tr>
<td align="right" class="install_right">{--INSTALLER_TEXT_SMTP_PASS2--}:</td>
<td align="left">
- <input type="password" class="form_field" name="smtp_pass2" size="25" value="$content[smtp_pass2]
+ <input type="password" class="form_field" name="smtp_pass2" size="25" value="$content[smtp_pass2]" />
</td>
</tr>
<tr>
--- /dev/null
+Deny from all
--- /dev/null
+Deny from all
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This template provides meta data for editing URLs of the surfbar in the admin
+area.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2011 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://www.mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <admin-callback-function type="string" value="adminEditEntriesConfirm" />
+ <!--
+ Array index from HTTP POST data array for identifying every data row
+ //-->
+ <post-data-identify-index type="string" value="url_id" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table type="string" value="surfbar_urls" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ <!--
+ A column name list entry. The type is always string, or do you have
+ numerical column names?
+ //-->
+ <database-column-list-entry type="string" value="url_id" />
+ <database-column-list-entry type="string" value="url_userid" />
+ <database-column-list-entry type="string" value="url" />
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ <!--
+ A call-back function list entry
+ //-->
+ <callback-function-list-entry type="string" value="bigintval" />
+ <callback-function-list-entry type="string" value="addMemberSelectionBox" />
+ <callback-function-list-entry type="string" value="" /> <!-- No callback function! //-->
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ <!--
+ A list entry for a single extra parameter. 'type' can now be: string,
+ int, float, bool, array. If the type 'array' is provided, the parser searches
+ for a tag called "extra-parameter-<value>-list(-entry)", by <value>
+ is the value from the 'value' attribute. Please check out the examples below.
+ //-->
+ <!--
+ A simple string example, int and float are similar.
+ //-->
+ <extra-parameter-list-entry type="string" value="" />
+ <!--
+ A one-dimensional array with some entries
+ //-->
+ <extra-parameter-list-entry type="array" value="member">
+ <!--
+ Our 'member' array
+ //-->
+ <extra-parameter-member-list>
+ <!--
+ A bool entry in the 'bar' array, all other types are added in a
+ similar way.
+ //-->
+ <extra-parameter-member-list-entry type="bool" value="false" />
+ <extra-parameter-member-list-entry type="bool" value="true" />
+ <extra-parameter-member-list-entry type="bool" value="true" />
+ <!--
+ The brackets [] are required for addMemberSelectionBox(),
+ please read there for details.
+ //-->
+ <extra-parameter-member-list-entry type="bool" value="url_userid[]" />
+ </extra-parameter-bar-list>
+ </extra-parameter-list-entry>
+ <!--
+ A simple string example, int and float are similar.
+ //-->
+ <extra-parameter-list-entry type="string" value="" />
+ </extra-parameter-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries type="bool" value="false" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column type="string" value="url_id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column type="string" value="url_userid" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key type="string" value="url_userid" />
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This is an admin XML template for all other XML templates which provides meta
+data for editing/deleting/changing database entries. If you want to write your
+own templates, please keep this header except *this* description and the author
+tag intact.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2011 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://www.mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->
+<admin-entry-meta-data>
+ <!--
+ Call-back function which should all following parameter handled over
+ to. This will always be type of string but we like homogene XMLs.
+ //-->
+ <admin-callback-function type="string" value="adminFooEntriesBar" />
+ <!--
+ Array index from HTTP POST data array for identifying every data row
+ //-->
+ <post-data-identify-index type="string" value="id" />
+ <!--
+ Name of the database table where the entries should be read/write from/to.
+ //-->
+ <database-table type="string" value="table_name" />
+ <!--
+ The following three lists must have the same count of list entries, else an
+ error may occur.
+ //-->
+ <!--
+ And all column names to read/write, leave this list tag empty for all (*).
+ //-->
+ <database-column-list>
+ <!--
+ A column name list entry. The type is always string, or do you have
+ numerical column names?
+ //-->
+ <database-column-list-entry type="string" value="foo" />
+ </database-column-list>
+ <!--
+ "Filter" call-back functions to call back for piping the fetched data
+ through (can be left empty, no call-back function will be called)
+ //-->
+ <callback-function-list>
+ <!--
+ A call-back function list entry
+ //-->
+ <callback-function-list-entry type="string" value="someFooCallback" />
+ </callback-function-list>
+ <!--
+ Extra parameters (2nd, 3rd, ...) for above call-back functions. If an array
+ is provided, we have more than two parameters to handle over to the
+ call-back function. See function handleExtraValues() for details.
+ //-->
+ <extra-parameter-list>
+ <!--
+ A list entry for a single extra parameter. 'type' can now be: string,
+ int, float, bool, array. If the type 'array' is provided, the parser searches
+ for a tag called "extra-parameter-<value>-list(-entry)", by <value>
+ is the value from the 'value' attribute. Please check out the examples below.
+ //-->
+ <!--
+ A simple string example, int and float are similar.
+ //-->
+ <extra-parameter-list-entry type="string" value="foo" />
+ <!--
+ A simple bool example, value can only be 'false' or 'true'
+ //-->
+ <extra-parameter-list-entry type="bool" value="false" />
+ <!--
+ A one-dimensional array with some entries
+ //-->
+ <extra-parameter-list-entry type="array" value="bar">
+ <!--
+ Our 'bar' array
+ //-->
+ <extra-parameter-bar-list>
+ <!--
+ A bool entry in the 'bar' array, all other types are added in a
+ similar way.
+ //-->
+ <extra-parameter-bar-list-entry type="bool" value="true" />
+ </extra-parameter-bar-list>
+ </extra-parameter-list-entry>
+ </extra-parameter-list>
+ <!--
+ Wether to 'edit/delete/change' (change) the entries (true) or just read them for displaying (false)
+ //-->
+ <enable-modify-entries type="bool" value="false" />
+ <!--
+ The table column which should be taken for the ids (see first parameter).
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-id-column type="string" value="id" />
+ <!--
+ The table column which should be taken for user ids
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <table-userid-column type="string" value="userid" />
+ <!--
+ Raw userid column ($key) to skip which is always an invalid (?) entry
+ This' type can again only be 'string' (remember why?).
+ //-->
+ <raw-userid-column-key type="string" value="userid" />
+</admin-entry-meta-data>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+This XML is a template XML for all other XML templates. If you want to write
+your own templates, please keep this header except *this* description and the
+author tag intact.
+
+@author Roland Haeder <webmaster@mxchange.org>
+@version 0.2.1-FINAL
+@copyright (c) 2003 - 2009 by Roland Haeder
+@copyright (c) 2009 - 2011 by Mailer Developer Team
+@license GNU GPL 2.0 or any newer version
+@link http://www.mxchange.org
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+MA 02110-1301 USA
+//-->