Mercurial > octave
diff libinterp/version.cc @ 17510:7542f4496974
eliminate some macros in version.h
* version.cc: New file.
* Makefile.am (DIST_SRC, liboctinterp_la_SOURCES): Add it to the lists.
* version.cc, version.in.h (octave_www_statement,
octave_contrib_statement, octave_bugs_statement,
octave_name_version_and_copyright,
octave_name_version_copyright_copying_and_warranty,
octave_name_version_copyright_copying_warranty_and_bugs,
octave_startup_message): New functions.
* version.cc (octave_warranty_statement, format_url):
New static functions.
* version.in.h (OCTAVE_API_VERSION_NUMBER, OCTAVE_NAME_AND_VERSION,
OCTAVE_CONFIG_STATEMENT, OCTAVE_COPYING_STATEMENT,
X_OCTAVE_WARRANTY_STATEMENT, OCTAVE_WARRANTY_STATEMENT,
OCTAVE_WWW_STATEMENT, OCTAVE_CONTRIB_STATEMENT OCTAVE_BUGS_STATEMENT
OCTAVE_NAME_VERSION_AND_COPYRIGHT,
OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY,
X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_AND_WARRANTY,
X_OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS,
OCTAVE_NAME_VERSION_COPYRIGHT_COPYING_WARRANTY_AND_BUGS,
OCTAVE_STARTUP_MESSAGE): Delete macros.
Change all uses to new functions.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sat, 28 Sep 2013 15:04:14 -0400 |
parents | |
children | 175b392e91fe |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libinterp/version.cc Sat Sep 28 15:04:14 2013 -0400 @@ -0,0 +1,131 @@ +/* + +Copyright (C) 2013 John W. Eaton + +This file is part of Octave. + +Octave 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 3 of the License, or (at your +option) any later version. + +Octave 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 Octave; see the file COPYING. If not, see +<http://www.gnu.org/licenses/>. + +*/ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <string> + +#include "defaults.h" +#include "version.h" + +static std::string +octave_warranty_statement (const std::string& extra_info = std::string ()) +{ + return "There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or\n\ +FITNESS FOR A PARTICULAR PURPOSE." + + extra_info; +} + +static std::string +format_url (bool html, const std::string& url) +{ + return html ? "<a href=\"" + url + "\">" + url + "</a>" : url; +} + +std::string +octave_www_statement (bool html) +{ + return "Additional information about Octave is available at " + + format_url (html, "http://www.octave.org."); +} + +std::string +octave_contrib_statement (bool html) +{ + return "Please contribute if you find this software useful.\n\ +For more information, visit " + + format_url (html, "http://www.octave.org/get-involved.html"); +} + +std::string +octave_bugs_statement (bool html) +{ + return "Read " + format_url (html, "http://www.octave.org/bugs.html") + + " to learn how to submit bug reports."; +} + +std::string +octave_name_version_and_copyright (void) +{ + // The GNU coding standards say that on the first line printed by + // --version, the version number should follow the last space on the + // line. + + return "GNU Octave, version " OCTAVE_VERSION "\n" OCTAVE_COPYRIGHT; +} + +std::string +octave_name_version_copyright_copying_and_warranty + (bool html, const std::string& extra_info) +{ + std::string br = html ? "<br>\n" : "\n"; + std::string sep = html ? "\n</p>\n<p>\n" : "\n\n"; + + return octave_name_version_and_copyright () + + br + + "This is free software; see the source code for copying conditions." + + br + + octave_warranty_statement (extra_info) + + sep + + "Octave was configured for \"" OCTAVE_CANONICAL_HOST_TYPE "\"."; +} + +std::string +octave_name_version_copyright_copying_warranty_and_bugs + (bool html, const std::string& extra_info) +{ + std::string sep = html ? "\n</p>\n<p>\n" : "\n\n"; + + std::string msg; + + if (html) + msg = "<p>\n"; + + msg += octave_name_version_copyright_copying_and_warranty (html, extra_info) + + sep + + octave_www_statement (html) + + sep + + octave_contrib_statement (html) + + sep + + octave_bugs_statement (html) + + (html ? "\n</p>" : ""); + + return msg; +} + +std::string +octave_startup_message (bool html) +{ + std::string msg + = octave_name_version_copyright_copying_warranty_and_bugs + (html, " For details, type 'warranty'."); + + msg += (html ? "<p>\n" : "\n"); + + msg += "For information about changes from previous versions, type 'news'."; + + msg += (html ? "\n</p>" : ""); + + return msg; +}