diff liboctave/version.cc @ 25397:2cf750f5cb7d

make version info accessible in liboctave * mk-version-h.in.sh: Move from libinterp to liboctave. * configure.ac, libinterp/module.mk, liboctave/module.mk, libgui/graphics/module.mk, libgui/src/module.mk: Update. * version.in.h (OCTAVE_CANONICAL_HOST_TYPE): Define here instead of in default-defs.in.h. * liboctave/mk-version-h.in.sh: Move here from libinterp. Also substitute OCTAVE_CANONICAL_HOST_TYPE. * liboctave/version.cc: Move here from libinterp. Don't include defaults.h. Use OCTAVE_CANONICAL_HOST_TYPE macro instead of octave::config::canonical_host_type function.
author John W. Eaton <jwe@octave.org>
date Sat, 19 May 2018 13:54:04 -0400
parents libinterp/version.cc@6652d3823428
children ad25dee33a9f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/liboctave/version.cc	Sat May 19 13:54:04 2018 -0400
@@ -0,0 +1,132 @@
+/*
+
+Copyright (C) 2013-2018 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
+<https://www.gnu.org/licenses/>.
+
+*/
+
+#if defined (HAVE_CONFIG_H)
+#  include "config.h"
+#endif
+
+#include <string>
+
+#include "version.h"
+
+static std::string
+octave_warranty_statement (const std::string& extra_info = "")
+{
+  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 ? R"(<a href=")" + url + R"(">)" + url + "</a>" : url;
+}
+
+std::string
+octave_www_statement (bool html)
+{
+  return "Additional information about Octave is available at "
+         + format_url (html, "https://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, "https://www.octave.org/get-involved.html");
+}
+
+std::string
+octave_bugs_statement (bool html)
+{
+  return "Read " + format_url (html, "https://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
+         + R"(Octave was configured for ")"
+         + OCTAVE_CANONICAL_HOST_TYPE
+         + R"(".)";
+}
+
+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;
+}