[glom] Use "\n" instead of std::endl.



commit bc98ab50077442b96d382608a29b509afcde99b1
Author: Murray Cumming <murrayc murrayc com>
Date:   Tue Feb 9 17:31:08 2016 +0100

    Use "\n" instead of std::endl.
    
    See https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#sl50-avoid-endl

 glom/application.cc                                |   10 +-
 glom/appwindow.cc                                  |   50 +++---
 glom/base_db.cc                                    |   32 ++--
 glom/base_db_table_data.cc                         |   20 +-
 glom/box_reports.cc                                |    6 +-
 glom/dialog_connection.cc                          |    4 +-
 glom/dialog_existing_or_new.cc                     |    4 +-
 glom/filechooser_export.cc                         |    2 +-
 glom/frame_glom.cc                                 |   62 +++---
 glom/glom_create_from_example.cc                   |   22 +-
 glom/glom_export_po.cc                             |    2 +-
 glom/glom_export_po_all.cc                         |    2 +-
 glom/glom_import_po_all.cc                         |    2 +-
 glom/glom_test_connection.cc                       |    6 +-
 glom/import_csv/csv_parser.cc                      |   16 +-
 glom/import_csv/dialog_import_csv.cc               |    2 +-
 glom/import_csv/dialog_import_csv_progress.cc      |    6 +-
 glom/libglom/connectionpool.cc                     |   44 +++---
 glom/libglom/connectionpool_backends/mysql.cc      |   38 ++--
 glom/libglom/connectionpool_backends/mysql_self.cc |   50 +++---
 glom/libglom/connectionpool_backends/postgres.cc   |   42 ++--
 .../connectionpool_backends/postgres_self.cc       |   26 ++--
 glom/libglom/connectionpool_backends/sqlite.cc     |    4 +-
 glom/libglom/data_structure/field.cc               |    8 +-
 glom/libglom/data_structure/fieldtypes.cc          |   14 +-
 glom/libglom/data_structure/glomconversions.cc     |   26 ++--
 .../data_structure/layout/layoutitem_portal.cc     |   14 +-
 glom/libglom/db_utils.cc                           |  194 ++++++++++----------
 glom/libglom/document/bakery/document.cc           |    2 +-
 glom/libglom/document/bakery/document_xml.cc       |    4 +-
 glom/libglom/document/document.cc                  |   52 +++---
 glom/libglom/example_document_load.cc              |    4 +-
 glom/libglom/init.cc                               |    2 +-
 glom/libglom/privs.cc                              |   18 +-
 glom/libglom/python_embed/py_glom_record.cc        |    8 +-
 glom/libglom/python_embed/py_glom_relatedrecord.cc |    4 +-
 .../libglom/python_embed/pygdavalue_conversions.cc |    8 +-
 glom/libglom/report_builder.cc                     |   54 +++---
 glom/libglom/spawn_with_feedback.cc                |    8 +-
 glom/libglom/test_avahi_publisher.cc               |    4 +-
 glom/libglom/test_connectionpool.cc                |    4 +-
 glom/libglom/utils.cc                              |   70 ++++----
 glom/libglom/xsl_utils.cc                          |    2 +-
 glom/main.cc                                       |    4 +-
 glom/main_local_options.cc                         |    4 +-
 glom/mode_data/box_data.cc                         |    4 +-
 glom/mode_data/box_data_calendar_related.cc        |   10 +-
 glom/mode_data/box_data_details.cc                 |    8 +-
 glom/mode_data/box_data_list.cc                    |   10 +-
 glom/mode_data/box_data_list_related.cc            |   12 +-
 glom/mode_data/box_data_portal.cc                  |   10 +-
 glom/mode_data/datawidget/cellcreation.cc          |    2 +-
 glom/mode_data/datawidget/cellrenderer_dblist.cc   |   14 +-
 glom/mode_data/datawidget/combo.cc                 |   12 +-
 .../mode_data/datawidget/combo_as_radio_buttons.cc |    2 +-
 .../datawidget/combochoiceswithtreemodel.cc        |   12 +-
 glom/mode_data/datawidget/datawidget.cc            |    2 +-
 glom/mode_data/datawidget/treemodel_db.cc          |   44 +++---
 .../datawidget/treemodel_db_withextratext.cc       |    4 +-
 glom/mode_data/db_adddel/db_adddel.cc              |   30 ++--
 glom/mode_data/flowtablewithfields.cc              |   12 +-
 glom/mode_data/notebook_data.cc                    |   12 +-
 glom/mode_design/dialog_database_preferences.cc    |    4 +-
 glom/mode_design/dialog_initial_password.cc        |    2 +-
 glom/mode_design/fields/box_db_table_definition.cc |   14 +-
 glom/mode_design/fields/dialog_fielddefinition.cc  |    4 +-
 glom/mode_design/layout/combobox_fields.cc         |    4 +-
 glom/mode_design/layout/dialog_choose_field.cc     |    4 +-
 .../layout/dialog_layout_calendar_related.cc       |    8 +-
 glom/mode_design/layout/dialog_layout_details.cc   |    6 +-
 .../layout/dialog_layout_list_related.cc           |    4 +-
 .../layout_item_dialogs/combo_summarytype.cc       |    2 +-
 .../layout/layout_item_dialogs/dialog_line.cc      |    6 +-
 .../mode_design/print_layouts/box_print_layouts.cc |    2 +-
 .../print_layouts/window_print_layout_edit.cc      |   12 +-
 .../window_relationships_overview.cc               |    2 +-
 glom/mode_design/translation/combobox_locale.cc    |    4 +-
 .../translation/dialog_identify_original.cc        |    2 +-
 glom/mode_design/users/dialog_groups_list.cc       |   10 +-
 glom/mode_design/users/dialog_users_list.cc        |    8 +-
 glom/navigation/box_tables.cc                      |    8 +-
 glom/print_layout/canvas_layout_item.cc            |   12 +-
 glom/print_layout/canvas_print_layout.cc           |   12 +-
 glom/print_layout/print_layout_utils.cc            |    6 +-
 glom/print_layout/printoperation_printlayout.cc    |    2 +-
 glom/python_embed/glom_python.cc                   |   26 ++--
 glom/utility_widgets/adddel/adddel.cc              |    8 +-
 glom/utility_widgets/canvas/canvas_group_grid.cc   |    2 +-
 .../utility_widgets/canvas/canvas_group_movable.cc |    4 +-
 .../canvas/canvas_group_resizable.cc               |    8 +-
 .../utility_widgets/canvas/canvas_image_movable.cc |    2 +-
 glom/utility_widgets/canvas/canvas_item_movable.cc |    6 +-
 .../utility_widgets/canvas/canvas_table_movable.cc |    4 +-
 glom/utility_widgets/dialog_image_load_progress.cc |    2 +-
 glom/utility_widgets/dialog_image_save_progress.cc |    2 +-
 glom/utility_widgets/dialog_properties.cc          |    4 +-
 glom/utility_widgets/flowtable.cc                  |    6 +-
 glom/utility_widgets/imageglom.cc                  |   32 ++--
 glom/utility_widgets/layoutwidgetbase.cc           |    2 +-
 glom/utility_widgets/layoutwidgetmenu.cc           |    4 +-
 glom/utility_widgets/layoutwidgetutils.cc          |    4 +-
 glom/utility_widgets/test_flowtable.cc             |    2 +-
 glom/utils_ui.cc                                   |    6 +-
 tests/glade_toplevels_instantiation.cc             |    2 +-
 tests/import/utils.cc                              |    4 +-
 tests/python/test_python_execute_func.cc           |    2 +-
 .../python/test_python_execute_func_bad_syntax.cc  |    2 +-
 .../test_python_execute_func_change_result_type.cc |    2 +-
 .../python/test_python_execute_func_with_record.cc |    6 +-
 ..._python_execute_func_with_record_field_types.cc |    8 +-
 tests/python/test_python_execute_script.cc         |    2 +-
 tests/python/test_python_module.cc                 |    4 +-
 tests/test_conversions.cc                          |    2 +-
 tests/test_document_load.cc                        |   32 ++--
 tests/test_document_load_and_change.cc             |   32 ++--
 tests/test_document_load_and_save.cc               |    4 +-
 tests/test_fake_connection.cc                      |    2 +-
 tests/test_field_file_format.cc                    |    2 +-
 tests/test_glade_derived_instantiation.cc          |    2 +-
 tests/test_layout_item_field.cc                    |   16 +-
 tests/test_parsing_time.cc                         |    8 +-
 tests/test_script_check_for_problems.cc            |    6 +-
 tests/test_selfhosting_new_empty.cc                |    2 +-
 .../test_selfhosting_new_empty_change_sysprefs.cc  |    4 +-
 tests/test_selfhosting_new_empty_then_users.cc     |   18 +-
 tests/test_selfhosting_new_from_example.cc         |    4 +-
 ...t_selfhosting_new_from_example_defaultvalues.cc |   10 +-
 tests/test_selfhosting_new_from_example_float.cc   |    6 +-
 .../test_selfhosting_new_from_example_operator.cc  |   20 +-
 ...est_selfhosting_new_from_example_strangepath.cc |    4 +-
 tests/test_selfhosting_new_then_alter_table.cc     |   10 +-
 tests/test_selfhosting_new_then_backup_restore.cc  |   16 +-
 tests/test_selfhosting_new_then_change_columns.cc  |   18 +-
 tests/test_selfhosting_new_then_choices.cc         |    8 +-
 tests/test_selfhosting_new_then_get_privs.cc       |   12 +-
 tests/test_selfhosting_new_then_image.cc           |   18 +-
 tests/test_selfhosting_new_then_lookup.cc          |   32 ++--
 tests/test_selfhosting_new_then_report.cc          |    6 +-
 tests/test_selfhosting_new_then_report_summary.cc  |   14 +-
 tests/test_selfhosting_non_numeric_primary_keys.cc |    4 +-
 tests/test_selfhosting_sqlinjection.cc             |   26 ++--
 tests/test_selfhosting_utils.cc                    |   40 ++--
 tests/test_signal_reemit.cc                        |    2 +-
 tests/translations_po/test_document_export_po.cc   |    4 +-
 tests/translations_po/test_document_import_po.cc   |    8 +-
 145 files changed, 923 insertions(+), 923 deletions(-)
---
diff --git a/glom/application.cc b/glom/application.cc
index d72df54..d77d146 100644
--- a/glom/application.cc
+++ b/glom/application.cc
@@ -45,7 +45,7 @@ Glib::RefPtr<Application> Application::create()
 
 void Application::create_window(const Glib::RefPtr<Gio::File>& file)
 {
-  //std::cout << G_STRFUNC << ": debug" << std::endl;
+  //std::cout << G_STRFUNC << ": debug\n";
 
   AppWindow* window = nullptr;
   Glom::Utils::get_glade_widget_derived_with_warning(window);
@@ -81,7 +81,7 @@ void Application::on_window_hide(Gtk::Window* window)
 
 void Application::on_activate()
 {
-  //std::cout << G_STRFUNC << ": debug" << std::endl;
+  //std::cout << G_STRFUNC << ": debug\n";
 
   // The application has been started, so let's show a window:
   create_window();
@@ -112,7 +112,7 @@ void Application::on_startup()
 void Application::on_open(const Gio::Application::type_vec_files& files,
   const Glib::ustring& hint)
 {
-  //std::cout << G_STRFUNC << ": debug" << std::endl;
+  //std::cout << G_STRFUNC << ": debug\n";
   
   // The application has been asked to open some files,
   // so let's open a new window for each one.
@@ -121,7 +121,7 @@ void Application::on_open(const Gio::Application::type_vec_files& files,
   {
     if(!file)
     {
-      std::cerr << G_STRFUNC << ": file is null." << std::endl;
+      std::cerr << G_STRFUNC << ": file is null.\n";
     }
     else
       create_window(file);
@@ -133,7 +133,7 @@ void Application::on_open(const Gio::Application::type_vec_files& files,
 
 int Application::on_command_line(const Glib::RefPtr<Gio::ApplicationCommandLine>& command_line)
 {
-  //std::cout << G_STRFUNC << ": debug" << std::endl;
+  //std::cout << G_STRFUNC << ": debug\n";
   
   //Parse command-line arguments that were passed either to the main (first) instance
   //or to subsequent instances.
diff --git a/glom/appwindow.cc b/glom/appwindow.cc
index 4ed8e34..639e849 100644
--- a/glom/appwindow.cc
+++ b/glom/appwindow.cc
@@ -603,7 +603,7 @@ void AppWindow::open_browsed_document(const EpcServiceInfo* server, const Glib::
     Utils::get_glade_widget_derived_with_warning(dialog_connection);
     if(!dialog_connection)
     {
-      std::cerr << G_STRFUNC << ": dialog_connection is null." << std::endl;
+      std::cerr << G_STRFUNC << ": dialog_connection is null.\n";
       return;
     }
 
@@ -628,14 +628,14 @@ void AppWindow::open_browsed_document(const EpcServiceInfo* server, const Glib::
       document_contents = (gchar*)epc_consumer_lookup(consumer, "document", &length, &error);
       if(error)
       {
-        std::cout << "debug: " << G_STRFUNC << ": " << std::endl << "  " << error->message << std::endl;
+        std::cout << "debug: " << G_STRFUNC << ": \n" << "  " << error->message << std::endl;
         const int error_code = error->code;
         g_clear_error(&error);
 
         if(error_code == SOUP_STATUS_FORBIDDEN ||
            error_code == SOUP_STATUS_UNAUTHORIZED)
         {
-          //std::cout << "   SOUP_STATUS_FORBIDDEN or SOUP_STATUS_UNAUTHORIZED" << std::endl;
+          //std::cout << "   SOUP_STATUS_FORBIDDEN or SOUP_STATUS_UNAUTHORIZED\n";
 
           UiUtils::show_ok_dialog(_("Connection Failed"), _("Glom could not connect to the database server. 
Maybe you entered an incorrect user name or password, or maybe the postgres database server is not 
running."), *this, Gtk::MESSAGE_ERROR); //TODO: Add help button.
         }
@@ -958,7 +958,7 @@ bool AppWindow::on_document_load()
         document->set_modified(false);
         document->set_is_new(true);
         document->set_allow_autosave(true); //Turn this back on.
-        std::cout << "debug: user cancelled creating database" << std::endl;
+        std::cout << "debug: user cancelled creating database\n";
         return false;
       }
 
@@ -1044,14 +1044,14 @@ bool AppWindow::on_document_load()
           }
           else
           #endif // !GLOM_ENABLE_CLIENT_ONLY
-            std::cerr << G_STRFUNC << ": unexpected database_not_found error when opening example." << 
std::endl;
+            std::cerr << G_STRFUNC << ": unexpected database_not_found error when opening example.\n";
         }
         else if(!test)
         {
           //std::cerr might show some hints, but we don't want to confront the user with them:
           //TODO: Actually complain about specific stuff such as missing data, because the user might really 
play with the file system.
           Frame_Glom::show_ok_dialog(_("Problem Loading Document"), _("Glom could not load the document."), 
*this, Gtk::MESSAGE_ERROR);
-          std::cerr << G_STRFUNC << ": unexpected error." << std::endl;
+          std::cerr << G_STRFUNC << ": unexpected error.\n";
         }
       }
 
@@ -1334,7 +1334,7 @@ bool AppWindow::offer_new_or_existing()
       auto document = std::dynamic_pointer_cast<Document>(get_document());
       if(!document)
       {
-        std::cerr << G_STRFUNC << ": document was NULL." << std::endl;
+        std::cerr << G_STRFUNC << ": document was NULL.\n";
         return false;
       }
 
@@ -1378,7 +1378,7 @@ void AppWindow::existing_or_new_new()
   auto document = std::dynamic_pointer_cast<Document>(get_document());
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null." << std::endl;
+    std::cerr << G_STRFUNC << ": document is null.\n";
     return;
   }
 
@@ -1514,7 +1514,7 @@ bool AppWindow::recreate_database_from_example(bool& user_cancelled)
   {
     connection_pool->set_ready_to_connect(); //This has succeeded already.
     auto sharedconnection = connection_pool->connect();
-    std::cerr << G_STRFUNC << ": Failed because database exists already." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed because database exists already.\n";
 
     return false; //Connection to the database succeeded, because no exception was thrown. so the database 
exists already.
   }
@@ -1523,7 +1523,7 @@ bool AppWindow::recreate_database_from_example(bool& user_cancelled)
     if(ex.get_failure_type() == ExceptionConnection::failure_type::NO_SERVER)
     {
       user_cancelled = true; //Eventually, the user will cancel after retrying.
-      std::cerr << G_STRFUNC << ": Failed because connection to server failed, without specifying a 
database." << std::endl;
+      std::cerr << G_STRFUNC << ": Failed because connection to server failed, without specifying a 
database.\n";
       return false;
     }
 
@@ -1559,7 +1559,7 @@ bool AppWindow::recreate_database_from_example(bool& user_cancelled)
   }
   catch(const ExceptionConnection& ex)
   {
-    std::cerr << G_STRFUNC << ": Failed to connect to the newly-created database." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed to connect to the newly-created database.\n";
     return false;
   }
 
@@ -1588,7 +1588,7 @@ bool AppWindow::recreate_database_from_example(bool& user_cancelled)
     pulse_progress_message();
     if(!table_creation_succeeded)
     {
-      std::cerr << G_STRFUNC << ": CREATE TABLE failed with the newly-created database." << std::endl;
+      std::cerr << G_STRFUNC << ": CREATE TABLE failed with the newly-created database.\n";
       return false;
     }
   }
@@ -1613,7 +1613,7 @@ bool AppWindow::recreate_database_from_example(bool& user_cancelled)
 
       if(!table_insert_succeeded)
       {
-        std::cerr << G_STRFUNC << ": INSERT of example data failed with the newly-created database." << 
std::endl;
+        std::cerr << G_STRFUNC << ": INSERT of example data failed with the newly-created database.\n";
         return false;
       }
     //}
@@ -1633,7 +1633,7 @@ bool AppWindow::recreate_database_from_backup(const std::string& backup_data_fil
 {
   if(backup_data_file_path.empty())
   {
-    std::cerr << G_STRFUNC << ": backup_data_file_path is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": backup_data_file_path is empty.\n";
     return false;
   }
 
@@ -1658,7 +1658,7 @@ bool AppWindow::recreate_database_from_backup(const std::string& backup_data_fil
   {
     connection_pool->set_ready_to_connect(); //This has succeeded already.
     auto sharedconnection = connection_pool->connect();
-    std::cerr << G_STRFUNC << ": Failed because database exists already." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed because database exists already.\n";
 
     return false; //Connection to the database succeeded, because no exception was thrown. so the database 
exists already.
   }
@@ -1667,7 +1667,7 @@ bool AppWindow::recreate_database_from_backup(const std::string& backup_data_fil
     if(ex.get_failure_type() == ExceptionConnection::failure_type::NO_SERVER)
     {
       user_cancelled = true; //Eventually, the user will cancel after retrying.
-      std::cerr << G_STRFUNC << ": Failed because connection to server failed, without specifying a 
database." << std::endl;
+      std::cerr << G_STRFUNC << ": Failed because connection to server failed, without specifying a 
database.\n";
       return false;
     }
 
@@ -1713,7 +1713,7 @@ bool AppWindow::recreate_database_from_backup(const std::string& backup_data_fil
   bool test = DbUtils::add_standard_groups(document);
   if(!test)
   {
-    std::cerr << G_STRFUNC << ": DbUtils::add_standard_groups(): failed." << std::endl;
+    std::cerr << G_STRFUNC << ": DbUtils::add_standard_groups(): failed.\n";
     return false;
   }
 
@@ -1733,7 +1733,7 @@ bool AppWindow::recreate_database_from_backup(const std::string& backup_data_fil
 
   if(!restored)
   {
-    std::cerr << G_STRFUNC << ": Restore failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Restore failed.\n";
     return false;
   }
 
@@ -1796,7 +1796,7 @@ void AppWindow::fill_menu_tables()
     Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
   if(!menu)
   {
-    std::cerr << G_STRFUNC << ": GMenu not found" << std::endl;
+    std::cerr << G_STRFUNC << ": GMenu not found\n";
     return;
   }
 
@@ -1809,7 +1809,7 @@ void AppWindow::fill_menu_tables()
   const auto document = std::dynamic_pointer_cast<Document>(get_document());
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null." << std::endl;
+    std::cerr << G_STRFUNC << ": document is null.\n";
     return;
   }
 
@@ -1842,7 +1842,7 @@ void AppWindow::fill_menu_reports(const Glib::ustring& table_name)
     Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
   if(!menu)
   {
-    std::cerr << G_STRFUNC << ": GMenu not found" << std::endl;
+    std::cerr << G_STRFUNC << ": GMenu not found\n";
     return;
   }
 
@@ -1863,7 +1863,7 @@ void AppWindow::fill_menu_reports(const Glib::ustring& table_name)
   const auto document = std::dynamic_pointer_cast<Document>(get_document());
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null." << std::endl;
+    std::cerr << G_STRFUNC << ": document is null.\n";
     return;
   }
 
@@ -1922,7 +1922,7 @@ void AppWindow::fill_menu_print_layouts(const Glib::ustring& table_name)
     Glib::RefPtr<Gio::Menu>::cast_dynamic(object);
   if(!menu)
   {
-    std::cerr << G_STRFUNC << ": GMenu not found" << std::endl;
+    std::cerr << G_STRFUNC << ": GMenu not found\n";
     return;
   }
 
@@ -1943,7 +1943,7 @@ void AppWindow::fill_menu_print_layouts(const Glib::ustring& table_name)
   auto document = std::dynamic_pointer_cast<Document>(get_document());
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null." << std::endl;
+    std::cerr << G_STRFUNC << ": document is null.\n";
     return;
   }
 
@@ -1990,7 +1990,7 @@ void AppWindow::on_menu_file_save_as_example()
   bool bTest = false;
   auto document = std::dynamic_pointer_cast<Document>(get_document());
   if(!document) {
-    std::cerr << G_STRFUNC << ": document was null." << std::endl;
+    std::cerr << G_STRFUNC << ": document was null.\n";
   } else {
     const auto file_uriOld = document->get_file_uri();
 
diff --git a/glom/base_db.cc b/glom/base_db.cc
index e1ddd49..d51e7ae 100644
--- a/glom/base_db.cc
+++ b/glom/base_db.cc
@@ -160,7 +160,7 @@ AppState::userlevels Base_DB::get_userlevel() const
   }
   else
   {
-    std::cerr << G_STRFUNC << ": document not found." << std::endl;
+    std::cerr << G_STRFUNC << ": document not found.\n";
     return AppState::userlevels::OPERATOR;
   }
 }
@@ -262,7 +262,7 @@ std::shared_ptr<Field> Base_DB::change_column(const Glib::ustring& table_name, c
   {
     if(!connection_pool->change_column(table_name, field_old, result))
     {
-      std::cerr << G_STRFUNC << ": change_column() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": change_column() failed.\n";
       return std::shared_ptr<Field>();
     }
   }
@@ -319,7 +319,7 @@ Glib::RefPtr<Gnome::Gda::Connection> Base_DB::get_connection()
 
   if(!sharedconnection)
   {
-    std::cerr << G_STRFUNC << ": No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": No connection yet.\n";
     return Glib::RefPtr<Gnome::Gda::Connection>();
   }
 
@@ -649,7 +649,7 @@ void Base_DB::get_table_fields_to_show_for_sequence_add_group(const Glib::ustrin
 
   if(vecFields.empty())
   {
-    //std::cerr << G_STRFUNC << ": Returning empty list." << std::endl;
+    //std::cerr << G_STRFUNC << ": Returning empty list.\n";
   }
 }
 
@@ -725,7 +725,7 @@ Base_DB::type_vecConstLayoutFields Base_DB::get_table_fields_to_show_for_sequenc
 
   if(result.empty())
   {
-    //std::cerr << G_STRFUNC << ": Returning empty list." << std::endl;
+    //std::cerr << G_STRFUNC << ": Returning empty list.\n";
   }
 
   return result;
@@ -803,7 +803,7 @@ void Base_DB::calculate_field(const LayoutFieldInRecord& field_in_record)
   }
   else if(calc_progress.m_calc_finished)
   {
-    //std::cerr << G_STRFUNC << ": Already calculated." << std::endl;
+    //std::cerr << G_STRFUNC << ": Already calculated.\n";
 
     //Don't bother calculating it again. The correct value is already in the database and layout.
   }
@@ -936,13 +936,13 @@ bool Base_DB::set_field_value_in_database(const LayoutFieldInRecord& layoutfield
   //row is invalid, and ignored, for Box_Data_Details.
   if(!(field_in_record.m_field))
   {
-    std::cerr << G_STRFUNC << ": field_in_record.m_field is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": field_in_record.m_field is empty.\n";
     return false;
   }
 
   if(!(field_in_record.m_key))
   {
-    std::cerr << G_STRFUNC << ": field_in_record.m_key is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": field_in_record.m_key is empty.\n";
     return false;
   }
 
@@ -961,7 +961,7 @@ bool Base_DB::set_field_value_in_database(const LayoutFieldInRecord& layoutfield
       const auto test = DbUtils::query_execute(builder); //TODO: Respond to failure.
       if(!test)
       {
-        std::cerr << G_STRFUNC << ": UPDATE failed." << std::endl;
+        std::cerr << G_STRFUNC << ": UPDATE failed.\n";
         return false; //failed.
       }
     }
@@ -987,7 +987,7 @@ bool Base_DB::set_field_value_in_database(const LayoutFieldInRecord& layoutfield
     //Prevent circular calculations during the recursive do_calculations:
     {
       //Recalculate any calculated fields that depend on this calculated field.
-      //std::cerr << G_STRFUNC << ": calling do_calculations" << std::endl;
+      //std::cerr << G_STRFUNC << ": calling do_calculations\n";
 
       do_calculations(layoutfield_in_record, !use_current_calculations);
     }
@@ -1003,7 +1003,7 @@ Gnome::Gda::Value Base_DB::get_field_value_in_database(const LayoutFieldInRecord
   //row is invalid, and ignored, for Box_Data_Details.
   if(!(field_in_record.m_field))
   {
-    std::cerr << G_STRFUNC << ": field_in_record.m_field is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": field_in_record.m_field is empty.\n";
     return result;
   }
 
@@ -1020,7 +1020,7 @@ Gnome::Gda::Value Base_DB::get_field_value_in_database(const LayoutFieldInRecord
       
     if(!to_field.empty())
     {
-      std::cerr << G_STRFUNC << ": field_in_record.m_key is empty." << std::endl;
+      std::cerr << G_STRFUNC << ": field_in_record.m_key is empty.\n";
       return result;
     }
   }
@@ -1055,13 +1055,13 @@ Gnome::Gda::Value Base_DB::get_field_value_in_database(const std::shared_ptr<Fie
   //row is invalid, and ignored, for Box_Data_Details.
   if(!field)
   {
-    std::cerr << G_STRFUNC << ": field is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": field is empty.\n";
     return result;
   }
 
   if(found_set.m_where_clause.empty())
   {
-    std::cerr << G_STRFUNC << ": where_clause is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": where_clause is empty.\n";
     return result;
   }
 
@@ -1471,7 +1471,7 @@ bool Base_DB::set_database_owner_user(const Glib::ustring& user)
   const auto test = DbUtils::query_execute_string(strQuery);
   if(!test)
   {
-    std::cerr << G_STRFUNC << ": ALTER DATABASE failed." << std::endl;
+    std::cerr << G_STRFUNC << ": ALTER DATABASE failed.\n";
     return false;
   }
 
@@ -1494,7 +1494,7 @@ bool Base_DB::disable_user(const Glib::ustring& user)
   const auto test = DbUtils::query_execute_string(strQuery);
   if(!test)
   {
-    std::cerr << G_STRFUNC << ": DROP USER failed" << std::endl;
+    std::cerr << G_STRFUNC << ": DROP USER failed\n";
     return false;
   }
 
diff --git a/glom/base_db_table_data.cc b/glom/base_db_table_data.cc
index 8b6d567..892f86b 100644
--- a/glom/base_db_table_data.cc
+++ b/glom/base_db_table_data.cc
@@ -184,7 +184,7 @@ bool Base_DB_Table_Data::record_new(bool use_entered_data, const Gnome::Gda::Val
   {
     const auto test = DbUtils::query_execute(builder);
     if(!test)
-      std::cerr << G_STRFUNC << ": INSERT failed." << std::endl;
+      std::cerr << G_STRFUNC << ": INSERT failed.\n";
     else
     {
       auto row = get_row_selected(); //Null and ignored for details views.
@@ -211,7 +211,7 @@ bool Base_DB_Table_Data::record_new(bool use_entered_data, const Gnome::Gda::Val
     }
   }
   else
-    std::cerr << G_STRFUNC << ": Empty field names or values." << std::endl;
+    std::cerr << G_STRFUNC << ": Empty field names or values.\n";
 
   return false; //Failed.
 }
@@ -288,7 +288,7 @@ bool Base_DB_Table_Data::add_related_record_for_field(const std::shared_ptr<cons
       builder_insert->add_field_value(primary_key_field->get_name(), primary_key_value);
       if(!DbUtils::query_execute(builder_insert))
       {
-        std::cerr << G_STRFUNC << ": INSERT failed." << std::endl;
+        std::cerr << G_STRFUNC << ": INSERT failed.\n";
         return false;
       }
 
@@ -307,7 +307,7 @@ bool Base_DB_Table_Data::add_related_record_for_field(const std::shared_ptr<cons
           relationship->get_from_table(), relationship->get_from_field()); //TODO_Performance.
         if(!field_from_key)
         {
-          std::cerr << G_STRFUNC << ": get_fields_for_table_one_field() failed." << std::endl;
+          std::cerr << G_STRFUNC << ": get_fields_for_table_one_field() failed.\n";
           return false;
         }
 
@@ -339,7 +339,7 @@ bool Base_DB_Table_Data::add_related_record_for_field(const std::shared_ptr<cons
 
             if(!DbUtils::query_execute(builder_update))
             {
-              std::cerr << G_STRFUNC << ": UPDATE failed." << std::endl;
+              std::cerr << G_STRFUNC << ": UPDATE failed.\n";
               return false;
             }
           }
@@ -480,7 +480,7 @@ Base_DB_Table_Data::type_vecConstLayoutFields Base_DB_Table_Data::get_related_fi
 
 void Base_DB_Table_Data::refresh_related_fields(const LayoutFieldInRecord& field_in_record_changed, const 
Gtk::TreeModel::iterator& row, const Gnome::Gda::Value& /* field_value */)
 {
-  //std::cout << "DEBUG: Base_DB_Table_Data::refresh_related_fields()" << std::endl;
+  //std::cout << "DEBUG: Base_DB_Table_Data::refresh_related_fields()\n";
 
   if(field_in_record_changed.m_table_name != m_table_name)
     return; //TODO: Handle these too?
@@ -498,7 +498,7 @@ void Base_DB_Table_Data::refresh_related_fields(const LayoutFieldInRecord& field
     Glib::RefPtr<const Gnome::Gda::DataModel> result = DbUtils::query_execute_select(query);
     if(!result)
     {
-      std::cerr << G_STRFUNC << ": no result." << std::endl;
+      std::cerr << G_STRFUNC << ": no result.\n";
       handle_error();
     }
     else
@@ -511,7 +511,7 @@ void Base_DB_Table_Data::refresh_related_fields(const LayoutFieldInRecord& field
         const guint cols_count = result->get_n_columns();
         if(cols_count <= 0)
         {
-          std::cerr << G_STRFUNC << ": The result had 0 columns" << std::endl;
+          std::cerr << G_STRFUNC << ": The result had 0 columns\n";
         }
 
         for(guint uiCol = 0; uiCol < cols_count; ++uiCol)
@@ -519,7 +519,7 @@ void Base_DB_Table_Data::refresh_related_fields(const LayoutFieldInRecord& field
           const auto value = result->get_value_at(uiCol, 0 /* row */);
           auto layout_item = *iterFields;
           if(!layout_item)
-            std::cerr << G_STRFUNC << ": The layout_item was null." << std::endl;
+            std::cerr << G_STRFUNC << ": The layout_item was null.\n";
           else
           {
             //std::cout << "debug: " << G_STRFUNC << ": field_name=" << layout_item->get_name() << std::endl;
@@ -534,7 +534,7 @@ void Base_DB_Table_Data::refresh_related_fields(const LayoutFieldInRecord& field
         }
       }
       else
-        std::cerr << G_STRFUNC << ": no records found." << std::endl;
+        std::cerr << G_STRFUNC << ": no records found.\n";
     }
   }
 }
diff --git a/glom/box_reports.cc b/glom/box_reports.cc
index cc1a21b..516ed80 100644
--- a/glom/box_reports.cc
+++ b/glom/box_reports.cc
@@ -45,7 +45,7 @@ Box_Reports::Box_Reports(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builde
   builder->get_widget("button_cancel", pButtonCancel);
   if(!pButtonCancel)
   {
-    std::cerr << G_STRFUNC << "Missing widget from glade file." << std::endl;
+    std::cerr << G_STRFUNC << "Missing widget from glade file.\n";
     return;
   }
   set_button_cancel(*pButtonCancel);
@@ -54,7 +54,7 @@ Box_Reports::Box_Reports(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builde
   builder->get_widget("vbox_adddel_parent", pAddDelParent);
   if(!pAddDelParent)
   {
-    std::cerr << G_STRFUNC << "Missing widget from glade file." << std::endl;
+    std::cerr << G_STRFUNC << "Missing widget from glade file.\n";
     return;
   }
   pAddDelParent->pack_start(m_AddDel);
@@ -120,7 +120,7 @@ bool Box_Reports::fill_from_database()
     }
    }
   else
-    std::cerr << G_STRFUNC << ": document is null" << std::endl;
+    std::cerr << G_STRFUNC << ": document is null\n";
 
   //TODO:
 
diff --git a/glom/dialog_connection.cc b/glom/dialog_connection.cc
index 9c69f7f..d8e75c4 100644
--- a/glom/dialog_connection.cc
+++ b/glom/dialog_connection.cc
@@ -55,7 +55,7 @@ Dialog_Connection::Dialog_Connection(BaseObjectType* cobject, const Glib::RefPtr
 
 std::shared_ptr<SharedConnection> Dialog_Connection::connect_to_server_with_connection_settings() const
 {
-  //std::cout << "debug: Dialog_Connection::connect_to_server_with_connection_settings()" << std::endl;
+  //std::cout << "debug: Dialog_Connection::connect_to_server_with_connection_settings()\n";
 
   //TODO: BusyCursor busy_cursor(get_app_window());
 
@@ -168,7 +168,7 @@ void Dialog_Connection::load_from_document()
     set_database_name(document->get_connection_database());
   }
   else
-    std::cerr << G_STRFUNC << ": no document" << std::endl;
+    std::cerr << G_STRFUNC << ": no document\n";
 
 }
 
diff --git a/glom/dialog_existing_or_new.cc b/glom/dialog_existing_or_new.cc
index 2fd41bd..490d0bf 100644
--- a/glom/dialog_existing_or_new.cc
+++ b/glom/dialog_existing_or_new.cc
@@ -666,13 +666,13 @@ void Dialog_ExistingOrNew::append_example(const Glib::ustring& title, const std:
 {
   if(!m_new_model)
   {
-    std::cerr << G_STRFUNC << ": m_new_model is null" << std::endl;
+    std::cerr << G_STRFUNC << ": m_new_model is null\n";
     return;
   }
 
   if(!m_iter_new_template)
   {
-    std::cerr << G_STRFUNC << ": m_iter_new_template is null" << std::endl;
+    std::cerr << G_STRFUNC << ": m_iter_new_template is null\n";
     return;
   }
 
diff --git a/glom/filechooser_export.cc b/glom/filechooser_export.cc
index 958d467..f27e600 100644
--- a/glom/filechooser_export.cc
+++ b/glom/filechooser_export.cc
@@ -77,7 +77,7 @@ void FileChooser_Export::set_export_layout(const Document::type_list_layout_grou
   m_table_name = table_name;
   m_document = document;
   if(!m_document)
-    std::cerr << G_STRFUNC << ": FileChooser_Export::set_export_layout() document is NULL." << std::endl;
+    std::cerr << G_STRFUNC << ": FileChooser_Export::set_export_layout() document is NULL.\n";
 }
 
 //We only allow a full export in client-only mode, 
diff --git a/glom/frame_glom.cc b/glom/frame_glom.cc
index ab7be0f..58d3bd8 100644
--- a/glom/frame_glom.cc
+++ b/glom/frame_glom.cc
@@ -416,7 +416,7 @@ void Frame_Glom::show_table_allow_empty(const Glib::ustring& table_name, const G
     }
     default:
     {
-      std::cout << "debug: " << G_STRFUNC << ": Unexpected mode" << std::endl;
+      std::cout << "debug: " << G_STRFUNC << ": Unexpected mode\n";
       break;
     }
   }
@@ -473,16 +473,16 @@ bool Frame_Glom::attempt_change_usermode_to_developer()
 
   if(test)
   {
-    std::cout << "DEBUG: User=" << connection_pool->get_user() << " _is_ in the developer group on the 
server." << std::endl;
+    std::cout << "DEBUG: User=" << connection_pool->get_user() << " _is_ in the developer group on the 
server.\n";
     //Avoid double signals:
     //if(document->get_userlevel() != AppState::userlevels::DEVELOPER)
     test = document->set_userlevel(AppState::userlevels::DEVELOPER);
     if(!test)
-      std::cout << "  DEBUG: But document->set_userlevel(AppState::userlevels::DEVELOPER) failed." << 
std::endl;
+      std::cout << "  DEBUG: But document->set_userlevel(AppState::userlevels::DEVELOPER) failed.\n";
   }
   else
   {
-    std::cout << "DEBUG: User=" << connection_pool->get_user() << " is _not_ in the developer group on the 
server." << std::endl;
+    std::cout << "DEBUG: User=" << connection_pool->get_user() << " is _not_ in the developer group on the 
server.\n";
   }
 
   //If this was not possible then revert the menu:
@@ -591,7 +591,7 @@ void Frame_Glom::export_data_to_vector(Document::type_example_rows& the_vector,
 
   if(fieldsSequence.empty())
   {
-    std::cerr << G_STRFUNC << ": No fields in sequence." << std::endl;
+    std::cerr << G_STRFUNC << ": No fields in sequence.\n";
     return;
   }
 
@@ -641,7 +641,7 @@ void Frame_Glom::export_data_to_stream(std::ostream& the_stream, const FoundSet&
 
   if(fieldsSequence.empty())
   {
-    std::cerr << G_STRFUNC << ": No fields in sequence." << std::endl;
+    std::cerr << G_STRFUNC << ": No fields in sequence.\n";
     return;
   }
 
@@ -676,7 +676,7 @@ void Frame_Glom::export_data_to_stream(std::ostream& the_stream, const FoundSet&
             auto field = layout_item->get_full_field_details();
             if(!field)
             {
-              std::cerr << G_STRFUNC << ": A field was null." << std::endl;
+              std::cerr << G_STRFUNC << ": A field was null.\n";
               return;
             }
 
@@ -765,7 +765,7 @@ void Frame_Glom::on_menu_file_import()
         int response = Gtk::RESPONSE_OK;
         if(!progress_dialog)
         {
-          std::cerr << G_STRFUNC << ": progress_dialog was null." << std::endl;
+          std::cerr << G_STRFUNC << ": progress_dialog was null.\n";
         }
         else
         {
@@ -901,13 +901,13 @@ bool Frame_Glom::attempt_toggle_shared(bool shared)
             {
               //This message should be reassuring if the user sees a previous error
               //about the default user not being removed.
-              std::cout << G_STRFUNC << ": The default user could not be removed, but it has been disabled." 
<< std::endl;
+              std::cout << G_STRFUNC << ": The default user could not be removed, but it has been 
disabled.\n";
             }
           }
 
           if(!reowned || !(removed || disabled))
           {
-            std::cerr << G_STRFUNC << ": Failed to reown and remove/revoke default user." << std::endl;
+            std::cerr << G_STRFUNC << ": Failed to reown and remove/revoke default user.\n";
             shared = false;
             change = false;
           }
@@ -987,7 +987,7 @@ bool Frame_Glom::attempt_toggle_shared(bool shared)
     {
       //TODO: Output more exact details of the error message.
       //TODO: Recover somehow?
-      std::cerr << G_STRFUNC << ": startup() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": startup() failed.\n";
       return false;
     }
 
@@ -1169,7 +1169,7 @@ void Frame_Glom::on_dialog_add_related_table_response(int response)
       const auto result = DbUtils::create_table_with_default_fields(get_document(), table_name);
       if(!result)
       {
-        std::cerr << G_STRFUNC << ": create_table_with_default_fields() failed." << std::endl;
+        std::cerr << G_STRFUNC << ": create_table_with_default_fields() failed.\n";
         return;
       }
 
@@ -1185,7 +1185,7 @@ void Frame_Glom::on_dialog_add_related_table_response(int response)
       auto related_primary_key = get_field_primary_key_for_table(table_name); //This field was created by 
create_table_with_default_fields().
       if(!related_primary_key)
       {
-        std::cerr << G_STRFUNC << ": get_field_primary_key_for_table() failed." << std::endl;
+        std::cerr << G_STRFUNC << ": get_field_primary_key_for_table() failed.\n";
         return;
       }
 
@@ -1312,7 +1312,7 @@ void Frame_Glom::on_notebook_find_criteria(const Gnome::Gda::SqlExpr& where_clau
   auto app = dynamic_cast<AppWindow*>(get_app_window());
   if(!app)
   {
-    std::cerr << G_STRFUNC << ": get_app_window() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": get_app_window() failed.\n";
     return;
   }
 
@@ -1429,7 +1429,7 @@ void Frame_Glom::update_table_in_document_from_database()
   {
     std::cerr << G_STRFUNC << ": Could not get the list of fields for table=" << m_table_name <<
       " from the database. This might be due to insufficient database user rights." << 
-      " Falling back to the field details in the document." << std::endl;
+      " Falling back to the field details in the document.\n";
   }
 
   auto pDoc = std::dynamic_pointer_cast<Document>(get_document());
@@ -1626,7 +1626,7 @@ void Frame_Glom::do_menu_developer_relationships(Gtk::Window& parent, const Glib
     Utils::get_glade_widget_derived_with_warning(m_pDialog_Relationships);
     if(!m_pDialog_Relationships)
     {
-      std::cerr << G_STRFUNC << ": m_pDialog_Relationships is null." << std::endl;
+      std::cerr << G_STRFUNC << ": m_pDialog_Relationships is null.\n";
       return;
     }
     
@@ -1697,7 +1697,7 @@ void Frame_Glom::on_menu_developer_reports()
       Utils::get_glade_child_widget_derived_with_warning(m_pBox_Reports);
     if(!m_pBox_Reports)
     {
-      std::cerr << G_STRFUNC << ": m_pBox_Reports is null." << std::endl;
+      std::cerr << G_STRFUNC << ": m_pBox_Reports is null.\n";
       return;
     }
 
@@ -1708,7 +1708,7 @@ void Frame_Glom::on_menu_developer_reports()
     Utils::get_glade_widget_derived_with_warning(m_pDialogLayoutReport);
     if(!m_pDialogLayoutReport)
     {
-      std::cerr << G_STRFUNC << ": m_pDialogLayoutReport is null." << std::endl;
+      std::cerr << G_STRFUNC << ": m_pDialogLayoutReport is null.\n";
       return;
     }
 
@@ -1740,7 +1740,7 @@ void Frame_Glom::on_menu_developer_print_layouts()
       Utils::get_glade_child_widget_derived_with_warning(m_pBox_PrintLayouts);
     if(!m_pBox_PrintLayouts)
     {
-      std::cerr << G_STRFUNC << ": m_pBox_PrintLayouts is null." << std::endl;
+      std::cerr << G_STRFUNC << ": m_pBox_PrintLayouts is null.\n";
       return;
     }
 
@@ -1792,14 +1792,14 @@ void Frame_Glom::add_window_to_app(Gtk::ApplicationWindow* window)
 {
   if(!window)
   {
-    std::cerr << G_STRFUNC << ": window is null." << std::endl;
+    std::cerr << G_STRFUNC << ": window is null.\n";
     return;
   }
 
   auto app_window = get_app_window();
   if(!app_window)
   {
-    std::cerr << G_STRFUNC << ": app_window is null" << std::endl;
+    std::cerr << G_STRFUNC << ": app_window is null\n";
     return;
   }
 
@@ -1809,7 +1809,7 @@ void Frame_Glom::add_window_to_app(Gtk::ApplicationWindow* window)
     app->add_window(*window);
   else
   {
-    std::cerr << G_STRFUNC << ": app is null." << std::endl;
+    std::cerr << G_STRFUNC << ": app is null.\n";
   }
 }
 
@@ -1818,7 +1818,7 @@ void Frame_Glom::on_box_print_layouts_selected(const Glib::ustring& print_layout
   auto app_window = get_app_window();
   if(!app_window)
   {
-    std::cerr << G_STRFUNC << ": app_window is null" << std::endl;
+    std::cerr << G_STRFUNC << ": app_window is null\n";
     return;
   }
 
@@ -1828,7 +1828,7 @@ void Frame_Glom::on_box_print_layouts_selected(const Glib::ustring& print_layout
     Utils::get_glade_widget_derived_with_warning(m_pDialogLayoutPrint);
     if(!m_pDialogLayoutPrint)
     {
-      std::cerr << G_STRFUNC << ": m_pDialogLayoutPrint is null" << std::endl;
+      std::cerr << G_STRFUNC << ": m_pDialogLayoutPrint is null\n";
       return;
     }
 
@@ -1982,7 +1982,7 @@ void Frame_Glom::instantiate_dialog_connection()
   Utils::get_glade_widget_derived_with_warning(m_pDialogConnection);
   if(!m_pDialogConnection)
   {
-    std::cerr << G_STRFUNC << ": m_pDialogConnection is null." << std::endl;
+    std::cerr << G_STRFUNC << ": m_pDialogConnection is null.\n";
   }
 
   add_view(m_pDialogConnection); //Also a composite view.
@@ -2039,7 +2039,7 @@ bool Frame_Glom::connection_request_password_and_choose_new_database_name()
         if(!initialized)
           return false;
 
-        //std::cout << "DEBUG: after connection_pool->initialize(). The database cluster should now exist." 
<< std::endl;
+        //std::cout << "DEBUG: after connection_pool->initialize(). The database cluster should now 
exist.\n";
 
         break;
       }
@@ -2107,7 +2107,7 @@ bool Frame_Glom::connection_request_password_and_choose_new_database_name()
         connection_pool->startup( sigc::mem_fun(*this, &Frame_Glom::on_connection_startup_progress) );
       if(started != ConnectionPool::Backend::StartupErrors::NONE)
       {
-        std::cerr << G_STRFUNC << ": startup() failed." << std::endl;
+        std::cerr << G_STRFUNC << ": startup() failed.\n";
         //TODO: Output more exact details of the error message.
         cleanup_connection();
         return false;
@@ -2181,7 +2181,7 @@ void Frame_Glom::cleanup_connection()
 
 bool Frame_Glom::handle_request_password_connection_error(bool asked_for_password, const 
ExceptionConnection& ex, bool& database_not_found)
 {
-  std::cerr << G_STRFUNC << ": caught exception." << std::endl;
+  std::cerr << G_STRFUNC << ": caught exception.\n";
 
   //Initialize input parameter:
   database_not_found = false;
@@ -2227,7 +2227,7 @@ bool Frame_Glom::connection_request_password_and_attempt(bool& database_not_foun
     connection_pool->startup( sigc::mem_fun(*this, &Frame_Glom::on_connection_startup_progress) );
   if(started != ConnectionPool::Backend::StartupErrors::NONE)
   {
-    std::cerr << G_STRFUNC << ": startup() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": startup() failed.\n";
     return false;
     //TODO: Output more exact details of the error message.
   }
@@ -2235,7 +2235,7 @@ bool Frame_Glom::connection_request_password_and_attempt(bool& database_not_foun
   auto app = dynamic_cast<AppWindow*>(get_app_window());
   if(!app)
   {
-    std::cerr << G_STRFUNC << ": app is null." << std::endl;
+    std::cerr << G_STRFUNC << ": app is null.\n";
     return false;
   }
 
@@ -2355,7 +2355,7 @@ bool Frame_Glom::create_database(const Glib::ustring& database_name, const Glib:
     Utils::get_glade_widget_with_warning("glom_developer.glade", "dialog_error_create_database", dialog);
     if(!dialog)
     {
-      std::cerr << G_STRFUNC << ": dialog is null." << std::endl;
+      std::cerr << G_STRFUNC << ": dialog is null.\n";
       return false;
     }
 
diff --git a/glom/glom_create_from_example.cc b/glom/glom_create_from_example.cc
index d09d91a..f4878dd 100644
--- a/glom/glom_create_from_example.cc
+++ b/glom/glom_create_from_example.cc
@@ -125,22 +125,22 @@ GlomCreateOptionGroup::GlomCreateOptionGroup()
 
 static void on_initialize_progress()
 {
-  std::cout << "Database initialization progress" << std::endl;
+  std::cout << "Database initialization progress\n";
 }
 
 static void on_startup_progress()
 {
-  std::cout << "Database startup progress" << std::endl;
+  std::cout << "Database startup progress\n";
 }
 
 static void on_recreate_progress()
 {
-  std::cout << "Database re-creation progress" << std::endl;
+  std::cout << "Database re-creation progress\n";
 }
 
 static void on_cleanup_progress()
 {
-  std::cout << "Database cleanup progress" << std::endl;
+  std::cout << "Database cleanup progress\n";
 }
 
 /** Delete a directory, if it exists, and its contents.
@@ -240,7 +240,7 @@ int main(int argc, char* argv[])
     //https://bugzilla.gnome.org/show_bug.cgi?id=619445
     //This should tell us what the problem is:
     std::cerr << G_STRFUNC << ": exception from std::locale::global(std::locale(\"\")): " << ex.what() << 
std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
   }
 
   
@@ -312,7 +312,7 @@ int main(int argc, char* argv[])
   
   if(input_uri.empty())
   {
-    std::cerr << G_STRFUNC << ": Please specify a glom example file." << std::endl;
+    std::cerr << G_STRFUNC << ": Please specify a glom example file.\n";
     std::cerr << std::endl << context.get_help() << std::endl;
     return EXIT_FAILURE;
   }
@@ -321,7 +321,7 @@ int main(int argc, char* argv[])
   //Check the output directory path: 
   if(group.m_arg_filepath_dir_output.empty())
   {
-    std::cerr << G_STRFUNC << ": Please specify an output directory path." << std::endl;
+    std::cerr << G_STRFUNC << ": Please specify an output directory path.\n";
     std::cerr << std::endl << context.get_help() << std::endl;
     return EXIT_FAILURE;
   }
@@ -351,7 +351,7 @@ int main(int argc, char* argv[])
   //Check the output name path: 
   if(group.m_arg_filepath_name_output.empty())
   {
-    std::cerr << G_STRFUNC << ": Please specify an output name." << std::endl;
+    std::cerr << G_STRFUNC << ": Please specify an output name.\n";
     std::cerr << std::endl << context.get_help() << std::endl;
     return EXIT_FAILURE;
   }
@@ -407,7 +407,7 @@ int main(int argc, char* argv[])
   const auto self_hosting = group.m_arg_server_hostname.empty();
   if(self_hosting)
   {
-    std::cout << "Using self-hosting instead of a central database server." << std::endl;
+    std::cout << "Using self-hosting instead of a central database server.\n";
 
 #if GLOM_ENABLE_MYSQL
     if(group.m_arg_use_mysql)
@@ -459,7 +459,7 @@ int main(int argc, char* argv[])
 
 #ifdef G_OS_WIN32
     const char* password = "";
-    std::cerr << G_STRFUNC << ": Error: getpass() is not implemented in the Windows build. The connection 
will fail." << std::endl;
+    std::cerr << G_STRFUNC << ": Error: getpass() is not implemented in the Windows build. The connection 
will fail.\n";
 #else
     const auto password = ::getpass(prompt.c_str());
 #endif
@@ -489,7 +489,7 @@ int main(int argc, char* argv[])
       Glom::DbUtils::get_unused_database_name(document->get_connection_database());
     if(database_name.empty())
     {
-      std::cerr << G_STRFUNC << ": Could not find an unused database name" << std::endl;
+      std::cerr << G_STRFUNC << ": Could not find an unused database name\n";
     }
     else
       document->set_connection_database(database_name);
diff --git a/glom/glom_export_po.cc b/glom/glom_export_po.cc
index f097d26..b1304fc 100644
--- a/glom/glom_export_po.cc
+++ b/glom/glom_export_po.cc
@@ -93,7 +93,7 @@ int main(int argc, char* argv[])
     //https://bugzilla.gnome.org/show_bug.cgi?id=619445
     //This should tell us what the problem is:
     std::cerr << G_STRFUNC << ": exception from std::locale::global(std::locale(\"\")): " << ex.what() << 
std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
   }
   
 
diff --git a/glom/glom_export_po_all.cc b/glom/glom_export_po_all.cc
index 034dfe6..d2d97f3 100644
--- a/glom/glom_export_po_all.cc
+++ b/glom/glom_export_po_all.cc
@@ -81,7 +81,7 @@ int main(int argc, char* argv[])
     //https://bugzilla.gnome.org/show_bug.cgi?id=619445
     //This should tell us what the problem is:
     std::cerr << G_STRFUNC << ": exception from std::locale::global(std::locale(\"\")): " << ex.what() << 
std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
   }
 
   
diff --git a/glom/glom_import_po_all.cc b/glom/glom_import_po_all.cc
index 90d4ed2..89086a6 100644
--- a/glom/glom_import_po_all.cc
+++ b/glom/glom_import_po_all.cc
@@ -82,7 +82,7 @@ int main(int argc, char* argv[])
     //https://bugzilla.gnome.org/show_bug.cgi?id=619445
     //This should tell us what the problem is:
     std::cerr << G_STRFUNC << ": exception from std::locale::global(std::locale(\"\")): " << ex.what() << 
std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
   }
 
   
diff --git a/glom/glom_test_connection.cc b/glom/glom_test_connection.cc
index f59e938..0020836 100644
--- a/glom/glom_test_connection.cc
+++ b/glom/glom_test_connection.cc
@@ -129,7 +129,7 @@ int main(int argc, char* argv[])
     //https://bugzilla.gnome.org/show_bug.cgi?id=619445
     //This should tell us what the problem is:
     std::cerr << G_STRFUNC << ": exception from std::locale::global(std::locale(\"\")): " << ex.what() << 
std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
   }
 
 
@@ -163,7 +163,7 @@ int main(int argc, char* argv[])
 
   if(group.m_arg_server_hostname.empty())
   {
-    std::cerr << G_STRFUNC << ": Please provide a database hostname." << std::endl;
+    std::cerr << G_STRFUNC << ": Please provide a database hostname.\n";
     print_options_hint();
     return EXIT_FAILURE;
   }
@@ -184,7 +184,7 @@ int main(int argc, char* argv[])
 
 #ifdef G_OS_WIN32
   const char* password = "";
-  std::cerr << G_STRFUNC << ": Error: getpass() is not implemented in the Windows build. The connection will 
fail." << std::endl;
+  std::cerr << G_STRFUNC << ": Error: getpass() is not implemented in the Windows build. The connection will 
fail.\n";
 #else
   const auto password = ::getpass(prompt.c_str());
 #endif
diff --git a/glom/import_csv/csv_parser.cc b/glom/import_csv/csv_parser.cc
index 13613e2..522aed5 100644
--- a/glom/import_csv/csv_parser.cc
+++ b/glom/import_csv/csv_parser.cc
@@ -111,14 +111,14 @@ const Glib::ustring& CsvParser::get_data(guint row, guint col) const
 
   if(row >= m_rows.size())
   {
-    //std::cerr << G_STRFUNC << ": get_data(): row out of range." << std::endl;
+    //std::cerr << G_STRFUNC << ": get_data(): row out of range.\n";
     return empty_result;
   }
 
   const auto row_data = m_rows[row];
   if(col >= row_data.size())
   {
-    //std::cerr << G_STRFUNC << ": get_data(): col out of range." << std::endl;
+    //std::cerr << G_STRFUNC << ": get_data(): col out of range.\n";
     return empty_result;
   }
 
@@ -350,12 +350,12 @@ bool CsvParser::on_idle_parse()
 
     if(pos == outbuf)
     {
-      //std::cout << "debug: not found. stopping" << std::endl;
+      //std::cout << "debug: not found. stopping\n";
       break;
     }
 
     char ch = *pos;
-    //std::cout << "debug: ch=START" << ch << "END" << std::endl;
+    //std::cout << "debug: ch=START" << ch << "END\n";
 
     if(ch == '\0')
     {
@@ -363,7 +363,7 @@ bool CsvParser::on_idle_parse()
       // contain null bytes this only occurs when converting, for example, a UTF-16
       // file from ISO-8859-1 to UTF-8 (note that the UTF-16 file is valid ISO-8859-1 -
       // it just contains lots of nullbytes). We therefore produce an error here.
-      //std::cerr << G_STRFUNC << ": on_idle_parse(): Encoding error" << std::endl;
+      //std::cerr << G_STRFUNC << ": on_idle_parse(): Encoding error\n";
       set_state(State::ENCODING_ERROR);
       signal_encoding_error().emit();
       return false;  //Stop calling the idle handler.
@@ -386,7 +386,7 @@ bool CsvParser::on_idle_parse()
         */
       }
       //else
-      //  std::cout << "Ignoring a newline in quotes." << std::endl;
+      //  std::cout << "Ignoring a newline in quotes.\n";
 
       prev = pos + 1;
       continue;
@@ -407,7 +407,7 @@ bool CsvParser::on_idle_parse()
 
       if(!m_current_line.empty())
       {
-        //std::cout << "debug: intermediate chunk" << std::endl;
+        //std::cout << "debug: intermediate chunk\n";
         do_line_scanned(m_current_line, m_line_number);
       }
 
@@ -437,7 +437,7 @@ bool CsvParser::on_idle_parse()
     // Handle last line, if nonempty
     if(!m_current_line.empty())
     {
-      //std::cout << "debug: last chunk" << std::endl;
+      //std::cout << "debug: last chunk\n";
       do_line_scanned(m_current_line, m_line_number);
     }
 
diff --git a/glom/import_csv/dialog_import_csv.cc b/glom/import_csv/dialog_import_csv.cc
index 0f77788..1964fba 100644
--- a/glom/import_csv/dialog_import_csv.cc
+++ b/glom/import_csv/dialog_import_csv.cc
@@ -83,7 +83,7 @@ Dialog_Import_CSV::Dialog_Import_CSV(BaseObjectType* cobject, const Glib::RefPtr
 
   if(!m_sample_view || !m_encoding_combo || !m_target_table || !m_encoding_info || !m_first_line_as_title || 
!m_sample_rows || !m_error_label)
   {
-    std::cerr << G_STRFUNC << ": Missing widgets from glade file for Dialog_Import_CSV" << std::endl;
+    std::cerr << G_STRFUNC << ": Missing widgets from glade file for Dialog_Import_CSV\n";
   }
 
   //Set the adjustment details, to avoid a useless 0-to-0 range and a 0 incremenet.
diff --git a/glom/import_csv/dialog_import_csv_progress.cc b/glom/import_csv/dialog_import_csv_progress.cc
index abc0cd5..fd40576 100644
--- a/glom/import_csv/dialog_import_csv_progress.cc
+++ b/glom/import_csv/dialog_import_csv_progress.cc
@@ -46,7 +46,7 @@ Dialog_Import_CSV_Progress::Dialog_Import_CSV_Progress(BaseObjectType* cobject,
 
   if(!m_progress_bar || !m_text_view)
   {
-    std::cerr << G_STRFUNC << "Missing widgets from glade file for Dialog_Import_CSV_Progress" << std::endl;
+    std::cerr << G_STRFUNC << "Missing widgets from glade file for Dialog_Import_CSV_Progress\n";
   }
 }
 
@@ -241,9 +241,9 @@ bool Dialog_Import_CSV_Progress::on_idle_import()
   }
   else
   {
-    //std::cout << "debug: " << G_STRFUNC << ": Calling record_new() with primary_key_value=" << 
primary_key_value.to_string() << " ..." << std::endl;
+    //std::cout << "debug: " << G_STRFUNC << ": Calling record_new() with primary_key_value=" << 
primary_key_value.to_string() << " ...\n";
     record_new(true /* use_entered_data */, primary_key_value);
-    //std::cout << "debug: " << G_STRFUNC << ": ... Finished calling record_new()" << std::endl;
+    //std::cout << "debug: " << G_STRFUNC << ": ... Finished calling record_new()\n";
   }
 
   m_current_row_values.clear();
diff --git a/glom/libglom/connectionpool.cc b/glom/libglom/connectionpool.cc
index bfda345..be5d938 100644
--- a/glom/libglom/connectionpool.cc
+++ b/glom/libglom/connectionpool.cc
@@ -241,7 +241,7 @@ std::shared_ptr<SharedConnection> ConnectionPool::get_and_connect()
 
   if(!(connection_pool->m_backend))
   {
-    std::cerr << G_STRFUNC << ": m_backend is null." << std::endl;
+    std::cerr << G_STRFUNC << ": m_backend is null.\n";
     return result; //TODO: Return a failure_type::NO_BACKEND error?, though that would be tedious.
   }
 
@@ -270,7 +270,7 @@ static sigc::connection connection_cached_finished_connection;
 
 static bool on_connection_pool_cache_timeout()
 {
-  //std::cout << "DEBUG: Clearing connection cache." << std::endl;
+  //std::cout << "DEBUG: Clearing connection cache.\n";
 
   //Forget the cached connection after a few seconds:
   connection_cached.reset();
@@ -281,7 +281,7 @@ static bool on_connection_pool_cache_timeout()
 
 std::shared_ptr<SharedConnection> ConnectionPool::connect()
 {
-  //std::cout << G_STRFUNC << ": debug" << std::endl;
+  //std::cout << G_STRFUNC << ": debug\n";
 
   //Don't try to connect if we don't have a backend to connect to.
   g_return_val_if_fail(m_backend, std::shared_ptr<SharedConnection>());
@@ -311,7 +311,7 @@ std::shared_ptr<SharedConnection> ConnectionPool::connect()
       m_sharedconnection_refcount++;
 
       //Store the connection in a cache for a few seconds to avoid unnecessary disconnections/reconnections:
-      //std::cout << "DEBUG: Stored connection cache." << std::endl;
+      //std::cout << "DEBUG: Stored connection cache.\n";
       connection_cached = sharedConnection;
       connection_cached_timeout_connection.disconnect(); //Stop the existing timeout if it has not run yet.
       connection_cached_timeout_connection = 
Glib::signal_timeout().connect_seconds(&on_connection_pool_cache_timeout, 30 /* seconds */);
@@ -325,7 +325,7 @@ std::shared_ptr<SharedConnection> ConnectionPool::connect()
       {
         //Allow get_meta_store_data() to succeed:
         //Hopefully this (and the update_meta_store_table() calls) is all we need.
-        //std::cout << "DEBUG: Calling update_meta_store_data_types() ..." << std::endl;
+        //std::cout << "DEBUG: Calling update_meta_store_data_types() ...\n";
         try
         {
           m_refGdaConnection->update_meta_store_data_types();
@@ -340,14 +340,14 @@ std::shared_ptr<SharedConnection> ConnectionPool::connect()
             std::cerr << G_STRFUNC << ": update_meta_store_data_types() failed: " << ex.what() << std::endl;
           }
         }
-        //std::cout << "DEBUG: ... update_meta_store_data_types() has finished." << std::endl;
+        //std::cout << "DEBUG: ... update_meta_store_data_types() has finished.\n";
 
-        //std::cout << "DEBUG: Calling update_meta_store_table_names() ..." << std::endl;
+        //std::cout << "DEBUG: Calling update_meta_store_table_names() ...\n";
 
         if(!update_meta_store_for_table_names()) {
-          std::cerr << G_STRFUNC << ": update_meta_store_table_names() failed without an exception." << 
std::endl;
+          std::cerr << G_STRFUNC << ": update_meta_store_table_names() failed without an exception.\n";
         }
-        //std::cout << "DEBUG: ... update_meta_store_table_names() has finished." << std::endl;
+        //std::cout << "DEBUG: ... update_meta_store_table_names() has finished.\n";
 
         // Connection succeeded
         // Create the fieldtypes member if it has not already been done:
@@ -371,7 +371,7 @@ std::shared_ptr<SharedConnection> ConnectionPool::connect()
   }
   else
   {
-    //std::cerr << G_STRFUNC << ": not ready to connect." << std::endl;
+    //std::cerr << G_STRFUNC << ": not ready to connect.\n";
   }
 
   return std::shared_ptr<SharedConnection>();
@@ -388,7 +388,7 @@ void ConnectionPool::set_user(const Glib::ustring& value)
   if(value.empty())
   {
 #ifdef GLOM_CONNECTION_DEBUG
-    std::cout << "debug: " << G_STRFUNC << ": user is empty." << std::endl;
+    std::cout << "debug: " << G_STRFUNC << ": user is empty.\n";
 #endif
   }
 
@@ -487,7 +487,7 @@ std::shared_ptr<const FieldTypes> ConnectionPool::get_field_types() const
 {
   //TODO: Investigate this:
   //if(!m_field_types)
-  //  std::cerr << G_STRFUNC << ": m_field_types is null but this should never happen." << std::endl;
+  //  std::cerr << G_STRFUNC << ": m_field_types is null but this should never happen.\n";
 
   return m_field_types;
 }
@@ -500,7 +500,7 @@ Gnome::Gda::SqlOperatorType ConnectionPool::get_string_find_operator() const
 
 void ConnectionPool::invalidate_connection()
 {
-  //std::cerr << G_STRFUNC << ": debug" << std::endl;
+  //std::cerr << G_STRFUNC << ": debug\n";
   connection_cached.reset();
   connection_cached_timeout_connection.disconnect();
   connection_cached_finished_connection.disconnect();
@@ -526,7 +526,7 @@ void ConnectionPool::on_sharedconnection_finished()
   {
     //There should be no copies of the m_refConnection, so the Gnome::Gda::Connection destructor should
     //run when we clear this last RefPtr of it, but we will explicitly close it just in case.
-    //std::cerr << G_STRFUNC << ": closing GdaConnection" << std::endl;
+    //std::cerr << G_STRFUNC << ": closing GdaConnection\n";
     m_refGdaConnection->close();
 
     m_refGdaConnection.reset();
@@ -794,7 +794,7 @@ std::shared_ptr<Document> ConnectionPool::get_document()
   {
     //Don't bother warning because all the code that calls get_document() checks 
     //for 0 and responds reasonably.
-    //std::cerr << G_STRFUNC << ": m_slot_get_document is null." << std::endl;
+    //std::cerr << G_STRFUNC << ": m_slot_get_document is null.\n";
     return nullptr;
   }
 
@@ -814,7 +814,7 @@ EpcContents* ConnectionPool::on_publisher_document_requested(EpcPublisher* /* pu
     return nullptr;
 
   const auto contents = document->get_contents();
-  //std::cout << "debug: " << G_STRFUNC << ": returning: " << std::endl << "  " << contents << std::endl;
+  //std::cout << "debug: " << G_STRFUNC << ": returning: \n" << "  " << contents << std::endl;
   return epc_contents_new_dup ("text/plain", (void*)contents.c_str(), -1);
 }
 
@@ -843,12 +843,12 @@ gboolean ConnectionPool::on_publisher_document_authentication(EpcAuthContext* co
 
   if(connection)
   {
-    //std::cout << "debug: " << G_STRFUNC << ": succeeded." << std::endl;
+    //std::cout << "debug: " << G_STRFUNC << ": succeeded.\n";
     return true; //Succeeded.
   }
   else
   {
-    //std::cout << "debug: " << G_STRFUNC << ": failed." << std::endl;
+    //std::cout << "debug: " << G_STRFUNC << ": failed.\n";
     return false; //Failed.
   }
 }
@@ -899,7 +899,7 @@ void ConnectionPool::avahi_start_publishing()
   if(m_epc_publisher)
     return;
 #ifdef GLOM_CONNECTION_DEBUG
-  std::cout << "debug: ConnectionPool::avahi_start_publishing" << std::endl;
+  std::cout << "debug: ConnectionPool::avahi_start_publishing\n";
 #endif
 
   //Publish the document contents over HTTPS (discoverable via avahi):
@@ -954,7 +954,7 @@ void ConnectionPool::avahi_stop_publishing()
   if(!m_epc_publisher)
     return;
 #ifdef GLOM_CONNECTION_DEBUG
-  std::cout << "debug: ConnectionPool::avahi_stop_publishing" << std::endl;
+  std::cout << "debug: ConnectionPool::avahi_stop_publishing\n";
 #endif
 
 #ifndef G_OS_WIN32
@@ -1000,11 +1000,11 @@ bool ConnectionPool::update_meta_store_for_table_names()
   {
     //update_meta_store_table_names() has been known to throw an exception.
     //Glom is mostly unusable when it fails, but that's still better than a crash.
-    //std::cout << G_STRFUNC << ": Before update_meta_store_table_name()" << std::endl;
+    //std::cout << G_STRFUNC << ": Before update_meta_store_table_name()\n";
     const auto test = m_refGdaConnection->update_meta_store_table_names(m_backend->get_public_schema_name());
     if(!test && !m_fake_connection)
     {
-      std::cerr << G_STRFUNC << ": update_meta_store_table_names() failed without an exception." << 
std::endl;
+      std::cerr << G_STRFUNC << ": update_meta_store_table_names() failed without an exception.\n";
       return false;
     }
   }
diff --git a/glom/libglom/connectionpool_backends/mysql.cc b/glom/libglom/connectionpool_backends/mysql.cc
index 2a4a2ac..275d64e 100644
--- a/glom/libglom/connectionpool_backends/mysql.cc
+++ b/glom/libglom/connectionpool_backends/mysql.cc
@@ -78,7 +78,7 @@ Glib::RefPtr<Gnome::Gda::Connection> MySQL::attempt_connect(const Glib::ustring&
 {
   if(database.empty())
   {
-    std::cerr << G_STRFUNC << ": The database name is empty. This is strange." << std::endl;
+    std::cerr << G_STRFUNC << ": The database name is empty. This is strange.\n";
     return Glib::RefPtr<Gnome::Gda::Connection>();
   }
 
@@ -122,7 +122,7 @@ Glib::RefPtr<Gnome::Gda::Connection> MySQL::attempt_connect(const Glib::ustring&
   {
 #ifdef GLOM_CONNECTION_DEBUG
     std::cout << "debug: " << G_STRFUNC << ": Attempt to connect to database failed on port=" << port << ", 
database=" << database << ": " << "error code=" << ex.code() << ", error message: " <<  ex.what() << 
std::endl;
-    std::cout << "debug: " << G_STRFUNC << ": Attempting to connect without specifying the database." << 
std::endl;
+    std::cout << "debug: " << G_STRFUNC << ": Attempting to connect without specifying the database.\n";
 #endif
 
     const auto cnc_string_without_db = cnc_string_main + ";DB_NAME=" + 
DbUtils::gda_cnc_string_encode(default_database);
@@ -209,7 +209,7 @@ bool MySQL::change_columns(const Glib::RefPtr<Gnome::Gda::Connection>& connectio
                    const auto added = add_column(connection, table_name, temp_field);
                     if(!added)
                     {
-                      std::cerr << G_STRFUNC << ": add_column() failed." << std::endl;
+                      std::cerr << G_STRFUNC << ": add_column() failed.\n";
                       //TODO: Stop the transaction and return?
                     }
 
@@ -388,7 +388,7 @@ bool MySQL::change_columns(const Glib::RefPtr<Gnome::Gda::Connection>& connectio
   catch(const Glib::Error& ex)
   {
     std::cerr << G_STRFUNC << "Exception: " << ex.what() << std::endl;
-    std::cerr << G_STRFUNC << ":   Reverting the transaction." << std::endl;
+    std::cerr << G_STRFUNC << ":   Reverting the transaction.\n";
     
     try
     {
@@ -546,33 +546,33 @@ bool MySQL::save_backup(const SlotProgress& slot_progress, const Glib::ustring&
 /* TODO:
   if(m_network_shared && !running)
   {
-    std::cerr << G_STRFUNC << ": The self-hosted database is not running." << std::endl;
+    std::cerr << G_STRFUNC << ": The self-hosted database is not running.\n";
     return;
   }
 */
 
   if(m_host.empty())
   {
-    std::cerr << G_STRFUNC << ": m_host is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_host is empty.\n";
     return false;
   }
 
   if(m_port == 0)
   {
-    std::cerr << G_STRFUNC << ": m_port is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_port is empty.\n";
     return false;
   }
 
   //TODO: Remember the existing username and password?
   if(username.empty())
   {
-    std::cerr << G_STRFUNC << ": username is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": username is empty.\n";
     return false;
   }
 
   if(password.empty())
   {
-    std::cerr << G_STRFUNC << ": password is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": password is empty.\n";
     return false;
   }
 
@@ -591,7 +591,7 @@ bool MySQL::save_backup(const SlotProgress& slot_progress, const Glib::ustring&
 
   if(!result)
   {
-    std::cerr << G_STRFUNC << ": Error while attempting to call pg_dump." << std::endl;
+    std::cerr << G_STRFUNC << ": Error while attempting to call pg_dump.\n";
   }
 
   return result;
@@ -602,33 +602,33 @@ bool MySQL::convert_backup(const SlotProgress& slot_progress, const std::string&
 /* TODO:
   if(m_network_shared && !running)
   {
-    std::cerr << G_STRFUNC << ": The self-hosted database is not running." << std::endl;
+    std::cerr << G_STRFUNC << ": The self-hosted database is not running.\n";
     return;
   }
 */
 
   if(m_host.empty())
   {
-    std::cerr << G_STRFUNC << ": m_host is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_host is empty.\n";
     return false;
   }
 
   if(m_port == 0)
   {
-    std::cerr << G_STRFUNC << ": m_port is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_port is empty.\n";
     return false;
   }
 
   //TODO: Remember the existing username and password?
   if(username.empty())
   {
-    std::cerr << G_STRFUNC << ": username is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": username is empty.\n";
     return false;
   }
 
   if(password.empty())
   {
-    std::cerr << G_STRFUNC << ": password is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": password is empty.\n";
     return false;
   }
 
@@ -651,7 +651,7 @@ bool MySQL::convert_backup(const SlotProgress& slot_progress, const std::string&
 
   if(!result)
   {
-    std::cerr << G_STRFUNC << ": Error while attempting to call pg_restore." << std::endl;
+    std::cerr << G_STRFUNC << ": Error while attempting to call pg_restore.\n";
   }
 
   return result;
@@ -801,7 +801,7 @@ bool MySQL::create_text_file(const std::string& file_uri, const std::string& con
   catch(const Gio::Error& ex)
   {
     // If the operation was not successful, print the error and abort
-    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): exception while creating file." << 
std::endl
+    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): exception while creating file.\n"
       << "  file uri:" << file_uri << std::endl
       << "  error:" << ex.what() << std::endl;
     return false; // print_error(ex, output_uri_string);
@@ -822,7 +822,7 @@ bool MySQL::create_text_file(const std::string& file_uri, const std::string& con
   catch(const Gio::Error& ex)
   {
     // If the operation was not successful, print the error and abort
-    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): exception while writing to file." << 
std::endl
+    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): exception while writing to file.\n"
       << "  file uri:" << file_uri << std::endl
       << "  error:" << ex.what() << std::endl;
     return false; //print_error(ex, output_uri_string);
@@ -830,7 +830,7 @@ bool MySQL::create_text_file(const std::string& file_uri, const std::string& con
 
   if(bytes_written != (gssize)contents_size)
   {
-    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): not all bytes written when writing to 
file." << std::endl
+    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): not all bytes written when writing to 
file.\n"
       << "  file uri:" << file_uri << std::endl;
     return false;
   }
diff --git a/glom/libglom/connectionpool_backends/mysql_self.cc 
b/glom/libglom/connectionpool_backends/mysql_self.cc
index faf1404..f468953 100644
--- a/glom/libglom/connectionpool_backends/mysql_self.cc
+++ b/glom/libglom/connectionpool_backends/mysql_self.cc
@@ -105,7 +105,7 @@ bool MySQLSelfHosted::install_mysql(const SlotProgress& /* slot_progress */)
   const auto result = gst_packages_install(parent_window->gobj() /* parent window */, packages);
   if(result)
   {
-    std::cout << "Glom: gst_packages_install() reports success." << std::endl;
+    std::cout << "Glom: gst_packages_install() reports success.\n";
     //Double-check, because gst_packages_install() incorrectly returns TRUE if it fails because
     //a) synaptic is already running, or
     //b) synaptic did not know about the package (no warning is shown in this case.)
@@ -114,7 +114,7 @@ bool MySQLSelfHosted::install_mysql(const SlotProgress& /* slot_progress */)
   }
   else
   {
-    std::cout << "Glom: gst_packages_install() reports failure." << std::endl;
+    std::cout << "Glom: gst_packages_install() reports failure.\n";
     return false; //Failed to install mysql.
   }
 #else
@@ -128,13 +128,13 @@ Backend::InitErrors MySQLSelfHosted::initialize(const SlotProgress& slot_progres
 
   if(m_database_directory_uri.empty())
   {
-    std::cerr << G_STRFUNC << ": initialize: m_self_hosting_data_uri is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": initialize: m_self_hosting_data_uri is empty.\n";
     return InitErrors::OTHER;
   }
 
   if(initial_username.empty())
   {
-    std::cerr << G_STRFUNC << ": MySQLSelfHosted::initialize(). Username was empty while attempting to 
create self-hosting database" << std::endl;
+    std::cerr << G_STRFUNC << ": MySQLSelfHosted::initialize(). Username was empty while attempting to 
create self-hosting database\n";
     return InitErrors::OTHER;
   }
 
@@ -198,7 +198,7 @@ Backend::InitErrors MySQLSelfHosted::initialize(const SlotProgress& slot_progres
   const auto result = Glom::Spawn::execute_command_line_and_wait(command_initdb, slot_progress);
   if(!result)
   {
-    std::cerr << G_STRFUNC << ": Error while attempting to create self-hosting MySQL database." << std::endl;
+    std::cerr << G_STRFUNC << ": Error while attempting to create self-hosting MySQL database.\n";
   }
   else
   {
@@ -220,14 +220,14 @@ Backend::InitErrors MySQLSelfHosted::initialize(const SlotProgress& slot_progres
     //and we cannot take the risk of leaving the database with a default password.
     if(startup(slot_progress, false) != StartupErrors::NONE)
     {
-      std::cerr << G_STRFUNC << ": Error while attempting to create self-hosting MySQL database, while 
starting for the first time, to set the initial username and password." << std::endl;
+      std::cerr << G_STRFUNC << ": Error while attempting to create self-hosting MySQL database, while 
starting for the first time, to set the initial username and password.\n";
       return InitErrors::OTHER;
     }
     else
     {
       if(!cleanup(slot_progress))
       {
-        std::cerr << G_STRFUNC << ": Error while attempting to create self-hosting MySQL database, while 
shutting down, after setting the initial username and password." << std::endl;
+        std::cerr << G_STRFUNC << ": Error while attempting to create self-hosting MySQL database, while 
shutting down, after setting the initial username and password.\n";
         return InitErrors::OTHER;
       }
     }
@@ -249,7 +249,7 @@ Backend::InitErrors MySQLSelfHosted::initialize(const SlotProgress& slot_progres
 
     if(m_temporary_password.empty())
     {
-       std::cerr << G_STRFUNC << " Unable to discover the initial MySQL password." << std::endl;
+       std::cerr << G_STRFUNC << " Unable to discover the initial MySQL password.\n";
        result = false;
     }
     */
@@ -272,13 +272,13 @@ static Glib::ustring build_query_change_username(const Glib::RefPtr<Gnome::Gda::
 {
   if(old_username.empty())
   {
-    std::cerr << G_STRFUNC << ": old_username is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": old_username is empty.\n";
     return Glib::ustring();
   }
 
   if(new_username.empty())
   {
-    std::cerr << G_STRFUNC << ": new_username is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": new_username is empty.\n";
     return Glib::ustring();
   }
 
@@ -306,7 +306,7 @@ Backend::StartupErrors MySQLSelfHosted::startup(const SlotProgress& slot_progres
 
   if(get_self_hosting_active())
   {
-    std::cerr << G_STRFUNC << ": Already started." << std::endl;
+    std::cerr << G_STRFUNC << ": Already started.\n";
     return StartupErrors::NONE; //Just do it once.
   }
 
@@ -340,7 +340,7 @@ Backend::StartupErrors MySQLSelfHosted::startup(const SlotProgress& slot_progres
     const auto dbdir_backup_uri = Glib::filename_to_uri(dbdir_backup);
     if(file_exists_uri(dbdir_backup_uri))
     {
-      std::cerr << G_STRFUNC << ": There is no data, but there is backup data." << std::endl;
+      std::cerr << G_STRFUNC << ": There is no data, but there is backup data.\n";
       //Let the caller convert the backup to real data and then try again:
       return StartupErrors::FAILED_NO_DATA_HAS_BACKUP_DATA;
     }
@@ -387,7 +387,7 @@ Backend::StartupErrors MySQLSelfHosted::startup(const SlotProgress& slot_progres
   {
     m_port = 0;
 
-    std::cerr << G_STRFUNC << "Error while attempting to self-host a MySQL database." << std::endl;
+    std::cerr << G_STRFUNC << "Error while attempting to self-host a MySQL database.\n";
     return StartupErrors::FAILED_UNKNOWN_REASON;
   }
 
@@ -398,7 +398,7 @@ Backend::StartupErrors MySQLSelfHosted::startup(const SlotProgress& slot_progres
   {
     if(m_initial_password_to_set.empty()) {
       //If this is empty then mysqladmin will ask for it on stdout, blocking us.
-      std::cerr << G_STRFUNC << "Error while attempting to self-host a MySQL database: 
m_initial_password_to_set is empty." << std::endl;
+      std::cerr << G_STRFUNC << "Error while attempting to self-host a MySQL database: 
m_initial_password_to_set is empty.\n";
       return StartupErrors::FAILED_UNKNOWN_REASON;
     }
 
@@ -409,7 +409,7 @@ Backend::StartupErrors MySQLSelfHosted::startup(const SlotProgress& slot_progres
 
     if(!Glom::Spawn::execute_command_line_and_wait(command_initdb_set_initial_password, slot_progress))
     {
-      std::cerr << G_STRFUNC << ": Error while attempting to start self-hosting MySQL database, when setting 
the initial password." << std::endl;
+      std::cerr << G_STRFUNC << ": Error while attempting to start self-hosting MySQL database, when setting 
the initial password.\n";
       return StartupErrors::FAILED_UNKNOWN_REASON;
     }
 
@@ -422,7 +422,7 @@ Backend::StartupErrors MySQLSelfHosted::startup(const SlotProgress& slot_progres
     const auto gda_connection = connect(DEFAULT_DATABASE_NAME, "root", m_initial_password_to_set);
     if(!gda_connection)
     {
-      std::cerr << G_STRFUNC << "Error while attempting to start self-hosting MySQL database, when setting 
the initial username: connection failed." << std::endl;
+      std::cerr << G_STRFUNC << "Error while attempting to start self-hosting MySQL database, when setting 
the initial username: connection failed.\n";
       return StartupErrors::FAILED_UNKNOWN_REASON;
     }
     m_saved_password = m_initial_password_to_set;
@@ -438,7 +438,7 @@ Backend::StartupErrors MySQLSelfHosted::startup(const SlotProgress& slot_progres
       /*
       if(!test)
       {
-        std::cerr << G_STRFUNC << "Error while attempting to start self-hosting MySQL database, when setting 
the initial username: UPDATE failed." << std::endl;
+        std::cerr << G_STRFUNC << "Error while attempting to start self-hosting MySQL database, when setting 
the initial username: UPDATE failed.\n";
        return StartupErrors::FAILED_UNKNOWN_REASON;
       }
       */
@@ -467,17 +467,17 @@ void MySQLSelfHosted::show_active_connections()
  
   auto gda_connection = connect(m_saved_database_name, m_saved_username, m_saved_password);
   if(!gda_connection)
-    std::cerr << G_STRFUNC << ": connection failed." << std::endl;
+    std::cerr << G_STRFUNC << ": connection failed.\n";
   
   auto datamodel = DbUtils::query_execute_select(builder);
   if(!datamodel)
-    std::cerr << G_STRFUNC << ": pg_stat_activity SQL query failed." << std::endl;
+    std::cerr << G_STRFUNC << ": pg_stat_activity SQL query failed.\n";
   
   const auto rows_count = datamodel->get_n_rows(); 
   if(datamodel->get_n_rows() < 1)
-    std::cerr << G_STRFUNC << ": pg_stat_activity SQL query returned no rows." << std::endl;
+    std::cerr << G_STRFUNC << ": pg_stat_activity SQL query returned no rows.\n";
 
-  std::cout << "Active connections according to a pg_stat_activity SQL query:" << std::endl;
+  std::cout << "Active connections according to a pg_stat_activity SQL query:\n";
   const auto cols_count = datamodel->get_n_columns();
   for(int row = 0; row < rows_count; ++row)
   {
@@ -501,7 +501,7 @@ std::string MySQLSelfHosted::get_mysqladmin_command(const Glib::ustring& usernam
 {
   if(username.empty())
   {
-    std::cerr << G_STRFUNC << ": username is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": username is empty.\n";
   }
 
   const auto port_as_text = Glib::Ascii::dtostr(m_port);
@@ -527,7 +527,7 @@ bool MySQLSelfHosted::cleanup(const SlotProgress& slot_progress)
 
   if(!get_self_hosting_active())
   {
-    //std::cout << G_STRFUNC << ": self-hosting is not active." << std::endl;
+    //std::cout << G_STRFUNC << ": self-hosting is not active.\n";
     return true; //Don't try to stop it if we have not started it.
   }
 
@@ -604,7 +604,7 @@ Glib::RefPtr<Gnome::Gda::Connection> MySQLSelfHosted::connect(const Glib::ustrin
 {
   if(database.empty())
   {
-    std::cerr << G_STRFUNC << ": The database name is empty. This is strange." << std::endl;
+    std::cerr << G_STRFUNC << ": The database name is empty. This is strange.\n";
     return Glib::RefPtr<Gnome::Gda::Connection>();
   }
 
@@ -744,7 +744,7 @@ unsigned int MySQLSelfHosted::discover_first_free_port(unsigned int start_port,
   close(fd);
 #endif //G_OS_WIN32
 
-  std::cerr << G_STRFUNC << ": No port was available." << std::endl;
+  std::cerr << G_STRFUNC << ": No port was available.\n";
   return 0;
 }
 
diff --git a/glom/libglom/connectionpool_backends/postgres.cc 
b/glom/libglom/connectionpool_backends/postgres.cc
index 7c3fc9d..ad458ea 100644
--- a/glom/libglom/connectionpool_backends/postgres.cc
+++ b/glom/libglom/connectionpool_backends/postgres.cc
@@ -110,7 +110,7 @@ Glib::RefPtr<Gnome::Gda::Connection> Postgres::attempt_connect(const Glib::ustri
   {
 #ifdef GLOM_CONNECTION_DEBUG
     std::cout << "debug: " << G_STRFUNC << ": Attempt to connect to database failed on port=" << port << ", 
database=" << database << ": " << "error code=" << ex.code() << ", error message: " <<  ex.what() << 
std::endl;
-    std::cout << "debug: " << G_STRFUNC << ": Attempting to connect without specifying the database." << 
std::endl;
+    std::cout << "debug: " << G_STRFUNC << ": Attempting to connect without specifying the database.\n";
 #endif
 
     const auto cnc_string_with_db = cnc_string_main + ";DB_NAME=" + 
DbUtils::gda_cnc_string_encode(default_database);
@@ -197,7 +197,7 @@ bool Postgres::change_columns(const Glib::RefPtr<Gnome::Gda::Connection>& connec
                    const auto added = add_column(connection, table_name, temp_field);
                     if(!added)
                     {
-                      std::cerr << G_STRFUNC << ": add_column() failed." << std::endl;
+                      std::cerr << G_STRFUNC << ": add_column() failed.\n";
                       //TODO: Stop the transaction and return?
                     }
 
@@ -374,7 +374,7 @@ bool Postgres::change_columns(const Glib::RefPtr<Gnome::Gda::Connection>& connec
   catch(const Glib::Error& ex)
   {
     std::cerr << G_STRFUNC << ": Exception: " << ex.what() << std::endl;
-    std::cerr << G_STRFUNC << ": Reverting the transaction." << std::endl;
+    std::cerr << G_STRFUNC << ": Reverting the transaction.\n";
     
     try
     {
@@ -579,7 +579,7 @@ bool Postgres::save_password_to_pgpass(const Glib::ustring username, const Glib:
   const auto result = create_text_file(uri, contents, true /* current user only */);
   if(!result)
   {
-    std::cerr << G_STRFUNC << ": create_text_file() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": create_text_file() failed.\n";
     if(g_rename(filepath_previous.c_str(), filepath_pgpass.c_str()) != 0)
     {
       std::cerr << G_STRFUNC << "Could not rename file back again from=" << filepath_previous << ", to=" << 
filepath_pgpass << std::endl;
@@ -596,33 +596,33 @@ bool Postgres::save_backup(const SlotProgress& slot_progress, const Glib::ustrin
 /* TODO:
   if(m_network_shared && !running)
   {
-    std::cerr << G_STRFUNC << ": The self-hosted database is not running." << std::endl;
+    std::cerr << G_STRFUNC << ": The self-hosted database is not running.\n";
     return;
   }
 */
 
   if(m_host.empty())
   {
-    std::cerr << G_STRFUNC << ": m_host is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_host is empty.\n";
     return false;
   }
 
   if(m_port == 0)
   {
-    std::cerr << G_STRFUNC << ": m_port is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_port is empty.\n";
     return false;
   }
 
   //TODO: Remember the existing username and password?
   if(username.empty())
   {
-    std::cerr << G_STRFUNC << ": username is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": username is empty.\n";
     return false;
   }
 
   if(password.empty())
   {
-    std::cerr << G_STRFUNC << ": password is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": password is empty.\n";
     return false;
   }
 
@@ -632,7 +632,7 @@ bool Postgres::save_backup(const SlotProgress& slot_progress, const Glib::ustrin
   const auto pgpass_created = save_password_to_pgpass(username, password, pgpass_backup, pgpass_original);
   if(!pgpass_created)
   {
-    std::cerr << G_STRFUNC << ": save_password_to_pgpass() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": save_password_to_pgpass() failed.\n";
     return false;
   }
 
@@ -668,7 +668,7 @@ bool Postgres::save_backup(const SlotProgress& slot_progress, const Glib::ustrin
 
   if(!result)
   {
-    std::cerr << G_STRFUNC << ": Error while attempting to call pg_dump." << std::endl;
+    std::cerr << G_STRFUNC << ": Error while attempting to call pg_dump.\n";
   }
 
   return result;
@@ -679,33 +679,33 @@ bool Postgres::convert_backup(const SlotProgress& slot_progress, const std::stri
 /* TODO:
   if(m_network_shared && !running)
   {
-    std::cerr << G_STRFUNC << ": The self-hosted database is not running." << std::endl;
+    std::cerr << G_STRFUNC << ": The self-hosted database is not running.\n";
     return;
   }
 */
 
   if(m_host.empty())
   {
-    std::cerr << G_STRFUNC << ": m_host is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_host is empty.\n";
     return false;
   }
 
   if(m_port == 0)
   {
-    std::cerr << G_STRFUNC << ": m_port is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_port is empty.\n";
     return false;
   }
 
   //TODO: Remember the existing username and password?
   if(username.empty())
   {
-    std::cerr << G_STRFUNC << ": username is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": username is empty.\n";
     return false;
   }
 
   if(password.empty())
   {
-    std::cerr << G_STRFUNC << ": password is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": password is empty.\n";
     return false;
   }
 
@@ -722,7 +722,7 @@ bool Postgres::convert_backup(const SlotProgress& slot_progress, const std::stri
   const auto pgpass_created = save_password_to_pgpass(username, password, pgpass_backup, pgpass_original);
   if(!pgpass_created)
   {
-    std::cerr << G_STRFUNC << ": save_password_to_pgpass() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": save_password_to_pgpass() failed.\n";
     return false;
   }
 
@@ -754,7 +754,7 @@ bool Postgres::convert_backup(const SlotProgress& slot_progress, const std::stri
 
   if(!result)
   {
-    std::cerr << G_STRFUNC << ": Error while attempting to call pg_restore." << std::endl;
+    std::cerr << G_STRFUNC << ": Error while attempting to call pg_restore.\n";
   }
 
   return result;
@@ -904,7 +904,7 @@ bool Postgres::create_text_file(const std::string& file_uri, const std::string&
   catch(const Gio::Error& ex)
   {
     // If the operation was not successful, print the error and abort
-    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): exception while creating file." << 
std::endl
+    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): exception while creating file.\n"
       << "  file uri:" << file_uri << std::endl
       << "  error:" << ex.what() << std::endl;
     return false; // print_error(ex, output_uri_string);
@@ -925,7 +925,7 @@ bool Postgres::create_text_file(const std::string& file_uri, const std::string&
   catch(const Gio::Error& ex)
   {
     // If the operation was not successful, print the error and abort
-    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): exception while writing to file." << 
std::endl
+    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): exception while writing to file.\n"
       << "  file uri:" << file_uri << std::endl
       << "  error:" << ex.what() << std::endl;
     return false; //print_error(ex, output_uri_string);
@@ -933,7 +933,7 @@ bool Postgres::create_text_file(const std::string& file_uri, const std::string&
 
   if(bytes_written != (gssize)contents_size)
   {
-    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): not all bytes written when writing to 
file." << std::endl
+    std::cerr << G_STRFUNC << ": ConnectionPool::create_text_file(): not all bytes written when writing to 
file.\n"
       << "  file uri:" << file_uri << std::endl;
     return false;
   }
diff --git a/glom/libglom/connectionpool_backends/postgres_self.cc 
b/glom/libglom/connectionpool_backends/postgres_self.cc
index 0b9d81b..f22eda6 100644
--- a/glom/libglom/connectionpool_backends/postgres_self.cc
+++ b/glom/libglom/connectionpool_backends/postgres_self.cc
@@ -126,7 +126,7 @@ bool PostgresSelfHosted::install_postgres(const SlotProgress& /* slot_progress *
   const auto result = gst_packages_install(parent_window->gobj() /* parent window */, packages);
   if(result)
   {
-    std::cout << "Glom: gst_packages_install() reports success." << std::endl;
+    std::cout << "Glom: gst_packages_install() reports success.\n";
     //Double-check, because gst_packages_install() incorrectly returns TRUE if it fails because
     //a) synaptic is already running, or
     //b) synaptic did not know about the package (no warning is shown in this case.)
@@ -135,7 +135,7 @@ bool PostgresSelfHosted::install_postgres(const SlotProgress& /* slot_progress *
   }
   else
   {
-    std::cout << "Glom: gst_packages_install() reports failure." << std::endl;
+    std::cout << "Glom: gst_packages_install() reports failure.\n";
     return false; //Failed to install postgres.
   }
 #else
@@ -149,13 +149,13 @@ Backend::InitErrors PostgresSelfHosted::initialize(const SlotProgress& slot_prog
 
   if(m_database_directory_uri.empty())
   {
-    std::cerr << G_STRFUNC << ": initialize: m_self_hosting_data_uri is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": initialize: m_self_hosting_data_uri is empty.\n";
     return InitErrors::OTHER;
   }
 
   if(initial_username.empty())
   {
-    std::cerr << G_STRFUNC << ": PostgresSelfHosted::initialize(). Username was empty while attempting to 
create self-hosting database" << std::endl;
+    std::cerr << G_STRFUNC << ": PostgresSelfHosted::initialize(). Username was empty while attempting to 
create self-hosting database\n";
     return InitErrors::OTHER;
   }
 
@@ -234,7 +234,7 @@ Backend::InitErrors PostgresSelfHosted::initialize(const SlotProgress& slot_prog
   const auto result = Glom::Spawn::execute_command_line_and_wait(command_initdb, slot_progress);
   if(!result)
   {
-    std::cerr << G_STRFUNC << ": Error while attempting to create self-hosting database." << std::endl;
+    std::cerr << G_STRFUNC << ": Error while attempting to create self-hosting database.\n";
   }
 
   const auto temp_pwfile_removed = g_remove(temp_pwfile.c_str()); //Of course, we don't want this to stay 
around. It would be a security risk.
@@ -253,7 +253,7 @@ Backend::StartupErrors PostgresSelfHosted::startup(const SlotProgress& slot_prog
 
   if(get_self_hosting_active())
   {
-    std::cerr << G_STRFUNC << ": Already started." << std::endl;
+    std::cerr << G_STRFUNC << ": Already started.\n";
     return StartupErrors::NONE; //Just do it once.
   }
 
@@ -287,7 +287,7 @@ Backend::StartupErrors PostgresSelfHosted::startup(const SlotProgress& slot_prog
     const auto dbdir_backup_uri = Glib::filename_to_uri(dbdir_backup);
     if(file_exists_uri(dbdir_backup_uri))
     {
-      std::cerr << G_STRFUNC << ": There is no data, but there is backup data." << std::endl;
+      std::cerr << G_STRFUNC << ": There is no data, but there is backup data.\n";
       //Let the caller convert the backup to real data and then try again:
       return StartupErrors::FAILED_NO_DATA_HAS_BACKUP_DATA;
     }
@@ -346,7 +346,7 @@ Backend::StartupErrors PostgresSelfHosted::startup(const SlotProgress& slot_prog
   const auto result = 
Glom::Spawn::execute_command_line_and_wait_until_second_command_returns_success(command_postgres_start, 
command_check_postgres_has_started, slot_progress, second_command_success_text);
   if(!result)
   {
-    std::cerr << G_STRFUNC << ": Error while attempting to self-host a database." << std::endl;
+    std::cerr << G_STRFUNC << ": Error while attempting to self-host a database.\n";
     return StartupErrors::FAILED_UNKNOWN_REASON;
   }
 
@@ -364,17 +364,17 @@ void PostgresSelfHosted::show_active_connections()
  
   auto gda_connection = connect(m_saved_database_name, m_saved_username, m_saved_password);
   if(!gda_connection)
-    std::cerr << G_STRFUNC << ": connection failed." << std::endl;
+    std::cerr << G_STRFUNC << ": connection failed.\n";
   
   auto datamodel = DbUtils::query_execute_select(builder);
   if(!datamodel)
-    std::cerr << G_STRFUNC << ": pg_stat_activity SQL query failed." << std::endl;
+    std::cerr << G_STRFUNC << ": pg_stat_activity SQL query failed.\n";
   
   const auto rows_count = datamodel->get_n_rows(); 
   if(datamodel->get_n_rows() < 1)
-    std::cerr << G_STRFUNC << ": pg_stat_activity SQL query returned no rows." << std::endl;
+    std::cerr << G_STRFUNC << ": pg_stat_activity SQL query returned no rows.\n";
 
-  std::cout << "Active connections according to a pg_stat_activity SQL query:" << std::endl;
+  std::cout << "Active connections according to a pg_stat_activity SQL query:\n";
   const auto cols_count = datamodel->get_n_columns();
   for(int row = 0; row < rows_count; ++row)
   {
@@ -652,7 +652,7 @@ unsigned int PostgresSelfHosted::discover_first_free_port(unsigned int start_por
   close(fd);
 #endif //G_OS_WIN32
 
-  std::cerr << G_STRFUNC << ": No port was available." << std::endl;
+  std::cerr << G_STRFUNC << ": No port was available.\n";
   return 0;
 }
 
diff --git a/glom/libglom/connectionpool_backends/sqlite.cc b/glom/libglom/connectionpool_backends/sqlite.cc
index 1d1246e..579f4e0 100644
--- a/glom/libglom/connectionpool_backends/sqlite.cc
+++ b/glom/libglom/connectionpool_backends/sqlite.cc
@@ -111,7 +111,7 @@ bool Sqlite::create_database(const SlotProgress& slot_progress, const Glib::ustr
 {
   if(m_database_directory_uri.empty())
   {
-    std::cerr << G_STRFUNC << ": m_database_directory_uri was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_database_directory_uri was empty.\n";
     return false;
   }
  
@@ -364,7 +364,7 @@ bool Sqlite::recreate_table(const Glib::RefPtr<Gnome::Gda::Connection>& connecti
   catch(const Glib::Error& ex)
   {
     std::cerr << G_STRFUNC << ": exception=" << ex.what() << std::endl;
-    std::cerr << G_STRFUNC << ": Reverting the transaction." << std::endl;
+    std::cerr << G_STRFUNC << ": Reverting the transaction.\n";
 
     try
     {
diff --git a/glom/libglom/data_structure/field.cc b/glom/libglom/data_structure/field.cc
index 9ec996a..1c9894c 100644
--- a/glom/libglom/data_structure/field.cc
+++ b/glom/libglom/data_structure/field.cc
@@ -179,7 +179,7 @@ void Field::set_field_info(const Glib::RefPtr<Gnome::Gda::Column>& fieldinfo)
     // Check that the default value is consistent with the field's type
     if(!value.is_null() && value.get_value_type() != get_gda_data_type_with_fallback(value))
     {
-      std::cerr << G_STRFUNC << ": New field's default value type (" << g_type_name(value.get_value_type()) 
<< " does not match field type (" << g_type_name(get_gda_type_for_glom_type(get_glom_type())) << "). 
Resetting default value." << std::endl;
+      std::cerr << G_STRFUNC << ": New field's default value type (" << g_type_name(value.get_value_type()) 
<< " does not match field type (" << g_type_name(get_gda_type_for_glom_type(get_glom_type())) << "). 
Resetting default value.\n";
       m_field_info->set_default_value(Gnome::Gda::Value());
     }
   }
@@ -240,7 +240,7 @@ Glib::ustring Field::sql(const Gnome::Gda::Value& value, const Glib::RefPtr<Gnom
   Glib::RefPtr<const Gnome::Gda::ServerProvider> provider = connection->get_provider();
   if(!provider)
   {
-    std::cerr << G_STRFUNC << ": The ServerProvider was null." << std::endl;
+    std::cerr << G_STRFUNC << ": The ServerProvider was null.\n";
     return Glib::ustring();
   } 
 
@@ -254,7 +254,7 @@ Glib::ustring Field::sql(const Gnome::Gda::Value& value, const Glib::RefPtr<Gnom
   }
   else
   {
-    std::cerr << G_STRFUNC << ": The DataHandler was null." << std::endl;
+    std::cerr << G_STRFUNC << ": The DataHandler was null.\n";
     return Glib::ustring();
   }
 }
@@ -546,7 +546,7 @@ Glib::ustring Field::get_sql_type() const
       }
       else
       {
-        std::cerr << G_STRFUNC << ": get_field_types() returned null" << std::endl;
+        std::cerr << G_STRFUNC << ": get_field_types() returned null\n";
       }
     }
 
diff --git a/glom/libglom/data_structure/fieldtypes.cc b/glom/libglom/data_structure/fieldtypes.cc
index 95d942b..d84aaeb 100644
--- a/glom/libglom/data_structure/fieldtypes.cc
+++ b/glom/libglom/data_structure/fieldtypes.cc
@@ -51,11 +51,11 @@ FieldTypes::FieldTypes(const Glib::RefPtr<Gnome::Gda::Connection>& gda_connectio
     }
 
     if(!data_model_tables)
-      std::cerr << G_STRFUNC << ": Couldn't get datamodel" << std::endl;
+      std::cerr << G_STRFUNC << ": Couldn't get datamodel\n";
 
     if(data_model_tables && (data_model_tables->get_n_columns() == 0))
     {
-      std::cerr << G_STRFUNC << ": get_meta_store_data(Gnome::Gda::CONNECTION_META_TYPES) failed." << 
std::endl;
+      std::cerr << G_STRFUNC << ": get_meta_store_data(Gnome::Gda::CONNECTION_META_TYPES) failed.\n";
     }
     else if(data_model_tables)
     {
@@ -64,7 +64,7 @@ FieldTypes::FieldTypes(const Glib::RefPtr<Gnome::Gda::Connection>& gda_connectio
       {
         //This happens with our developer user when sharing is activated, and with other extra users.
         //TODO: Find out why.
-        std::cout << G_STRFUNC << ": no rows from CONNECTION_META_TYPES. Using default type mappings." << 
std::endl;
+        std::cout << G_STRFUNC << ": no rows from CONNECTION_META_TYPES. Using default type mappings.\n";
       }
 
       for(int i = 0; i < rows; ++i)
@@ -84,12 +84,12 @@ FieldTypes::FieldTypes(const Glib::RefPtr<Gnome::Gda::Connection>& gda_connectio
             auto type_string = value_gdatype.get_string();
             const auto gdatype = gda_g_type_from_string(type_string.c_str());
 
-            //std::cout << "debug: schema_type_string=" << schema_type_string << ", gda type=" << gdatype << 
"(" << g_type_name(gdatype) << ")" << std::endl;
+            //std::cout << "debug: schema_type_string=" << schema_type_string << ", gda type=" << gdatype << 
"(" << g_type_name(gdatype) << ")\n";
 
             //Save it for later:
             //const auto gdatypestring = gda_g_type_to_string(gdatype);
            
-            //std::cout << "schema type: " << schema_type_string << " = gdatype " << (guint)gdatype << "(" 
<< gdatypestring << ")" << std::endl;
+            //std::cout << "schema type: " << schema_type_string << " = gdatype " << (guint)gdatype << "(" 
<< gdatypestring << ")\n";
             
             m_mapGdaTypesToSchemaStrings[gdatype] = schema_type_string; //We save it twice, to just to make 
searching easier, without using std::find.
             
@@ -181,9 +181,9 @@ Glib::ustring FieldTypes::get_string_name_for_gdavaluetype(GType field_type) con
     if(iterFallback != m_mapFallbackTypes.end())
       return get_string_name_for_gdavaluetype(iterFallback->second);
 
-    std::cerr << G_STRFUNC << ": returning unknowntype for field_type=" << field_type << " (" << 
g_type_name(field_type) << ")" << std::endl;
+    std::cerr << G_STRFUNC << ": returning unknowntype for field_type=" << field_type << " (" << 
g_type_name(field_type) << ")\n";
 
-    std::cerr << G_STRFUNC << ":   possible types are: " << std::endl;
+    std::cerr << G_STRFUNC << ":   possible types are: \n";
     for(const auto& item : m_mapGdaTypesToSchemaStrings)
     {
       std::cerr << G_STRFUNC << ":     gdatype=" << item.first << " (" << g_type_name(item.first) << "), 
sqltype=" << item.second << std::endl;
diff --git a/glom/libglom/data_structure/glomconversions.cc b/glom/libglom/data_structure/glomconversions.cc
index b0026b5..2d7cdbc 100644
--- a/glom/libglom/data_structure/glomconversions.cc
+++ b/glom/libglom/data_structure/glomconversions.cc
@@ -49,7 +49,7 @@ Glib::ustring Conversions::format_time(const tm& tm_data)
   catch(const std::runtime_error& ex)
   {
     std::cerr << G_STRFUNC << ": exception from std::locale(\"\")): " << ex.what() << std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
     return Glib::ustring();
   } 
 }
@@ -74,7 +74,7 @@ Glib::ustring Conversions::format_date(const tm& tm_data)
   catch(const std::runtime_error& ex)
   {
     std::cerr << G_STRFUNC << ": exception from std::locale(\"\")): " << ex.what() << std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
     return Glib::ustring();
   }
 }
@@ -205,7 +205,7 @@ bool Conversions::sanity_check_date_parsing()
      parsed_date.tm_mday != the_c_time.tm_mday)
   {
     //Note to translators: If you see this error in the terminal at startup then you need to translate the 
%x elsewhere.
-    std::cerr << _("ERROR: sanity_check_date_parsing(): Sanity check failed: Glom could not parse a date's 
text representation that it generated itself, in this locale.") << " (" << std::locale("").name() << ")" << 
std::endl;
+    std::cerr << _("ERROR: sanity_check_date_parsing(): Sanity check failed: Glom could not parse a date's 
text representation that it generated itself, in this locale.") << " (" << std::locale("").name() << ")\n";
 
     //If translators cannot be relied upon to do this, maybe we should default to "%d/%m/%Y" when "%x" fails 
this test.
 
@@ -290,7 +290,7 @@ Glib::ustring Conversions::format_tm(const tm& tm_data, const std::locale& local
   catch(const std::runtime_error& ex)
   {
     std::cerr << G_STRFUNC << ": exception from std::locale(\"\")): " << ex.what() << std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
   }
 
   //std::cout << "debug: " << G_STRFUNC << ": returning: " << text << std::endl;
@@ -320,7 +320,7 @@ Glib::ustring Conversions::format_tm(const tm& tm_data, const std::locale& local
   while((bufsize *= 2) <= 65536);
 
   // This error is quite unlikely (unless strftime is buggy).
-  std::cerr << G_STRFUNC << ": maximum size of strftime buffer exceeded. Giving up." << std::endl;
+  std::cerr << G_STRFUNC << ": maximum size of strftime buffer exceeded. Giving up.\n";
 
   return Glib::ustring();
   */
@@ -361,7 +361,7 @@ Glib::ustring Conversions::get_text_for_gda_value(Field::glom_field_type glom_ty
   catch(const std::runtime_error& ex)
   {
     std::cerr << G_STRFUNC << ": exception from std::locale(\"\")): " << ex.what() << std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
     return Glib::ustring();
   }
 }
@@ -420,7 +420,7 @@ Glib::ustring Conversions::get_text_for_gda_value(Field::glom_field_type glom_ty
       bool success;
       the_c_time = parse_date(value.get_string(), std::locale::classic(), success);
       if(!success)
-        std::cerr << G_STRFUNC << ": Failed to convert string-represented date value" << std::endl;
+        std::cerr << G_STRFUNC << ": Failed to convert string-represented date value\n";
     }
     else if(value.get_value_type() == G_TYPE_DATE)
     {
@@ -461,7 +461,7 @@ Glib::ustring Conversions::get_text_for_gda_value(Field::glom_field_type glom_ty
       bool success;
       the_c_time = parse_time(value.get_string(), std::locale::classic(), success);
       if(!success)
-        std::cerr << G_STRFUNC << ": Failed to convert string-represented time value" << std::endl;
+        std::cerr << G_STRFUNC << ": Failed to convert string-represented time value\n";
     }
     else if(value.get_value_type() == GDA_TYPE_TIME)
     {
@@ -551,7 +551,7 @@ Glib::ustring Conversions::get_text_for_gda_value(Field::glom_field_type glom_ty
     catch(const std::runtime_error& ex)
     {
       std::cerr << G_STRFUNC << ": exception from std::locale(\"\")): " << ex.what() << std::endl;
-      std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+      std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or 
configured.\n";
     }      
 
     //std::cout << "debug: " << G_STRFUNC << ": number=" << number << ", text=" << text << std::endl;
@@ -610,7 +610,7 @@ Gnome::Gda::Value Conversions::parse_value(Field::glom_field_type glom_type, con
   catch(const std::runtime_error& ex)
   {
     std::cerr << G_STRFUNC << ": exception from std::locale(\"\")): " << ex.what() << std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
   } 
   
   //Put a NULL in the database for empty dates, times, and numerics, because 0 would be an actual value.
@@ -712,7 +712,7 @@ tm Conversions::parse_date(const Glib::ustring& text, bool& success)
   catch(const std::runtime_error& ex)
   {
     std::cerr << G_STRFUNC << ": exception from std::locale(\"\")): " << ex.what() << std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
     
     tm the_c_time;
     memset(&the_c_time, 0, sizeof(the_c_time));
@@ -770,7 +770,7 @@ tm Conversions::parse_date(const Glib::ustring& text, const std::locale& locale,
   }
   else
   {
-    //std::cout << "DEBUG: Skipping std::time_get<>  because it is incapable of parsing 4-digit years in the 
current locale." << std::endl;
+    //std::cout << "DEBUG: Skipping std::time_get<>  because it is incapable of parsing 4-digit years in the 
current locale.\n";
   }
 
   if(!skip_time_get && err != std::ios_base::failbit)
@@ -847,7 +847,7 @@ tm Conversions::parse_time(const Glib::ustring& text, bool& success)
   catch(const std::runtime_error& ex)
   {
     std::cerr << G_STRFUNC << ": exception from std::locale(\"\")): " << ex.what() << std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
   } 
   
   if(success)
diff --git a/glom/libglom/data_structure/layout/layoutitem_portal.cc 
b/glom/libglom/data_structure/layout/layoutitem_portal.cc
index a11d143..38ff28a 100644
--- a/glom/libglom/data_structure/layout/layoutitem_portal.cc
+++ b/glom/libglom/data_structure/layout/layoutitem_portal.cc
@@ -224,7 +224,7 @@ void LayoutItem_Portal::get_suitable_table_to_view_details(Glib::ustring& table_
   //Check whether a relationship was specified:
   if(get_navigation_type() == LayoutItem_Portal::navigation_type::AUTOMATIC)
   {
-    //std::cout << "debug: decide automatically." << std::endl;
+    //std::cout << "debug: decide automatically.\n";
     //Decide automatically:
     navigation_relationship = get_portal_navigation_relationship_automatic(document);
     //if(navigation_relationship && navigation_relationship->get_relationship())
@@ -235,7 +235,7 @@ void LayoutItem_Portal::get_suitable_table_to_view_details(Glib::ustring& table_
   else
   {
     navigation_relationship = get_navigation_relationship_specific();
-    //std::cout << "debug: " << G_STRFUNC << ": Using specific nav." << std::endl;
+    //std::cout << "debug: " << G_STRFUNC << ": Using specific nav.\n";
   }
 
 
@@ -258,13 +258,13 @@ void LayoutItem_Portal::get_suitable_table_to_view_details(Glib::ustring& table_
 
   if(navigation_table_name.empty())
   {
-    //std::cerr << G_STRFUNC << ": navigation_table_name is empty." << std::endl;
+    //std::cerr << G_STRFUNC << ": navigation_table_name is empty.\n";
     return;
   }
   
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null" << std::endl;
+    std::cerr << G_STRFUNC << ": document is null\n";
     return;
   }
   
@@ -282,7 +282,7 @@ std::shared_ptr<const UsesRelationship> LayoutItem_Portal::get_portal_navigation
 {
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null" << std::endl;
+    std::cerr << G_STRFUNC << ": document was null\n";
     return std::shared_ptr<const UsesRelationship>();
   }
 
@@ -336,7 +336,7 @@ std::shared_ptr<const LayoutItem_Field> LayoutItem_Portal::get_field_is_from_non
 
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null" << std::endl;
+    std::cerr << G_STRFUNC << ": document is null\n";
     return result;
   }
   
@@ -368,7 +368,7 @@ std::shared_ptr<const LayoutItem_Field> LayoutItem_Portal::get_field_identifies_
 
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null" << std::endl;
+    std::cerr << G_STRFUNC << ": document is null\n";
     return result;
   }
 
diff --git a/glom/libglom/db_utils.cc b/glom/libglom/db_utils.cc
index ca6b81f..493b7db 100644
--- a/glom/libglom/db_utils.cc
+++ b/glom/libglom/db_utils.cc
@@ -55,7 +55,7 @@ static Glib::RefPtr<Gnome::Gda::Connection> get_connection()
 
   if(!sharedconnection)
   {
-    std::cerr << G_STRFUNC << ": No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": No connection yet.\n";
     return Glib::RefPtr<Gnome::Gda::Connection>();
   }
 
@@ -74,17 +74,17 @@ static bool update_gda_metastore_for_table(const Glib::ustring& table_name)
   auto gda_connection = get_connection();
   if(!gda_connection)
   {
-    std::cerr << G_STRFUNC << ": No gda_connection." << std::endl;
+    std::cerr << G_STRFUNC << ": No gda_connection.\n";
     return false;
   }
 
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": table_name is empty.\n";
     return false;
   }
 
-  //std::cout << "debug: " << G_STRFUNC << ": Calling Gda::Connection::update_meta_store_table(" << 
table_name << ") ..." << std::endl;
+  //std::cout << "debug: " << G_STRFUNC << ": Calling Gda::Connection::update_meta_store_table(" << 
table_name << ") ...\n";
   //TODO: This doesn't seem to quite work yet:
   try
   {
@@ -97,7 +97,7 @@ static bool update_gda_metastore_for_table(const Glib::ustring& table_name)
   }
 
   //This does work, though it takes ages: gda_connection->update_meta_store();
-  //std::cout << "debug: " << G_STRFUNC << ": ... Finished calling 
Gda::Connection::update_meta_store_table()" << std::endl;
+  //std::cout << "debug: " << G_STRFUNC << ": ... Finished calling 
Gda::Connection::update_meta_store_table()\n";
 
   return true;
 }
@@ -107,9 +107,9 @@ bool create_database(const std::shared_ptr<Document>& document, const Glib::ustr
 #if 1
   // This seems to increase the chance that the database creation does not
   // fail due to the "source database is still in use" error. armin.
-  //std::cout << "Going to sleep" << std::endl;
+  //std::cout << "Going to sleep\n";
   Glib::usleep(500 * 1000);
-  //std::cout << "Awake" << std::endl;
+  //std::cout << "Awake\n";
 #endif
 
   if(progress)
@@ -160,7 +160,7 @@ bool create_database(const std::shared_ptr<Document>& document, const Glib::ustr
     bool test = add_standard_tables(document); //Add internal, hidden, tables.
     if(!test)
     {
-      std::cerr << G_STRFUNC << ": add_standard_tables() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": add_standard_tables() failed.\n";
       return false;
     }
     
@@ -172,20 +172,20 @@ bool create_database(const std::shared_ptr<Document>& document, const Glib::ustr
     test = add_standard_groups(document);
     if(!test)
     {
-      std::cerr << G_STRFUNC << ": add_standard_groups() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": add_standard_groups() failed.\n";
       return false;
     }
     
     if(progress)
       progress();
 
-    //std::cout << "debug: " << G_STRFUNC << ": Creation of standard tables and groups finished." << 
std::endl;
+    //std::cout << "debug: " << G_STRFUNC << ": Creation of standard tables and groups finished.\n";
 
     //Set the title based on the title in the example document, or the user-supplied title when creating new 
documents:
     SystemPrefs prefs = get_database_preferences(document);
     if(prefs.m_name.empty())
     {
-      //std::cout << "debug: " << G_STRFUNC << ": Setting title in the database." << std::endl;
+      //std::cout << "debug: " << G_STRFUNC << ": Setting title in the database.\n";
       prefs.m_name = title;
       set_database_preferences(document, prefs);
     }
@@ -209,7 +209,7 @@ bool create_database(const std::shared_ptr<Document>& document, const Glib::ustr
   }
   else
   {
-    std::cerr << G_STRFUNC << ": Could not connect to just-created database." << std::endl;
+    std::cerr << G_STRFUNC << ": Could not connect to just-created database.\n";
     return false;
   }
 }
@@ -230,7 +230,7 @@ bool recreate_database_from_document(const std::shared_ptr<Document>& document,
   {
     connection_pool->set_ready_to_connect(); //This has succeeded already.
     auto sharedconnection = connection_pool->connect();
-    std::cerr << G_STRFUNC << ": Failed because database exists already." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed because database exists already.\n";
 
     return false; //Connection to the database succeeded, because no exception was thrown. so the database 
exists already.
   }
@@ -238,7 +238,7 @@ bool recreate_database_from_document(const std::shared_ptr<Document>& document,
   {
     if(ex.get_failure_type() == ExceptionConnection::failure_type::NO_SERVER)
     {
-      std::cerr << G_STRFUNC << ": AppWindow::recreate_database(): Failed because connection to server 
failed even without specifying a database." << std::endl;
+      std::cerr << G_STRFUNC << ": AppWindow::recreate_database(): Failed because connection to server 
failed even without specifying a database.\n";
       return false;
     }
 
@@ -270,7 +270,7 @@ bool recreate_database_from_document(const std::shared_ptr<Document>& document,
   }
   catch(const ExceptionConnection& ex)
   {
-    std::cerr << G_STRFUNC << ": Failed to connect to the newly-created database." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed to connect to the newly-created database.\n";
     return false;
   }
 
@@ -292,7 +292,7 @@ bool recreate_database_from_document(const std::shared_ptr<Document>& document,
       progress();
     if(!table_creation_succeeded)
     {
-      std::cerr << G_STRFUNC << ": CREATE TABLE failed with the newly-created database." << std::endl;
+      std::cerr << G_STRFUNC << ": CREATE TABLE failed with the newly-created database.\n";
       return false;
     }
   }
@@ -304,7 +304,7 @@ bool recreate_database_from_document(const std::shared_ptr<Document>& document,
     progress();
   if(!add_groups_from_document(document))
   {
-    std::cerr << G_STRFUNC << ": add_groups_from_document() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": add_groups_from_document() failed.\n";
     return false;
   }
   
@@ -313,7 +313,7 @@ bool recreate_database_from_document(const std::shared_ptr<Document>& document,
     progress();
   if(!DbUtils::set_table_privileges_groups_from_document(document))
   {
-    std::cerr << G_STRFUNC << ": set_table_privileges_groups_from_document() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": set_table_privileges_groups_from_document() failed.\n";
     return false;
   }
     
@@ -331,7 +331,7 @@ bool recreate_database_from_document(const std::shared_ptr<Document>& document,
 
       if(!table_insert_succeeded)
       {
-        std::cerr << G_STRFUNC << ": INSERT of example data failed with the newly-created database." << 
std::endl;
+        std::cerr << G_STRFUNC << ": INSERT of example data failed with the newly-created database.\n";
         return false;
       }
     //}
@@ -425,7 +425,7 @@ SystemPrefs get_database_preferences(const std::shared_ptr<const Document>& docu
       const auto test = add_standard_tables(document);
       if(!test)
       {
-         std::cerr << G_STRFUNC << ": add_standard_tables() failed." << std::endl;
+         std::cerr << G_STRFUNC << ": add_standard_tables() failed.\n";
       }
       
       ++attempts; //Try again now that we have tried to create the table.
@@ -461,7 +461,7 @@ void set_database_preferences(const std::shared_ptr<Document>& document, const S
   const auto test = query_execute(builder);
 
   if(!test)
-    std::cerr << G_STRFUNC << ": UPDATE failed." << std::endl;
+    std::cerr << G_STRFUNC << ": UPDATE failed.\n";
 
   //Set some information in the document too, so we can use it to recreate the database:
   document->set_database_title_original(prefs.m_name);
@@ -487,7 +487,7 @@ bool add_standard_tables(const std::shared_ptr<const Document>& document)
         builderAdd->set_table(GLOM_STANDARD_TABLE_PREFS_TABLE_NAME);
         builderAdd->add_field_value(GLOM_STANDARD_TABLE_PREFS_FIELD_ID, 1);
         if(!query_execute(builderAdd))
-          std::cerr << G_STRFUNC << ": INSERT failed." << std::endl;
+          std::cerr << G_STRFUNC << ": INSERT failed.\n";
 
         //Use the database title from the document, if there is one:
         const auto system_name = document->get_database_title_original();
@@ -500,12 +500,12 @@ bool add_standard_tables(const std::shared_ptr<const Document>& document)
                                                
builderUpdate->add_field_id(GLOM_STANDARD_TABLE_PREFS_FIELD_ID, GLOM_STANDARD_TABLE_PREFS_TABLE_NAME),
                                                builderUpdate->add_expr(1)));
           if(!query_execute(builderUpdate))
-            std::cerr << G_STRFUNC << ": UPDATE failed." << std::endl;
+            std::cerr << G_STRFUNC << ": UPDATE failed.\n";
         }
       }
       else
       {
-        std::cerr << G_STRFUNC << ": add_standard_tables(): create_table(prefs) failed." << std::endl;
+        std::cerr << G_STRFUNC << ": add_standard_tables(): create_table(prefs) failed.\n";
         return false;
       }
     }
@@ -549,7 +549,7 @@ bool add_standard_tables(const std::shared_ptr<const Document>& document)
       const auto test = create_table(document->get_hosting_mode(), table_info, fields);
       if(!test)
       {
-        std::cerr << G_STRFUNC << ": add_standard_tables(): create_table(autoincrements) failed." << 
std::endl;
+        std::cerr << G_STRFUNC << ": add_standard_tables(): create_table(autoincrements) failed.\n";
         return false;
       }
 
@@ -580,7 +580,7 @@ bool add_standard_groups(const std::shared_ptr<Document>& document)
   auto gda_connection = get_connection();
   if(!gda_connection)
   {
-    std::cerr << G_STRFUNC << ": No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": No connection yet.\n";
   }
 
   // If the connection doesn't support users we can skip this step
@@ -599,7 +599,7 @@ bool add_standard_groups(const std::shared_ptr<Document>& document)
       DbUtils::build_query_create_group(GLOM_STANDARD_GROUP_NAME_DEVELOPER, true /* superuser */));
     if(!test)
     {
-      std::cerr << G_STRFUNC << ": CREATE GROUP failed when adding the developer group." << std::endl;
+      std::cerr << G_STRFUNC << ": CREATE GROUP failed when adding the developer group.\n";
       return false;
     }
 
@@ -610,11 +610,11 @@ bool add_standard_groups(const std::shared_ptr<Document>& document)
     test = query_execute_string(strQuery);
     if(!test)
     {
-      std::cerr << G_STRFUNC << ": ALTER GROUP failed when adding the user to the developer group." << 
std::endl;
+      std::cerr << G_STRFUNC << ": ALTER GROUP failed when adding the user to the developer group.\n";
       return false;
     }
 
-    //std::cout << "DEBUG: Added user " << current_user << " to glom developer group on postgres server." << 
std::endl;
+    //std::cout << "DEBUG: Added user " << current_user << " to glom developer group on postgres server.\n";
 
     Privileges priv_devs;
     priv_devs.m_view = true;
@@ -640,7 +640,7 @@ bool add_standard_groups(const std::shared_ptr<Document>& document)
   }
   else
   {
-    std::cout << "DEBUG: Connection does not support users" << std::endl;
+    std::cout << "DEBUG: Connection does not support users\n";
   }
 
   return true;
@@ -651,7 +651,7 @@ bool add_groups_from_document(const std::shared_ptr<const Document>& document)
   auto gda_connection = get_connection();
   if(!gda_connection)
   {
-    std::cerr << G_STRFUNC << ": add_standard_groups(): No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": add_standard_groups(): No connection yet.\n";
   }
 
   // If the connection doesn't support users we can skip this step
@@ -687,7 +687,7 @@ bool set_table_privileges_groups_from_document(const std::shared_ptr<const Docum
   auto gda_connection = get_connection();
   if(!gda_connection)
   {
-    std::cerr << G_STRFUNC << ": No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": No connection yet.\n";
   }
 
   // If the connection doesn't support users we can skip this step
@@ -830,7 +830,7 @@ type_vec_fields get_fields_for_table_from_database(const Glib::ustring& table_na
     auto connection = get_connection();
     if(!connection)
     {
-      std::cerr << G_STRFUNC << ": connection is null" << std::endl;
+      std::cerr << G_STRFUNC << ": connection is null\n";
       return result;
     }
 
@@ -865,15 +865,15 @@ type_vec_fields get_fields_for_table_from_database(const Glib::ustring& table_na
 
     if(!data_model_fields)
     {
-      std::cerr << G_STRFUNC << ": libgda reported empty fields schema data_model for the table." << 
std::endl;
+      std::cerr << G_STRFUNC << ": libgda reported empty fields schema data_model for the table.\n";
     }
     else if(data_model_fields->get_n_columns() == 0)
     {
-      std::cerr << G_STRFUNC << ": libgda reported 0 fields for the table." << std::endl;
+      std::cerr << G_STRFUNC << ": libgda reported 0 fields for the table.\n";
     }
     else if(data_model_fields->get_n_rows() == 0)
     {
-      std::cerr << G_STRFUNC << ": table_name=" << table_name << ": data_model_fields->get_n_rows() == 0: 
The table probably does not exist in the specified database, or the user does not have SELECT rights." << 
std::endl;
+      std::cerr << G_STRFUNC << ": table_name=" << table_name << ": data_model_fields->get_n_rows() == 0: 
The table probably does not exist in the specified database, or the user does not have SELECT rights.\n";
     }
     else
     {
@@ -978,7 +978,7 @@ type_vec_fields get_fields_for_table(const std::shared_ptr<const Document>& docu
 
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null" << std::endl;
+    std::cerr << G_STRFUNC << ": document is null\n";
     return type_vec_fields(); //This should never happen.
   }
 
@@ -1076,11 +1076,11 @@ type_vec_strings get_table_names_from_database(bool ignore_system_tables)
 
     if(!data_model_tables)
     {
-      std::cerr << G_STRFUNC << ": libgda returned an empty tables GdaDataModel for the database." << 
std::endl;
+      std::cerr << G_STRFUNC << ": libgda returned an empty tables GdaDataModel for the database.\n";
     }
     else if(data_model_tables->get_n_columns() <= 0)
     {
-      std::cerr << G_STRFUNC << ": libgda reported 0 tables for the database." << std::endl;
+      std::cerr << G_STRFUNC << ": libgda reported 0 tables for the database.\n";
     }
     else
     {
@@ -1150,7 +1150,7 @@ bool create_table_with_default_fields(const std::shared_ptr<Document>& document,
   auto gda_connection = get_connection();
   if(!gda_connection)
   {
-    std::cerr << G_STRFUNC << ": No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": No connection yet.\n";
     return false;
   }
 
@@ -1194,7 +1194,7 @@ bool create_table_with_default_fields(const std::shared_ptr<Document>& document,
 
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null." << std::endl;
+    std::cerr << G_STRFUNC << ": document was null.\n";
     return false;
   }
   
@@ -1266,7 +1266,7 @@ bool create_table(Document::HostingMode hosting_mode, const std::shared_ptr<cons
 
   if(sql_fields.empty())
   {
-    std::cerr << G_STRFUNC << ": sql_fields is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": sql_fields is empty.\n";
   }
 
   //Actually create the table
@@ -1275,11 +1275,11 @@ bool create_table(Document::HostingMode hosting_mode, const std::shared_ptr<cons
     //TODO: Escape the table name?
     //TODO: Use GDA_SERVER_OPERATION_CREATE_TABLE instead?
     const Glib::ustring query = "CREATE TABLE " + escape_sql_id(table_info->get_name()) + " (" + sql_fields 
+ ");";
-    //std::cout << G_STRFUNC << ": debug: CREATE TABLE query:" << std::endl;
+    //std::cout << G_STRFUNC << ": debug: CREATE TABLE query:\n";
     //std::cout << "    " << query << std::endl;
     table_creation_succeeded = query_execute_string(query);
     if(!table_creation_succeeded)
-      std::cerr << G_STRFUNC << ": CREATE TABLE failed." << std::endl;
+      std::cerr << G_STRFUNC << ": CREATE TABLE failed.\n";
   }
   catch(const ExceptionConnection& ex)
   {
@@ -1363,13 +1363,13 @@ static void builder_set_where_autoincrement(const Glib::RefPtr<Gnome::Gda::SqlBu
 {
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": table_name is empty\n";
     return;
   }
   
   if(field_name.empty())
   {
-    std::cerr << G_STRFUNC << ": field_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": field_name is empty\n";
     return;
   }
   
@@ -1386,13 +1386,13 @@ Gnome::Gda::Value get_next_auto_increment_value(const Glib::ustring& table_name,
 {
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": table_name is empty\n";
     return Gnome::Gda::Value();
   }
   
   if(field_name.empty())
   {
-    std::cerr << G_STRFUNC << ": field_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": field_name is empty\n";
     return Gnome::Gda::Value();
   }
   
@@ -1410,7 +1410,7 @@ Gnome::Gda::Value get_next_auto_increment_value(const Glib::ustring& table_name,
 
   const auto test = query_execute(builder);
   if(!test)
-    std::cerr << G_STRFUNC << ": Increment failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Increment failed.\n";
 
   return result;
 }
@@ -1419,13 +1419,13 @@ Gnome::Gda::Value auto_increment_insert_first_if_necessary(const Glib::ustring&
 {
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": table_name is empty\n";
     return Gnome::Gda::Value();
   }
   
   if(field_name.empty())
   {
-    std::cerr << G_STRFUNC << ": field_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": field_name is empty\n";
     return Gnome::Gda::Value();
   }
 
@@ -1436,7 +1436,7 @@ Gnome::Gda::Value auto_increment_insert_first_if_necessary(const Glib::ustring&
   if(!table_privs.m_view || !table_privs.m_edit)
   {
     //This should not happen:
-    std::cerr << G_STRFUNC << ": The current user may not edit the autoincrements table. Any user who has 
create rights for a table should have edit rights to the autoincrements table." << std::endl;
+    std::cerr << G_STRFUNC << ": The current user may not edit the autoincrements table. Any user who has 
create rights for a table should have edit rights to the autoincrements table.\n";
   }
 
   auto builder =
@@ -1459,7 +1459,7 @@ Gnome::Gda::Value auto_increment_insert_first_if_necessary(const Glib::ustring&
 
     const auto test = query_execute(builder);
     if(!test)
-      std::cerr << G_STRFUNC << ": INSERT of new row failed." << std::endl;
+      std::cerr << G_STRFUNC << ": INSERT of new row failed.\n";
 
     //GdaNumeric is a pain, so we take a short-cut:
     bool success = false;
@@ -1488,13 +1488,13 @@ static void recalculate_next_auto_increment_value(const Glib::ustring& table_nam
 {
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": table_name is empty\n";
     return;
   }
   
   if(field_name.empty())
   {
-    std::cerr << G_STRFUNC << ": field_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": field_name is empty\n";
     return;
   }
 
@@ -1535,23 +1535,23 @@ static void recalculate_next_auto_increment_value(const Glib::ustring& table_nam
 
     const auto test = query_execute(builder);
     if(!test)
-      std::cerr << G_STRFUNC << ": UPDATE failed." << std::endl;
+      std::cerr << G_STRFUNC << ": UPDATE failed.\n";
   }
   else
-    std::cerr << G_STRFUNC << ": SELECT MAX() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": SELECT MAX() failed.\n";
 }
 
 void remove_auto_increment(const Glib::ustring& table_name, const Glib::ustring& field_name)
 {
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": table_name is empty\n";
     return;
   }
   
   if(field_name.empty())
   {
-    std::cerr << G_STRFUNC << ": field_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": field_name is empty\n";
     return;
   }
   
@@ -1562,7 +1562,7 @@ void remove_auto_increment(const Glib::ustring& table_name, const Glib::ustring&
 
   const auto test = query_execute(builder);
   if(!test)
-    std::cerr << G_STRFUNC << ": UPDATE failed." << std::endl;
+    std::cerr << G_STRFUNC << ": UPDATE failed.\n";
 }
 
 bool insert_example_data(const std::shared_ptr<const Document>& document, const Glib::ustring& table_name)
@@ -1571,14 +1571,14 @@ bool insert_example_data(const std::shared_ptr<const Document>& document, const
   const auto example_rows = document->get_table_example_data(table_name);
   if(example_rows.empty())
   {
-    //std::cout << "debug: " << G_STRFUNC << ": No example data available." << std::endl;
+    //std::cout << "debug: " << G_STRFUNC << ": No example data available.\n";
     return true;
   }
 
   auto gda_connection = get_connection();
   if(!gda_connection)
   {
-    std::cerr << G_STRFUNC << ": connection is null" << std::endl;
+    std::cerr << G_STRFUNC << ": connection is null\n";
     return false;
   }
 
@@ -1603,7 +1603,7 @@ bool insert_example_data(const std::shared_ptr<const Document>& document, const
     if(row_data.empty())
       break;
 
-    //std::cout << "DEBUG: row_data size = " << row_data.size() << ", (fields size= " << vec_fields.size() 
<< " )" << std::endl;
+    //std::cout << "DEBUG: row_data size = " << row_data.size() << ", (fields size= " << vec_fields.size() 
<< " )\n";
 
     const auto hosting_mode = document->get_hosting_mode();
 
@@ -1626,7 +1626,7 @@ bool insert_example_data(const std::shared_ptr<const Document>& document, const
           (hosting_mode == Document::HostingMode::MYSQL_SELF))
         {
           //TODO: See https://bugzilla.gnome.org/show_bug.cgi?id=691099
-          std::cerr << G_STRFUNC << ": Skipping Image field because libgda does not support it for MySQL." 
<< std::endl;
+          std::cerr << G_STRFUNC << ": Skipping Image field because libgda does not support it for MySQL.\n";
           break;
         }
       }
@@ -1638,7 +1638,7 @@ bool insert_example_data(const std::shared_ptr<const Document>& document, const
     //After this, the Parser will know how many SQL parameters there are in
     //the query, and allow us to set their values.
 
-    //std::cout << G_STRFUNC << ": debug: INSERT query: " << std::endl
+    //std::cout << G_STRFUNC << ": debug: INSERT query: \n"
     //  << "    " << Utils::sqlbuilder_get_full_query(builder) << std::endl;
 
     insert_succeeded = query_execute(builder);
@@ -1669,7 +1669,7 @@ Glib::RefPtr<Gnome::Gda::DataModel> query_execute_select(const Glib::RefPtr<cons
   auto gda_connection = get_connection();
   if(!gda_connection)
   {
-    std::cerr << G_STRFUNC << ": No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": No connection yet.\n";
     return result;
   }
 
@@ -1732,7 +1732,7 @@ bool query_execute_string(const Glib::ustring& strQuery, const Glib::RefPtr<Gnom
   auto gda_connection = get_connection();
   if(!gda_connection)
   {
-    std::cerr << G_STRFUNC << ": No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": No connection yet.\n";
     return false;
   }
 
@@ -1796,7 +1796,7 @@ bool query_execute(const Glib::RefPtr<const Gnome::Gda::SqlBuilder>& builder)
   auto gda_connection = get_connection();
   if(!gda_connection)
   {
-    std::cerr << G_STRFUNC << ": No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": No connection yet.\n";
     return false;
   }
 
@@ -1846,13 +1846,13 @@ void layout_item_fill_field_details(const std::shared_ptr<const Document>& docum
 {
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null." << std::endl;
+    std::cerr << G_STRFUNC << ": document was null.\n";
     return;
   }
 
   if(!layout_item)
   {
-    std::cerr << G_STRFUNC << ": layout_item was null." << std::endl;
+    std::cerr << G_STRFUNC << ": layout_item was null.\n";
   }
 
   const auto table_name = layout_item->get_table_used(parent_table_name);
@@ -1866,19 +1866,19 @@ bool layout_field_should_have_navigation(const Glib::ustring& table_name, const
   
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null." << std::endl;
+    std::cerr << G_STRFUNC << ": document was null.\n";
     return false;
   }
   
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": table_name was empty.\n";
     return false;
   } 
   
   if(!layout_item)
   {
-    std::cerr << G_STRFUNC << ": layout_item was null." << std::endl;
+    std::cerr << G_STRFUNC << ": layout_item was null.\n";
     return false;
   }
 
@@ -1944,7 +1944,7 @@ Glib::ustring get_unused_database_name(const Glib::ustring& base_name)
       {
         //We couldn't even connect to the server,
         //regardless of what database we try to connect to:
-        std::cerr << G_STRFUNC << ": Could not connect to the server." << std::endl;
+        std::cerr << G_STRFUNC << ": Could not connect to the server.\n";
         return Glib::ustring();
       }
       else
@@ -1963,7 +1963,7 @@ int count_rows_returned_by(const Glib::RefPtr<const Gnome::Gda::SqlBuilder>& sql
 {
   if(!sql_query)
   {
-    std::cerr << G_STRFUNC << ": sql_query was null." << std::endl;
+    std::cerr << G_STRFUNC << ": sql_query was null.\n";
     return 0;
   }
 
@@ -2019,14 +2019,14 @@ Glib::ustring escape_sql_id(const Glib::ustring& id)
 {
   if(id.empty())
   {
-    std::cerr << G_STRFUNC << ": id is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": id is empty.\n";
     return id;
   }
 
   auto gda_connection = get_connection();
   if(!gda_connection)
   {
-    std::cerr << G_STRFUNC << ": No gda_connection." << std::endl;
+    std::cerr << G_STRFUNC << ": No gda_connection.\n";
     return id;
   }
 
@@ -2048,7 +2048,7 @@ Glib::ustring build_query_create_group(const Glib::ustring& group, bool superuse
 {
   if(group.empty())
   {
-    std::cerr << G_STRFUNC << ": group is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": group is empty\n";
   }
 
   Glib::ustring query = "CREATE GROUP " + escape_sql_id(group);
@@ -2065,12 +2065,12 @@ Glib::ustring build_query_add_user_to_group(const Glib::ustring& group, const Gl
 {
   if(group.empty())
   {
-    std::cerr << G_STRFUNC << ": group is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": group is empty\n";
   }
 
   if(user.empty())
   {
-    std::cerr << G_STRFUNC << ": user is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": user is empty\n";
   }
 
   return "ALTER GROUP " + escape_sql_id(group) + " ADD USER " + escape_sql_id(user);
@@ -2080,12 +2080,12 @@ static Glib::ustring build_query_add_user(const Glib::ustring& user, const Glib:
 {
   if(user.empty())
   {
-    std::cerr << G_STRFUNC << ": user is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": user is empty\n";
   }
 
   if(password.empty())
   {
-    std::cerr << G_STRFUNC << ": password is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": password is empty\n";
   }
 
   //Note that ' around the user fails, so we use ".
@@ -2100,25 +2100,25 @@ bool add_user(const std::shared_ptr<const Document>& document, const Glib::ustri
 {
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null." << std::endl;
+    std::cerr << G_STRFUNC << ": document is null.\n";
     return false;
   }
 
   if(user.empty())
   {
-    std::cerr << G_STRFUNC << ": user is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": user is empty.\n";
     return false;
   }
 
   if(password.empty())
   {
-    std::cerr << G_STRFUNC << ": password is  empty." << std::endl;
+    std::cerr << G_STRFUNC << ": password is  empty.\n";
     return false;
   }
 
   if(group.empty())
   {
-    std::cerr << G_STRFUNC << ": group is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": group is empty.\n";
     return false;
   }
 
@@ -2128,7 +2128,7 @@ bool add_user(const std::shared_ptr<const Document>& document, const Glib::ustri
   bool test = DbUtils::query_execute_string(query_add);
   if(!test)
   {
-    std::cerr << G_STRFUNC << ": CREATE USER failed." << std::endl;
+    std::cerr << G_STRFUNC << ": CREATE USER failed.\n";
     return false;
   }
 
@@ -2137,7 +2137,7 @@ bool add_user(const std::shared_ptr<const Document>& document, const Glib::ustri
   test = DbUtils::query_execute_string(query_add_to_group);
   if(!test)
   {
-    std::cerr << G_STRFUNC << ": ALTER GROUP failed." << std::endl;
+    std::cerr << G_STRFUNC << ": ALTER GROUP failed.\n";
     return false;
   }
 
@@ -2149,7 +2149,7 @@ bool add_user(const std::shared_ptr<const Document>& document, const Glib::ustri
     const auto table_name = table->get_name();
     const Glib::ustring strQuery = "REVOKE ALL PRIVILEGES ON " + DbUtils::escape_sql_id(table_name) + " FROM 
" + DbUtils::escape_sql_id(user);
     if(!DbUtils::query_execute_string(strQuery))
-      std::cerr << G_STRFUNC << ": REVOKE failed." << std::endl;
+      std::cerr << G_STRFUNC << ": REVOKE failed.\n";
   }
 
   return true;
@@ -2159,13 +2159,13 @@ bool add_group(const std::shared_ptr<const Document>& document, const Glib::ustr
 {
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null." << std::endl;
+    std::cerr << G_STRFUNC << ": document is null.\n";
     return false;
   }
 
   if(group.empty())
   {
-    std::cerr << G_STRFUNC << ": group is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": group is empty.\n";
     return false;
   }
  
@@ -2174,7 +2174,7 @@ bool add_group(const std::shared_ptr<const Document>& document, const Glib::ustr
   const auto test = DbUtils::query_execute_string(strQuery);
   if(!test)
   {
-    std::cerr << G_STRFUNC << ": CREATE GROUP failed." << std::endl;
+    std::cerr << G_STRFUNC << ": CREATE GROUP failed.\n";
     return false;
   }
 
@@ -2189,7 +2189,7 @@ bool add_group(const std::shared_ptr<const Document>& document, const Glib::ustr
   {
     if(!Privs::set_table_privileges(group, table, priv))
     {
-      std::cerr << G_STRFUNC << "Privs::set_table_privileges() failed." << std::endl;
+      std::cerr << G_STRFUNC << "Privs::set_table_privileges() failed.\n";
       return false;
     }
   }
@@ -2201,7 +2201,7 @@ bool add_group(const std::shared_ptr<const Document>& document, const Glib::ustr
     
   if(!Privs::set_table_privileges(group, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME, priv))
   {
-    std::cerr << G_STRFUNC << "Privs::set_table_privileges() failed." << std::endl;
+    std::cerr << G_STRFUNC << "Privs::set_table_privileges() failed.\n";
     return false;
   }
 
@@ -2218,7 +2218,7 @@ bool remove_user(const Glib::ustring& user)
   const auto test = DbUtils::query_execute_string(strQuery);
   if(!test)
   {
-    std::cerr << G_STRFUNC << ": DROP USER failed" << std::endl;
+    std::cerr << G_STRFUNC << ": DROP USER failed\n";
     return false;
   }
 
@@ -2234,7 +2234,7 @@ bool remove_user_from_group(const Glib::ustring& user, const Glib::ustring& grou
   const auto test = DbUtils::query_execute_string(strQuery);
   if(!test)
   {
-    std::cerr << G_STRFUNC << ": ALTER GROUP failed." << std::endl;
+    std::cerr << G_STRFUNC << ": ALTER GROUP failed.\n";
     return false;
   }
 
@@ -2291,7 +2291,7 @@ type_map_fields get_record_field_values(const std::shared_ptr<const Document>& d
 
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is NULL." << std::endl;
+    std::cerr << G_STRFUNC << ": document is NULL.\n";
     return field_values;
   }
 
diff --git a/glom/libglom/document/bakery/document.cc b/glom/libglom/document/bakery/document.cc
index 99157cc..28e57b3 100644
--- a/glom/libglom/document/bakery/document.cc
+++ b/glom/libglom/document/bakery/document.cc
@@ -271,7 +271,7 @@ bool Document::write_to_disk()
 {
   if(m_file_uri.empty())
   {
-    std::cerr << G_STRFUNC << ": m_file_uri is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_file_uri is empty.\n";
     return false;
   }
 
diff --git a/glom/libglom/document/bakery/document_xml.cc b/glom/libglom/document/bakery/document_xml.cc
index 43a6cd6..b589451 100644
--- a/glom/libglom/document/bakery/document_xml.cc
+++ b/glom/libglom/document/bakery/document_xml.cc
@@ -50,7 +50,7 @@ bool Document_XML::load_after(int& failure_code)
     //m_DOM_Parser.setDoValidation(true);
 
     if(m_strContents.empty())
-      std::cerr << G_STRFUNC << ": parsing empty document." << std::endl;
+      std::cerr << G_STRFUNC << ": parsing empty document.\n";
 
     m_DOM_Parser.parse_memory(m_strContents);
     m_pDOM_Document = m_DOM_Parser.get_document();
@@ -206,7 +206,7 @@ void Document_XML::add_indenting_white_space_to_node(xmlpp::Node* node, const Gl
     }
 
     //Add a text item for the indenting, before the child:
-    //std::cout << "  Adding indent after node=" << child->get_name() << ": START" << indent << "END" << 
std::endl;
+    //std::cout << "  Adding indent after node=" << child->get_name() << ": START" << indent << "END\n";
     node_as_element->add_child_text_before(child, indent);
     had_children = true;
 
diff --git a/glom/libglom/document/document.cc b/glom/libglom/document/document.cc
index 2349242..d92f948 100644
--- a/glom/libglom/document/document.cc
+++ b/glom/libglom/document/document.cc
@@ -349,7 +349,7 @@ std::string Document::get_connection_self_hosted_directory_uri() const
   const auto uri_file = get_file_uri();
   if(uri_file.empty())
   {
-    std::cerr << G_STRFUNC << ": file_uri is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": file_uri is empty.\n";
     return std::string();
   }
   else
@@ -389,7 +389,7 @@ std::string Document::get_connection_self_hosted_directory_uri() const
     }
   }
 
-  std::cerr << G_STRFUNC << ": returning empty string." << std::endl;
+  std::cerr << G_STRFUNC << ": returning empty string.\n";
   return std::string();
 }
 
@@ -878,7 +878,7 @@ Document::type_vec_fields Document::get_table_fields(const Glib::ustring& table_
   }
   else
   {
-    //std::cerr << G_STRFUNC << ": table name is empty." << std::endl;
+    //std::cerr << G_STRFUNC << ": table name is empty.\n";
   }
 
   //Hide any system fields:
@@ -1475,7 +1475,7 @@ Document::type_list_layout_groups Document::get_data_layout_groups_plus_new_fiel
 
   if(create_default)
   {
-    std::cout << "debug: " << G_STRFUNC << ": Creating a default layout." << std::endl;
+    std::cout << "debug: " << G_STRFUNC << ": Creating a default layout.\n";
     result = get_data_layout_groups_default(layout_name, parent_table_name, layout_platform);
 
     /*
@@ -1737,7 +1737,7 @@ bool Document::set_userlevel(AppState::userlevels userlevel)
   //Prevent incorrect user level:
   if((userlevel == AppState::userlevels::DEVELOPER) && get_read_only())
   {
-    std::cout << "debug: " << G_STRFUNC << ": Developer mode denied because get_read_only() returned true." 
<< std::endl;
+    std::cout << "debug: " << G_STRFUNC << ": Developer mode denied because get_read_only() returned 
true.\n";
     std::cout << "  DEBUG: get_read_only()=" << get_read_only() << std::endl;
     std::cout << "  DEBUG: get_file_uri()=" << get_file_uri() << std::endl;
 
@@ -1836,7 +1836,7 @@ void Document::save_changes()
     auto test = save_before();
     if(test)
     {
-      //std::cout << "debug: " << G_STRFUNC << ": calling write_to_disk()." << std::endl;
+      //std::cout << "debug: " << G_STRFUNC << ": calling write_to_disk().\n";
       test = write_to_disk();
       if(test)
       {
@@ -1846,17 +1846,17 @@ void Document::save_changes()
   }
   else
   {
-    //std::cout << "debug: " << G_STRFUNC << ": Not saving, because not AppState::userlevels::DEVELOPER" << 
std::endl;
+    //std::cout << "debug: " << G_STRFUNC << ": Not saving, because not AppState::userlevels::DEVELOPER\n";
   }
 }
 
 void Document::set_modified(bool value)
 {
-  //std::cout << "Document::set_modified()" << std::endl;
+  //std::cout << "Document::set_modified()\n";
 
   if(value && m_block_modified_set) //For instance, don't save changes while loading.
   {
-    //std::cout << "  Document::set_modified() m_block_modified_set" << std::endl;
+    //std::cout << "  Document::set_modified() m_block_modified_set\n";
     return;
   }
 
@@ -1877,7 +1877,7 @@ void Document::set_modified(bool value)
 
     if(value)
     {
-      //std::cout << "  Document::set_modified() save_changes" << std::endl;
+      //std::cout << "  Document::set_modified() save_changes\n";
 
       //TODO: Combine m_allow_auto_save and m_block_modified_set?
       if(!m_allow_auto_save) //For instance, don't save changes while making many changes.
@@ -2146,7 +2146,7 @@ void Document::load_after_layout_group(const xmlpp::Element* node, const Glib::u
 {
   if(!node || !group)
   {
-    //std::cerr << G_STRFUNC << ": node is NULL" << std::endl;
+    //std::cerr << G_STRFUNC << ": node is NULL\n";
     return;
   }
 
@@ -2619,7 +2619,7 @@ bool Document::load_after(int& failure_code)
             mode = HostingMode::MYSQL_SELF;
           else
          {
-            std::cerr << G_STRFUNC << ": Hosting mode " << attr_mode << " is not supported" << std::endl;
+            std::cerr << G_STRFUNC << ": Hosting mode " << attr_mode << " is not supported\n";
             return false; //TODO: Provide more information so the application (or Bakery) can say exactly 
why loading failed.
          }
         }
@@ -3665,7 +3665,7 @@ bool Document::save_before()
 
       const auto table_name = doctableinfo->m_info->get_name();
       if(table_name.empty())
-        std::cerr << G_STRFUNC << ": table name is empty." << std::endl;
+        std::cerr << G_STRFUNC << ": table name is empty.\n";
 
       if(!table_name.empty())
       {
@@ -3876,7 +3876,7 @@ bool Document::save_before()
       if(group_name.empty())
       {
         //I saw this in at least one .glom file. murrayc.
-        std::cerr << G_STRFUNC << ": The group name is empty." << std::endl;
+        std::cerr << G_STRFUNC << ": The group name is empty.\n";
         continue;
       }
 
@@ -4141,7 +4141,7 @@ std::shared_ptr<const Relationship> Document::get_field_used_in_relationship_to_
 
   if(!layout_field)
   {
-    std::cerr << G_STRFUNC << ": layout_field was null" << std::endl;
+    std::cerr << G_STRFUNC << ": layout_field was null\n";
     return result;
   }
 
@@ -4781,7 +4781,7 @@ bool add_file_to_archive(archive* a, const std::string& parent_dir_path, const s
   struct stat st;
   if(stat(filepath.c_str(), &st) < 0)
   {
-    std::cerr << G_STRFUNC << ": stat() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": stat() failed.\n";
     std::cerr << "  : with path: " << filepath << std::endl;
     return false;
   }
@@ -4797,7 +4797,7 @@ bool add_file_to_archive(archive* a, const std::string& parent_dir_path, const s
 
   if(archive_write_header(a, entry) != ARCHIVE_OK)
   {
-    std::cerr << G_STRFUNC << ": Could not write archive header." << std::endl;
+    std::cerr << G_STRFUNC << ": Could not write archive header.\n";
     handle_archive_error(a);
     return false;
   }
@@ -4822,7 +4822,7 @@ bool add_file_to_archive(archive* a, const std::string& parent_dir_path, const s
         ssize_t check = archive_write_data(a, buffer, bytes_read);
         if(check != bytes_read)
         {
-          std::cerr << G_STRFUNC << ": archive_write_data() wrote an unexpected number of bytes. " << 
std::endl;
+          std::cerr << G_STRFUNC << ": archive_write_data() wrote an unexpected number of bytes. \n";
           handle_archive_error(a);
           return false;
         }
@@ -4901,28 +4901,28 @@ Glib::ustring Document::save_backup_file(const Glib::ustring& uri, const SlotPro
 
   if(archive_write_add_filter_gzip(a) != ARCHIVE_OK)
   {
-    std::cerr << G_STRFUNC << ": libarchive does not support tar." << std::endl;
+    std::cerr << G_STRFUNC << ": libarchive does not support tar.\n";
     handle_archive_error(a);
     return Glib::ustring();
   }
 
   if(archive_write_set_format_pax_restricted(a) != ARCHIVE_OK)
   {
-    std::cerr << G_STRFUNC << ": libarchive does not support pax_restricted." << std::endl;
+    std::cerr << G_STRFUNC << ": libarchive does not support pax_restricted.\n";
     handle_archive_error(a);
     return Glib::ustring();
   }
 
   if(archive_write_set_bytes_per_block(a, 4096) != ARCHIVE_OK)
   {
-    std::cerr << G_STRFUNC << ": libarchive: cannot set bytes per block." << std::endl;
+    std::cerr << G_STRFUNC << ": libarchive: cannot set bytes per block.\n";
     handle_archive_error(a);
     return Glib::ustring();
   }
 
   if(archive_write_open_filename(a, tarball_path.c_str()) != ARCHIVE_OK)
   {
-    std::cerr << G_STRFUNC << ": Could not open a new archive file for writing." << std::endl;
+    std::cerr << G_STRFUNC << ": Could not open a new archive file for writing.\n";
     handle_archive_error(a);
     return Glib::ustring();
   }
@@ -4937,7 +4937,7 @@ Glib::ustring Document::save_backup_file(const Glib::ustring& uri, const SlotPro
 
   if(archive_write_close(a))
   {
-    std::cerr << G_STRFUNC << ": Could not close archive." << std::endl;
+    std::cerr << G_STRFUNC << ": Could not close archive.\n";
     handle_archive_error(a);
     return Glib::ustring();
   }
@@ -5001,14 +5001,14 @@ Glib::ustring Document::extract_backup_file(const Glib::ustring& backup_uri, std
 
   if(archive_read_support_filter_gzip(a) != ARCHIVE_OK)
   {
-    std::cerr << G_STRFUNC << ": libarchive apparently does not support gzip." << std::endl;
+    std::cerr << G_STRFUNC << ": libarchive apparently does not support gzip.\n";
     handle_archive_error(a);
     return Glib::ustring();
   }
 
   if(archive_read_support_format_all(a) != ARCHIVE_OK)
   {
-    std::cerr << G_STRFUNC << ": libarchive apparently does not support standard formats." << std::endl;
+    std::cerr << G_STRFUNC << ": libarchive apparently does not support standard formats.\n";
     handle_archive_error(a);
     return Glib::ustring();
   }
@@ -5016,7 +5016,7 @@ Glib::ustring Document::extract_backup_file(const Glib::ustring& backup_uri, std
 
   if(archive_read_open_filename(a, filename_tarball.c_str(), 10240) != ARCHIVE_OK) //TODO
   {
-    std::cerr << G_STRFUNC << ": could not read filename from archive." << std::endl;
+    std::cerr << G_STRFUNC << ": could not read filename from archive.\n";
     handle_archive_error(a);
     return Glib::ustring();
   }
diff --git a/glom/libglom/example_document_load.cc b/glom/libglom/example_document_load.cc
index cd30a1e..bfc327a 100644
--- a/glom/libglom/example_document_load.cc
+++ b/glom/libglom/example_document_load.cc
@@ -136,12 +136,12 @@ int main()
     //Show the layouts for this table:
     const Glom::Document::type_list_layout_groups layout_list =
       document->get_data_layout_groups("list", table_name);
-    std::cout << "  Layout: List:" << std::endl;
+    std::cout << "  Layout: List:\n";
     print_layout(layout_list);
 
     const Glom::Document::type_list_layout_groups layout_details =
       document->get_data_layout_groups("details", table_name);
-    std::cout << "  Layout: Details:" << std::endl;
+    std::cout << "  Layout: Details:\n";
     print_layout(layout_details);
   }
 
diff --git a/glom/libglom/init.cc b/glom/libglom/init.cc
index 4aa7ba8..67c3832 100644
--- a/glom/libglom/init.cc
+++ b/glom/libglom/init.cc
@@ -62,7 +62,7 @@ void libglom_init()
   if(!PyDateTimeAPI)
   {
     //Give people a clue on stdout:
-    std::cerr << G_STRFUNC << ": PyDateTime_IMPORT (a python module import) failed." << std::endl;
+    std::cerr << G_STRFUNC << ": PyDateTime_IMPORT (a python module import) failed.\n";
 
     //This gives more information. When this happens it is generally a linker
     //failure while importing a python module:
diff --git a/glom/libglom/privs.cc b/glom/libglom/privs.cc
index cf9a2d5..98c771e 100644
--- a/glom/libglom/privs.cc
+++ b/glom/libglom/privs.cc
@@ -250,7 +250,7 @@ bool Privs::set_table_privileges(const Glib::ustring& group_name, const Glib::us
   const auto test = DbUtils::query_execute_string(strQuery);
   if(!test)
   {
-    std::cerr << G_STRFUNC << ": GRANT failed." << std::endl;
+    std::cerr << G_STRFUNC << ": GRANT failed.\n";
     return false;
   }
 
@@ -263,7 +263,7 @@ bool Privs::set_table_privileges(const Glib::ustring& group_name, const Glib::us
     priv_autoincrements.m_edit = true;
     if(!set_table_privileges(group_name, GLOM_STANDARD_TABLE_AUTOINCREMENTS_TABLE_NAME, priv_autoincrements))
     {
-      std::cerr << G_STRFUNC << ": GRANT failed on autoincrements table." << std::endl;
+      std::cerr << G_STRFUNC << ": GRANT failed on autoincrements table.\n";
       return false;
     }
   }
@@ -285,7 +285,7 @@ static Glib::RefPtr<Gnome::Gda::Connection> get_connection()
 
   if(!sharedconnection)
   {
-    std::cerr << G_STRFUNC << ": No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": No connection yet.\n";
     return Glib::RefPtr<Gnome::Gda::Connection>();
   }
 
@@ -318,7 +318,7 @@ Privileges Privs::get_table_privileges(const Glib::ustring& group_name, const Gl
   auto connection = get_connection();
   if(!connection)
   {
-    std::cerr << G_STRFUNC << ": : Could not get a connection." << std::endl;
+    std::cerr << G_STRFUNC << ": : Could not get a connection.\n";
     return result;
   }
 
@@ -355,13 +355,13 @@ Privileges Privs::get_table_privileges(const Glib::ustring& group_name, const Gl
   auto data_model = DbUtils::query_execute_select(builder);
   if(!data_model || (data_model->get_n_rows() <= 0))
   {
-    std::cerr << G_STRFUNC << ": The query returned no data." << std::endl;
+    std::cerr << G_STRFUNC << ": The query returned no data.\n";
     return result;
   }
 
   if(data_model->get_n_columns() < 4)
   {
-    std::cerr << G_STRFUNC << ": The query did not return enough columns." << std::endl;
+    std::cerr << G_STRFUNC << ": The query did not return enough columns.\n";
     return result;
   }
 
@@ -437,7 +437,7 @@ Privileges Privs::get_current_privs(const Glib::ustring& table_name)
 {
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": table_name is empty.\n";
     return Privileges();
   }
   
@@ -451,7 +451,7 @@ Privileges Privs::get_current_privs(const Glib::ustring& table_name)
   const auto iter = m_privileges_cache.find(table_name);
   if(iter != m_privileges_cache.end())
   {
-    //std::cout << "debug: " << G_STRFUNC << ": Returning cache." << std::endl;
+    //std::cout << "debug: " << G_STRFUNC << ": Returning cache.\n";
     return iter->second;
   }
 
@@ -459,7 +459,7 @@ Privileges Privs::get_current_privs(const Glib::ustring& table_name)
   //Get the up-to-date privileges from the database:
   Privileges result;
 
-  //std::cout << "debug: " << G_STRFUNC << ": Getting non-cached." << std::endl;
+  //std::cout << "debug: " << G_STRFUNC << ": Getting non-cached.\n";
 
   auto connection_pool = ConnectionPool::get_instance();
   const auto current_user = connection_pool->get_user();
diff --git a/glom/libglom/python_embed/py_glom_record.cc b/glom/libglom/python_embed/py_glom_record.cc
index b2ee0cd..4fcabaa 100644
--- a/glom/libglom/python_embed/py_glom_record.cc
+++ b/glom/libglom/python_embed/py_glom_record.cc
@@ -66,7 +66,7 @@ boost::python::object PyGlomRecord::get_connection()
   {
     if(!_PyGObject_API)
     {
-      std::cerr << G_STRFUNC << ": pyggobject does not seem to be initialized properly." << std::endl;
+      std::cerr << G_STRFUNC << ": pyggobject does not seem to be initialized properly.\n";
       return result;
     }
 
@@ -170,13 +170,13 @@ void PyGlomRecord::setitem(const boost::python::object& key, const boost::python
   //Set the value in the database:
   if(!m_key_field || Conversions::value_is_empty(m_key_field_value))
   {
-    std::cerr << G_STRFUNC << ": The primary key name and value is not set. This would be a Glom bug." << 
std::endl;
+    std::cerr << G_STRFUNC << ": The primary key name and value is not set. This would be a Glom bug.\n";
     return;
   }
 
   if(!m_connection)
   {
-    std::cerr << G_STRFUNC << ": The connection is null. This would be a Glom bug." << std::endl;
+    std::cerr << G_STRFUNC << ": The connection is null. This would be a Glom bug.\n";
     return;
   }
 
@@ -205,7 +205,7 @@ void PyGlomRecord::setitem(const boost::python::object& key, const boost::python
 
   if(!updated)
   {
-    std::cerr << G_STRFUNC << ": UPDATE failed." << std::endl;
+    std::cerr << G_STRFUNC << ": UPDATE failed.\n";
   }
 
   //TODO: Do dependent calculations and lookups. Or just do them for all fields for this record when 
finishing the script?
diff --git a/glom/libglom/python_embed/py_glom_relatedrecord.cc 
b/glom/libglom/python_embed/py_glom_relatedrecord.cc
index cfb8003..4c4ba84 100644
--- a/glom/libglom/python_embed/py_glom_relatedrecord.cc
+++ b/glom/libglom/python_embed/py_glom_relatedrecord.cc
@@ -143,7 +143,7 @@ boost::python::object PyGlomRelatedRecord::getitem(const boost::python::object&
     }
     else if(!datamodel)
     {
-      std::cerr << G_STRFUNC << ": The datamodel was null." << std::endl;
+      std::cerr << G_STRFUNC << ": The datamodel was null.\n";
       ConnectionPool::handle_error_cerr_only();
       RelatedRecord_HandlePythonError();
     }
@@ -153,7 +153,7 @@ boost::python::object PyGlomRelatedRecord::getitem(const boost::python::object&
     }
   }
 
-  std::cerr << G_STRFUNC << ": return null." << std::endl;
+  std::cerr << G_STRFUNC << ": return null.\n";
   return boost::python::object();
 }
 
diff --git a/glom/libglom/python_embed/pygdavalue_conversions.cc 
b/glom/libglom/python_embed/pygdavalue_conversions.cc
index c3bad2e..84c0726 100644
--- a/glom/libglom/python_embed/pygdavalue_conversions.cc
+++ b/glom/libglom/python_embed/pygdavalue_conversions.cc
@@ -47,7 +47,7 @@ glom_pygda_value_from_pyobject(GValue* boxed, const boost::python::object& input
 
     if(input_c == Py_None)
     {
-      std::cerr << G_STRFUNC << ": Returning false for Py_None" << std::endl;
+      std::cerr << G_STRFUNC << ": Returning false for Py_None\n";
       return false;
     }
     
@@ -162,7 +162,7 @@ glom_pygda_value_from_pyobject(GValue* boxed, const boost::python::object& input
        }
      }
 #else
-  //std::cout << "DEBUG Dates not supported." << std::endl;
+  //std::cout << "DEBUG Dates not supported.\n";
 #endif
 
     PyObject* as_string = PyObject_Repr(input_c);
@@ -227,7 +227,7 @@ boost::python::object glom_pygda_value_as_boost_pyobject(const Glib::ValueBase&
           const auto day = g_date_get_day(val);
 
           if(!g_date_valid(val))
-            std::cerr << G_STRFUNC << ": The GDate is not valid." << std::endl;
+            std::cerr << G_STRFUNC << ": The GDate is not valid.\n";
 
           //std::cout << "DEBUG G_TYPE_DATE: year=" << year << ", month=" << month << ", day=" << day << 
std::endl;
           PyObject* cobject = PyDate_FromDate(year, month, day);
@@ -276,7 +276,7 @@ boost::python::object glom_pygda_value_as_boost_pyobject(const Glib::ValueBase&
     } else if(value_type == G_TYPE_UINT) {
         ret = boost::python::object(g_value_get_uint(boxed));
     } else if(value_type == GDA_TYPE_NULL) {
-        std::cerr << G_STRFUNC << ": Returning Py_None for GDA_TYPE_NULL." << std::endl;
+        std::cerr << G_STRFUNC << ": Returning Py_None for GDA_TYPE_NULL.\n";
         ret = boost::python::object();
     } else {
       std::cerr << G_STRFUNC << ": Glom: G_VALUE_TYPE() returned unknown type: " << value_type << std::endl;
diff --git a/glom/libglom/report_builder.cc b/glom/libglom/report_builder.cc
index bc352f6..2baa2f5 100644
--- a/glom/libglom/report_builder.cc
+++ b/glom/libglom/report_builder.cc
@@ -52,7 +52,7 @@ bool ReportBuilder::report_build_headerfooter(const FoundSet& found_set, xmlpp::
     {
       if(!report_build_records_text(found_set, *node, item_text))
       {
-        std::cerr << G_STRFUNC << ": report_build_records_text() failed." << std::endl;
+        std::cerr << G_STRFUNC << ": report_build_records_text() failed.\n";
         return false;
       }
     }
@@ -63,7 +63,7 @@ bool ReportBuilder::report_build_headerfooter(const FoundSet& found_set, xmlpp::
       {
         if(!report_build_records_image(found_set, *node, item_image))
         {
-          std::cerr << G_STRFUNC << ": report_build_records_image() failed." << std::endl;
+          std::cerr << G_STRFUNC << ": report_build_records_image() failed.\n";
           return false;
         }
       }
@@ -75,7 +75,7 @@ bool ReportBuilder::report_build_headerfooter(const FoundSet& found_set, xmlpp::
           guint col_index = 0; //ignored.
           if(!report_build_records_field(found_set, *node, pField, Glib::RefPtr<Gnome::Gda::DataModel>(), 0, 
col_index))
           {
-            std::cerr << G_STRFUNC << ": report_build_records_field() failed." << std::endl;
+            std::cerr << G_STRFUNC << ": report_build_records_field() failed.\n";
             return false;
           }
         }
@@ -88,7 +88,7 @@ bool ReportBuilder::report_build_headerfooter(const FoundSet& found_set, xmlpp::
             guint col_index = 0; //Ignored, because the model is null.
             if(!report_build_records_vertical_group(found_set, *node, vertical_group, 
Glib::RefPtr<Gnome::Gda::DataModel>(), 0, col_index))
             {
-              std::cerr << G_STRFUNC << ": report_build_records_vertical_group() failed." << std::endl;
+              std::cerr << G_STRFUNC << ": report_build_records_vertical_group() failed.\n";
               return false;
             }
           }
@@ -115,7 +115,7 @@ bool ReportBuilder::report_build_summary(const FoundSet& found_set, xmlpp::Eleme
       //Recurse, adding a sub-groupby block:
       if(!report_build_groupby(found_set, *node, pGroupBy))
       {
-        std::cerr << G_STRFUNC << ": report_build_groupby() failed." << std::endl;
+        std::cerr << G_STRFUNC << ": report_build_groupby() failed.\n";
         return false;
       }
     }
@@ -127,7 +127,7 @@ bool ReportBuilder::report_build_summary(const FoundSet& found_set, xmlpp::Eleme
         //Recurse, adding a summary block:
         if(!report_build_summary(found_set, *node, pSummary))
         {
-          std::cerr << G_STRFUNC << ": report_build_summary() failed." << std::endl;
+          std::cerr << G_STRFUNC << ": report_build_summary() failed.\n";
           return false;
         }
       }
@@ -149,7 +149,7 @@ bool ReportBuilder::report_build_summary(const FoundSet& found_set, xmlpp::Eleme
     //Rows, with data:
     if(!report_build_records(found_set_used, *node, itemsToGet))
     {
-      std::cerr << G_STRFUNC << ": report_build_records() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": report_build_records() failed.\n";
       return false;
     }
   }
@@ -171,7 +171,7 @@ bool ReportBuilder::report_build_groupby_children(const FoundSet& found_set, xml
       //Recurse, adding a sub-groupby block:
       if(!report_build_groupby(found_set, node, pGroupBy))
       {
-        std::cerr << G_STRFUNC << ": report_build_groupby() failed." << std::endl;
+        std::cerr << G_STRFUNC << ": report_build_groupby() failed.\n";
         return false;
       }
     }
@@ -183,7 +183,7 @@ bool ReportBuilder::report_build_groupby_children(const FoundSet& found_set, xml
         //Recurse, adding a summary block:
         if(!report_build_summary(found_set, node, pSummary))
         {
-          std::cerr << G_STRFUNC << ": report_build_summary() failed." << std::endl;
+          std::cerr << G_STRFUNC << ": report_build_summary() failed.\n";
           return false;
         }
       }
@@ -201,7 +201,7 @@ bool ReportBuilder::report_build_groupby_children(const FoundSet& found_set, xml
     found_set_records.m_sort_clause = group_by->get_fields_sort_by();
     if(!report_build_records(found_set_records, node, itemsToGet))
     {
-      std::cerr << G_STRFUNC << ": report_build_records() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": report_build_records() failed.\n";
       return false;
     }
   }
@@ -235,7 +235,7 @@ bool ReportBuilder::report_build_groupby(const FoundSet& found_set_parent, xmlpp
     auto datamodel = DbUtils::query_execute_select(builder);
     if(!datamodel)
     {
-      std::cerr << G_STRFUNC << ": The SQL query failed." << std::endl;
+      std::cerr << G_STRFUNC << ": The SQL query failed.\n";
       return false; 
     }
     else
@@ -282,7 +282,7 @@ bool ReportBuilder::report_build_groupby(const FoundSet& found_set_parent, xmlpp
           {
             if(!report_build_records(found_set_records, *nodeSecondaryFields, itemsToGet, true /* one record 
only */))
             {
-              std::cerr << G_STRFUNC << ": report_build_records() failed." << std::endl;
+              std::cerr << G_STRFUNC << ": report_build_records() failed.\n";
               return false;
             }
           }
@@ -291,7 +291,7 @@ bool ReportBuilder::report_build_groupby(const FoundSet& found_set_parent, xmlpp
         //Get data and add child rows:
         if(!report_build_groupby_children(found_set_records, *nodeGroupBy, group_by))
         {
-          std::cerr << G_STRFUNC << ": report_build_groupby_children() failed." << std::endl;
+          std::cerr << G_STRFUNC << ": report_build_groupby_children() failed.\n";
           return false;
         }
       }
@@ -318,7 +318,7 @@ bool ReportBuilder::report_build_records_get_fields(const FoundSet& found_set, c
     {
       if(!report_build_records_get_fields(found_set, pVerticalGroup, items))
       {
-        std::cerr << G_STRFUNC << ": report_build_records_get_fields() failed." << std::endl;
+        std::cerr << G_STRFUNC << ": report_build_records_get_fields() failed.\n";
         return false;
       }
     }
@@ -366,7 +366,7 @@ bool ReportBuilder::report_build_records(const FoundSet& found_set, xmlpp::Eleme
           //Get all the fields in this group:
           if(!report_build_records_get_fields(found_set, vertical_group, fieldsToGet))
           {
-            std::cerr << G_STRFUNC << ": report_build_records_get_fields() failed." << std::endl;
+            std::cerr << G_STRFUNC << ": report_build_records_get_fields() failed.\n";
             return false;
           }
         }
@@ -386,7 +386,7 @@ bool ReportBuilder::report_build_records(const FoundSet& found_set, xmlpp::Eleme
     auto datamodel = DbUtils::query_execute_select(sql_query);
     if(!datamodel)
     {
-      std::cerr << G_STRFUNC << ": The SLQ query failed." << std::endl;
+      std::cerr << G_STRFUNC << ": The SLQ query failed.\n";
       return false; 
     }
     else
@@ -405,7 +405,7 @@ bool ReportBuilder::report_build_records(const FoundSet& found_set, xmlpp::Eleme
           {
             if(!report_build_records_field(found_set, *nodeRow, field, datamodel, row, colField))
             {
-              std::cerr << G_STRFUNC << ": report_build_records_field() failed." << std::endl;
+              std::cerr << G_STRFUNC << ": report_build_records_field() failed.\n";
               return false;
             }
           }
@@ -416,7 +416,7 @@ bool ReportBuilder::report_build_records(const FoundSet& found_set, xmlpp::Eleme
             {
               if(!report_build_records_text(found_set, *nodeRow, item_text))
               {
-                std::cerr << G_STRFUNC << ": report_build_records_text() failed." << std::endl;
+                std::cerr << G_STRFUNC << ": report_build_records_text() failed.\n";
                 return false;
               }
             }
@@ -427,7 +427,7 @@ bool ReportBuilder::report_build_records(const FoundSet& found_set, xmlpp::Eleme
               {
                 if(!report_build_records_vertical_group(found_set, *nodeRow, item_verticalgroup, datamodel, 
row, colField))
                 {
-                  std::cerr << G_STRFUNC << ": report_build_records_vertical_group() failed." << std::endl;
+                  std::cerr << G_STRFUNC << ": report_build_records_vertical_group() failed.\n";
                   return false;
                 }
               }
@@ -470,7 +470,7 @@ bool ReportBuilder::report_build_records_field(const FoundSet& found_set, xmlpp:
 
     if(!datamodel_syspref)
     {
-      std::cerr << G_STRFUNC << ": The SQL query failed." << std::endl;
+      std::cerr << G_STRFUNC << ": The SQL query failed.\n";
       return false;
     }
 
@@ -542,7 +542,7 @@ bool ReportBuilder::report_build_records_vertical_group(const FoundSet& found_se
     {
       if(!report_build_records_vertical_group(found_set, *nodeGroupVertical, pVerticalGroup, datamodel, row, 
field_index))
       {
-        std::cerr << G_STRFUNC << ": report_build_records_vertical_group() failed." << std::endl;
+        std::cerr << G_STRFUNC << ": report_build_records_vertical_group() failed.\n";
         return false;
       }
     }
@@ -553,7 +553,7 @@ bool ReportBuilder::report_build_records_vertical_group(const FoundSet& found_se
       {
         if(!report_build_records_field(found_set, *nodeGroupVertical, pField, datamodel, row, field_index, 
true /* vertical, so we get a row for each field too. */))
         {
-          std::cerr << G_STRFUNC << ": report_build_records_field() failed." << std::endl;
+          std::cerr << G_STRFUNC << ": report_build_records_field() failed.\n";
           return false;
         }
       }
@@ -564,7 +564,7 @@ bool ReportBuilder::report_build_records_vertical_group(const FoundSet& found_se
         {
           if(!report_build_records_text(found_set, *nodeGroupVertical, pText, true))
           {
-            std::cerr << G_STRFUNC << ": report_build_records_text() failed." << std::endl;
+            std::cerr << G_STRFUNC << ": report_build_records_text() failed.\n";
             return false;
           }
         }
@@ -666,7 +666,7 @@ Glib::ustring ReportBuilder::report_build(const FoundSet& found_set, const std::
     {
       if(!report_build_groupby(found_set, *nodeParent, pGroupBy))
       {
-        std::cerr << G_STRFUNC << ": report_build_groupby() failed." << std::endl;
+        std::cerr << G_STRFUNC << ": report_build_groupby() failed.\n";
         return Glib::ustring();
       }
     }
@@ -678,7 +678,7 @@ Glib::ustring ReportBuilder::report_build(const FoundSet& found_set, const std::
         //Recurse, adding a summary block:
         if(!report_build_summary(found_set, *nodeParent, pSummary))
         {
-          std::cerr << G_STRFUNC << ": report_build_summary() failed." << std::endl;
+          std::cerr << G_STRFUNC << ": report_build_summary() failed.\n";
           return Glib::ustring();
         }
       }
@@ -694,7 +694,7 @@ Glib::ustring ReportBuilder::report_build(const FoundSet& found_set, const std::
             //Recurse, adding a summary block:
             if(!report_build_headerfooter(found_set, *nodeParent, pGroup))
             {
-              std::cerr << G_STRFUNC << ": report_build_headerfooter() failed." << std::endl;
+              std::cerr << G_STRFUNC << ": report_build_headerfooter() failed.\n";
               return Glib::ustring();
             }
           }
@@ -711,7 +711,7 @@ Glib::ustring ReportBuilder::report_build(const FoundSet& found_set, const std::
     auto nodeGroupBy = nodeParent->add_child_element("ungrouped_records");
     if(!report_build_records(found_set, *nodeGroupBy, itemsToGet_TopLevel))
     {
-      std::cerr << G_STRFUNC << ": report_build_records() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": report_build_records() failed.\n";
       return Glib::ustring();
     }
   }
diff --git a/glom/libglom/spawn_with_feedback.cc b/glom/libglom/spawn_with_feedback.cc
index 15c0a3e..394cab8 100644
--- a/glom/libglom/spawn_with_feedback.cc
+++ b/glom/libglom/spawn_with_feedback.cc
@@ -432,7 +432,7 @@ bool execute_command_line_and_wait(const std::string& command, const SlotProgres
 
   if(!stderr_text.empty())
   {
-    std::cerr << G_STRFUNC << ": command produced stderr text: " << std::endl <<
+    std::cerr << G_STRFUNC << ": command produced stderr text: \n" <<
       "  command: " << command << std::endl <<
       "  error text: " << stderr_text << std::endl;
   }
@@ -458,7 +458,7 @@ namespace
       // (Note that we can not just do "LANG=C;the_command", as on the command line, because g_spawn() does 
not support that.)
 
       #ifdef GLOM_SPAWN_DEBUG
-      std::cout << std::endl << "debug: temporarily setting LANG and LANGUAGE environment variables to 
\"C\"" << std::endl;
+      std::cout << std::endl << "debug: temporarily setting LANG and LANGUAGE environment variables to 
\"C\"\n";
       #endif //GLOM_SPAWN_DEBUG
 
       stored_env_lang = Glib::getenv("LANG");
@@ -488,7 +488,7 @@ namespace
     {
       // Restore the previous environment variable values:
       #ifdef GLOM_SPAWN_DEBUG
-      std::cout << std::endl << "debug: restoring the LANG and LANGUAGE environment variables." << std::endl;
+      std::cout << std::endl << "debug: restoring the LANG and LANGUAGE environment variables.\n";
       #endif //GLOM_SPAWN_DEBUG
 
       Glib::setenv("LANG", stored_env_lang, true /* overwrite */);
@@ -511,7 +511,7 @@ namespace
       if(success)
       {
         #ifdef GLOM_SPAWN_DEBUG
-        std::cout << "debug: Success, do response" << std::endl;
+        std::cout << "debug: Success, do response\n";
         #endif //GLOM_SPAWN_DEBUG
 
         // Exit from run() in execute_command_line_and_wait_until_second_command_returns_success().
diff --git a/glom/libglom/test_avahi_publisher.cc b/glom/libglom/test_avahi_publisher.cc
index 3639d5d..7c27230 100644
--- a/glom/libglom/test_avahi_publisher.cc
+++ b/glom/libglom/test_avahi_publisher.cc
@@ -52,7 +52,7 @@ void TestWindow::on_button_start()
   if(m_avahi_publisher)
     return;
 
-  std::cout << "Starting" << std::endl;
+  std::cout << "Starting\n";
  
   m_avahi_publisher = std::make_unique<Glom::AvahiPublisher>("testservice", "_testthing._tcp", 1234 /* port 
*/);
 }
@@ -62,7 +62,7 @@ void TestWindow::on_button_stop()
   if(!m_avahi_publisher)
     return;
 
-  std::cout << "Stopping" << std::endl;
+  std::cout << "Stopping\n";
 
   m_avahi_publisher.reset();
 }
diff --git a/glom/libglom/test_connectionpool.cc b/glom/libglom/test_connectionpool.cc
index 90a820e..e35f6d5 100644
--- a/glom/libglom/test_connectionpool.cc
+++ b/glom/libglom/test_connectionpool.cc
@@ -75,9 +75,9 @@ int main()
     }
     
     if(connection)
-      std::cout << "Connected" << std::endl;
+      std::cout << "Connected\n";
     else
-      std::cout << "Connection failed." << std::endl;
+      std::cout << "Connection failed.\n";
 
     gdaconnection = connection->get_gda_connection();
     //Cleanup:
diff --git a/glom/libglom/utils.cc b/glom/libglom/utils.cc
index 833343f..5e58f56 100644
--- a/glom/libglom/utils.cc
+++ b/glom/libglom/utils.cc
@@ -120,7 +120,7 @@ Glib::ustring Utils::string_replace(const Glib::ustring& src, const Glib::ustrin
 {
   if(search_for.empty())
   {
-    std::cerr << G_STRFUNC << ": search_for was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": search_for was empty.\n";
     return src;
   }
 
@@ -136,9 +136,9 @@ Glib::ustring Utils::string_replace(const Glib::ustring& src, const Glib::ustrin
   while((pos = result.find(search_for, pos_after_prev)) != std::string::npos)
   {
     //std::cout << "  debug: pos=" << pos << ", found=" << search_for << ", in string: " << 
result.substr(pos_after_prev, 20) << std::endl;
-    //std::cout << "  debug: before: result =" << result << ", pos_after_prev=pos_after_prev" << std::endl;
+    //std::cout << "  debug: before: result =" << result << ", pos_after_prev=pos_after_prev\n";
     result.replace(pos, len_search, replace_with);
-    //std::cout << "  after: before: result = result" << std::endl;
+    //std::cout << "  after: before: result = result\n";
     pos_after_prev = pos + len_replace;
   }
 
@@ -214,7 +214,7 @@ Glib::RefPtr<Gnome::Gda::SqlBuilder> Utils::build_sql_select_count_rows(const Gl
 
   if(!sql_query)
   {
-    std::cerr << G_STRFUNC << ": sql_query was null." << std::endl;
+    std::cerr << G_STRFUNC << ": sql_query was null.\n";
     return result;
   }
 
@@ -462,7 +462,7 @@ Gnome::Gda::SqlExpr Utils::build_simple_where_expression(const Glib::ustring& ta
 {
   if(!key_field)
   {
-    std::cerr << G_STRFUNC << ": key_field was empty" << std::endl;
+    std::cerr << G_STRFUNC << ": key_field was empty\n";
     return Gnome::Gda::SqlExpr();
   }
   
@@ -521,7 +521,7 @@ Utils::type_list_values_with_second Utils::get_choice_values(const std::shared_p
   /*
   if(Conversions::value_is_empty(foreign_key_value))
   {
-    std::cout << G_STRFUNC << "debug: foreign_key_value is empty." << std::endl;
+    std::cout << G_STRFUNC << "debug: foreign_key_value is empty.\n";
     return result;
   }
   */
@@ -536,7 +536,7 @@ Utils::type_list_values_with_second Utils::get_choice_values(const std::shared_p
 
   if(!choice_relationship)
   {
-    std::cerr << G_STRFUNC << ": !choice_relationship." << std::endl;
+    std::cerr << G_STRFUNC << ": !choice_relationship.\n";
     return result;
   }
 
@@ -558,7 +558,7 @@ Utils::type_list_values_with_second Utils::get_choice_values(const std::shared_p
 
   if(!to_field)
   {
-    std::cerr << G_STRFUNC << ": to_field is null." << std::endl;
+    std::cerr << G_STRFUNC << ": to_field is null.\n";
   }
 
   //Default to some sort order rather than none:
@@ -577,7 +577,7 @@ Utils::type_list_values_with_second Utils::get_choice_values(const std::shared_p
 
   if(!builder)
   {
-    std::cerr << G_STRFUNC << ": builder is null." << std::endl;
+    std::cerr << G_STRFUNC << ": builder is null.\n";
     return result;
   }
 
@@ -588,7 +588,7 @@ Utils::type_list_values_with_second Utils::get_choice_values(const std::shared_p
 
   if(!connection)
   {
-    std::cerr << G_STRFUNC << ": connection is null." << std::endl;
+    std::cerr << G_STRFUNC << ": connection is null.\n";
     return result;
   }
 
@@ -623,7 +623,7 @@ Utils::type_list_values_with_second Utils::get_choice_values(const std::shared_p
   }
   else
   {
-      std::cerr << G_STRFUNC << ": Error while executing SQL" << std::endl <<
+      std::cerr << G_STRFUNC << ": Error while executing SQL\n" <<
                    "  " <<  sql_query << std::endl;
       return result;
   }
@@ -743,10 +743,10 @@ Glib::ustring Utils::create_local_image_uri(const Gnome::Gda::Value& value)
       }
     }
     else
-       std::cerr << G_STRFUNC << ": binary GdaValue contains no data." << std::endl;
+       std::cerr << G_STRFUNC << ": binary GdaValue contains no data.\n";
   }
   //else
-  //  std::cerr << G_STRFUNC << ": type != BINARY" << std::endl;
+  //  std::cerr << G_STRFUNC << ": type != BINARY\n";
 
   if(result.empty())
     result = "/tmp/glom_report_image_invalid.png";
@@ -833,7 +833,7 @@ Utils::type_vec_strings Utils::string_separate(const Glib::ustring& str, const G
         bool bContinue = true;
         while(bContinue && (posLastQuote < posComma))
         {
-          //std::cout << "  continue" << std::endl;
+          //std::cout << "  continue\n";
           Glib::ustring closing_quote;
           if(!m_current_quotes.empty())
             closing_quote = m_current_quotes.top();
@@ -867,13 +867,13 @@ Utils::type_vec_strings Utils::string_separate(const Glib::ustring& str, const G
             //Was it an expected closing quote, if we expected any:
             if(first_quote == closing_quote)
             {
-              //std::cout << "   popping quote" << std::endl;
+              //std::cout << "   popping quote\n";
               //Yes, so remove that quote from our stack, because we found the closing quote:
               m_current_quotes.pop();
             }
             else
             {
-              //std::cout << "   pushing quote" << std::endl;
+              //std::cout << "   pushing quote\n";
               //This must be an opening quote, so remember it:
               m_current_quotes.push(first_quote);
             }
@@ -894,7 +894,7 @@ Utils::type_vec_strings Utils::string_separate(const Glib::ustring& str, const G
 
       if(!in_quotes) //or if we don't care about quotes.
       {
-        //std::cout << "!in_quotes" << std::endl;
+        //std::cout << "!in_quotes\n";
 
         //Store this item, and start the next item after it:
         item = str.substr(item_start, posComma - item_start);
@@ -903,7 +903,7 @@ Utils::type_vec_strings Utils::string_separate(const Glib::ustring& str, const G
       }
       else
       {
-        //std::cout << "in quotes." << std::endl;
+        //std::cout << "in quotes.\n";
         // Continue behind separator
         unprocessed_start = posComma + size_separator;
         // Do not add this item to the result, because it was quoted.
@@ -1012,7 +1012,7 @@ static Glib::RefPtr<Gnome::Gda::Connection> get_connection()
 
   if(!sharedconnection)
   {
-    std::cerr << G_STRFUNC << ": No connection yet." << std::endl;
+    std::cerr << G_STRFUNC << ": No connection yet.\n";
     return Glib::RefPtr<Gnome::Gda::Connection>();
   }
 
@@ -1028,7 +1028,7 @@ std::string Utils::sqlbuilder_get_full_query(
   if(!connection)
   {
     //TODO: Just use the correct provider, without an actual connection?
-    std::cerr << G_STRFUNC << ": There is no connection, so the SQL statement might not be created 
correctly." << std::endl;
+    std::cerr << G_STRFUNC << ": There is no connection, so the SQL statement might not be created 
correctly.\n";
   }
 
   Glib::ustring result = "glom_query_not_parsed";
@@ -1038,7 +1038,7 @@ std::string Utils::sqlbuilder_get_full_query(
     auto stmt = builder->get_statement();
     if(!stmt)
     {
-      std::cerr << G_STRFUNC << ": builder->get_statement() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": builder->get_statement() failed.\n";
       return result;
     }
 
@@ -1073,7 +1073,7 @@ std::string Utils::sqlbuilder_get_full_query(
   const Glib::ustring str = std::string(buf.get());
   if(str.empty())
   {
-    std::cerr << G_STRFUNC << ": Returning an empty string." << std::endl;
+    std::cerr << G_STRFUNC << ": Returning an empty string.\n";
   }
 
   return str;
@@ -1083,7 +1083,7 @@ Gnome::Gda::SqlExpr Utils::get_find_where_clause_quick(const std::shared_ptr<con
 {
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": table_name is empty.\n";
     return Gnome::Gda::SqlExpr();
   }
 
@@ -1100,7 +1100,7 @@ Gnome::Gda::SqlExpr Utils::get_find_where_clause_quick(const std::shared_ptr<con
 
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null." << std::endl;
+    std::cerr << G_STRFUNC << ": document was null.\n";
     return Gnome::Gda::SqlExpr();
   }
 
@@ -1108,7 +1108,7 @@ Gnome::Gda::SqlExpr Utils::get_find_where_clause_quick(const std::shared_ptr<con
   auto connection = get_connection();
   if(!connection)
   {
-    std::cerr << G_STRFUNC << ": connection was null." << std::endl;
+    std::cerr << G_STRFUNC << ": connection was null.\n";
     return Gnome::Gda::SqlExpr();
   }
 
@@ -1152,7 +1152,7 @@ Gnome::Gda::SqlExpr Utils::get_find_where_clause_quick(const std::shared_ptr<con
   }
   else
   {
-    std::cerr << G_STRFUNC << ": Returning null SqlExpr" << std::endl;
+    std::cerr << G_STRFUNC << ": Returning null SqlExpr\n";
     return Gnome::Gda::SqlExpr();
   }
 }
@@ -1166,13 +1166,13 @@ Glib::RefPtr<Gnome::Gda::SqlBuilder> Utils::build_sql_update_with_where_clause(
 
   if(!field || field->get_name().empty())
   {
-    std::cerr << G_STRFUNC << ": field was null or its name was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": field was null or its name was empty.\n";
     return builder;
   }
 
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": table_name was empty.\n";
     return builder;
   }
 
@@ -1250,7 +1250,7 @@ bool Utils::delete_file(const std::string& uri)
   auto file = Gio::File::create_for_uri(uri);
   if(file->query_file_type() == Gio::FILE_TYPE_DIRECTORY)
   {
-    std::cerr << G_STRFUNC << ": The file is a directory." << std::endl;
+    std::cerr << G_STRFUNC << ": The file is a directory.\n";
     return false;
   }
 
@@ -1410,13 +1410,13 @@ std::string Utils::get_temp_file_path(const std::string& prefix, const std::stri
   }
   catch(const Glib::Error& ex)
   {
-    std::cerr << G_STRFUNC << ": Glib::file_open_tmp() failed" << std::endl;
+    std::cerr << G_STRFUNC << ": Glib::file_open_tmp() failed\n";
     return filepath;
   }
   
   if(filepath.empty())
   {
-    std::cerr << G_STRFUNC << ": Glib::file_open_tmp() returned an empty filepath" << std::endl;
+    std::cerr << G_STRFUNC << ": Glib::file_open_tmp() returned an empty filepath\n";
   }
 
   return filepath;
@@ -1471,14 +1471,14 @@ LayoutGroup::type_list_const_items Utils::get_layout_items_plus_primary_key(cons
 {
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null." << std::endl;
+    std::cerr << G_STRFUNC << ": document was null.\n";
     return items;
   }
 
   const auto field_primary_key = document->get_field_primary_key(table_name);
   if(!field_primary_key)
   {
-    std::cerr << G_STRFUNC << ": Could not find the primary key." << std::endl;
+    std::cerr << G_STRFUNC << ": Could not find the primary key.\n";
     return items;
   }
 
@@ -1499,14 +1499,14 @@ LayoutGroup::type_list_items Utils::get_layout_items_plus_primary_key(const Layo
 {
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null." << std::endl;
+    std::cerr << G_STRFUNC << ": document was null.\n";
     return items;
   }
 
   const auto field_primary_key = document->get_field_primary_key(table_name);
   if(!field_primary_key)
   {
-    std::cerr << G_STRFUNC << ": Could not find the primary key." << std::endl;
+    std::cerr << G_STRFUNC << ": Could not find the primary key.\n";
     return items;
   }
 
diff --git a/glom/libglom/xsl_utils.cc b/glom/libglom/xsl_utils.cc
index 15340ec..e419a35 100644
--- a/glom/libglom/xsl_utils.cc
+++ b/glom/libglom/xsl_utils.cc
@@ -64,7 +64,7 @@ namespace Glom
 static Glib::ustring xslt_process(const xmlpp::Document& xml_document, const std::string& resource_path_xslt)
 {
   //Debug output:
-  //std::cout << "XML before XSLT processing: " << std::endl;
+  //std::cout << "XML before XSLT processing: \n";
   //std::cout << "  ";
   //xmlpp::Document& nonconst = const_cast<xmlpp::Document&>(xml_document);
   //nonconst.write_to_stream_formatted(std::cout);
diff --git a/glom/main.cc b/glom/main.cc
index e781fa7..f07411f 100644
--- a/glom/main.cc
+++ b/glom/main.cc
@@ -438,7 +438,7 @@ main(int argc, char* argv[])
   std::string current_path = Glib::getenv("PYTHONPATH");
   if(current_path.empty()) current_path = python_path;
   else current_path += (std::string(";") + python_path); // PATH-like variables are separated by ; on 
Windows because : is a valid character in paths.
-  std::cout << "Setting " << current_path << ":" << std::endl;
+  std::cout << "Setting " << current_path << ":\n";
   std::cout << Glib::setenv("PYTHONPATH", current_path) << std::endl;
   std::cout << getenv("PYTHONPATH") << std::endl;
 #endif
@@ -475,7 +475,7 @@ main(int argc, char* argv[])
     //https://bugzilla.gnome.org/show_bug.cgi?id=619445
     //This should tell us what the problem is:
     std::cerr << G_STRFUNC << ": exception from std::locale::global(std::locale(\"\")): " << ex.what() << 
std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
   }
 
   Glom::libglom_init(); //Also initializes python.
diff --git a/glom/main_local_options.cc b/glom/main_local_options.cc
index 9ab818c..ca89437 100644
--- a/glom/main_local_options.cc
+++ b/glom/main_local_options.cc
@@ -70,14 +70,14 @@ bool LocalOptionGroup::handle_options()
     Glom::Conversions::sanity_check_date_text_representation_uses_4_digit_years(m_arg_debug_date_check /* 
show debug output */);
   if(!test1)
   {
-    std::cerr << G_STRFUNC << ": Glom: ERROR: Date presentation sanity checks failed. Glom will not display 
dates correctly. This needs attention from a translator. Please file a bug. See http://www.glom.org."; << 
std::endl;
+    std::cerr << G_STRFUNC << ": Glom: ERROR: Date presentation sanity checks failed. Glom will not display 
dates correctly. This needs attention from a translator. Please file a bug. See http://www.glom.org.\n";;
     m_debug_date_check_result = false;
   }
 
   const auto test2 = Glom::Conversions::sanity_check_date_parsing();
   if(!test2)
   {
-    std::cerr << G_STRFUNC << ": Glom: ERROR: Date parsing sanity checks failed. Glom will not interpret 
dates correctly. This needs attention from a translator. Please file a bug. See http://www.glom.org."; << 
std::endl;
+    std::cerr << G_STRFUNC << ": Glom: ERROR: Date parsing sanity checks failed. Glom will not interpret 
dates correctly. This needs attention from a translator. Please file a bug. See http://www.glom.org.\n";;
     m_debug_date_check_result = false;
   }
 
diff --git a/glom/mode_data/box_data.cc b/glom/mode_data/box_data.cc
index 47cdc8c..9682634 100644
--- a/glom/mode_data/box_data.cc
+++ b/glom/mode_data/box_data.cc
@@ -93,7 +93,7 @@ Gnome::Gda::SqlExpr Box_Data::get_find_where_clause() const
   auto connection = get_connection();
   if(!connection)
   {
-    std::cerr << G_STRFUNC << ": connection was null." << std::endl;
+    std::cerr << G_STRFUNC << ": connection was null.\n";
     return Gnome::Gda::SqlExpr();
   }
 
@@ -267,7 +267,7 @@ Document::type_list_layout_groups Box_Data::get_data_layout_groups(const Glib::u
       {
         fill_layout_group_field_info(item, table_privs);
 
-        //std::cout << "debug: Box_Data::get_data_layout_groups: " << std::endl;
+        //std::cout << "debug: Box_Data::get_data_layout_groups: \n";
         //*iterGroups->debug();
       }
     }
diff --git a/glom/mode_data/box_data_calendar_related.cc b/glom/mode_data/box_data_calendar_related.cc
index 5ddb5a4..15e13b3 100644
--- a/glom/mode_data/box_data_calendar_related.cc
+++ b/glom/mode_data/box_data_calendar_related.cc
@@ -289,7 +289,7 @@ void Box_Data_Calendar_Related::on_record_added(const Gnome::Gda::Value& primary
   }
   else if(Conversions::value_is_empty(m_key_value))
   {
-    std::cerr << G_STRFUNC << ": m_key_value is NULL." << std::endl;
+    std::cerr << G_STRFUNC << ": m_key_value is NULL.\n";
   }
   else
   {
@@ -329,14 +329,14 @@ Box_Data_Calendar_Related::type_vecConstLayoutFields Box_Data_Calendar_Related::
   auto derived_portal = std::dynamic_pointer_cast<LayoutItem_CalendarPortal>(m_portal);
   if(!derived_portal)
   {
-    std::cerr << G_STRFUNC << ": The portal is not a LayoutItem_CalendarPortal." << std::endl;
+    std::cerr << G_STRFUNC << ": The portal is not a LayoutItem_CalendarPortal.\n";
     return layout_fields;
   }
 
   auto date_field = derived_portal->get_date_field();
   if(!date_field)
   {
-    std::cerr << G_STRFUNC << ": get_date_field() returned no field." << std::endl;
+    std::cerr << G_STRFUNC << ": get_date_field() returned no field.\n";
     return layout_fields;
   }
 
@@ -409,14 +409,14 @@ Glib::ustring Box_Data_Calendar_Related::on_calendar_details(guint year, guint m
   auto derived_portal = std::dynamic_pointer_cast<LayoutItem_CalendarPortal>(m_portal);
   if(!derived_portal)
   {
-    //std::cout << "debug: " << G_STRFUNC << ": date_field is NULL" << std::endl;
+    //std::cout << "debug: " << G_STRFUNC << ": date_field is NULL\n";
     return Glib::ustring();
   }
 
   auto date_field = derived_portal->get_date_field();
   if(!date_field)
   {
-    std::cerr << G_STRFUNC << ":  get_date_field() returned no field." << std::endl;
+    std::cerr << G_STRFUNC << ":  get_date_field() returned no field.\n";
     return Glib::ustring();
   }
 
diff --git a/glom/mode_data/box_data_details.cc b/glom/mode_data/box_data_details.cc
index 97dd640..200cd9a 100644
--- a/glom/mode_data/box_data_details.cc
+++ b/glom/mode_data/box_data_details.cc
@@ -680,7 +680,7 @@ void Box_Data_Details::on_flowtable_script_button_clicked(const std::shared_ptr<
 {
   if(!layout_item)
   {
-    std::cerr << G_STRFUNC << ": layout_item is null" << std::endl;
+    std::cerr << G_STRFUNC << ": layout_item is null\n";
     return;
   }
   
@@ -762,7 +762,7 @@ void Box_Data_Details::on_flowtable_field_edited(const std::shared_ptr<const Lay
         }
         else
         {
-          std::cerr << G_STRFUNC << ": key not found for edited related field." << std::endl;
+          std::cerr << G_STRFUNC << ": key not found for edited related field.\n";
         }
       }
     }
@@ -930,14 +930,14 @@ void Box_Data_Details::print_layout()
   const auto document = std::dynamic_pointer_cast<const Document>(get_document());
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null" << std::endl;
+    std::cerr << G_STRFUNC << ": document was null\n";
     return;
   }
 
   auto page_setup = Gtk::PageSetup::create(); //TODO: m_canvas.get_page_setup();
   if(!page_setup)
   {
-    std::cerr << G_STRFUNC << ": page_setup was null" << std::endl;
+    std::cerr << G_STRFUNC << ": page_setup was null\n";
     return;
   }
 
diff --git a/glom/mode_data/box_data_list.cc b/glom/mode_data/box_data_list.cc
index 0eb5d91..1eb8171 100644
--- a/glom/mode_data/box_data_list.cc
+++ b/glom/mode_data/box_data_list.cc
@@ -90,7 +90,7 @@ void Box_Data_List::refresh_data_from_database_blank()
   found_set.m_where_clause = Gnome::Gda::SqlExpr();
   m_AddDel.set_found_set(found_set);
 
-  std::cout << "debug: " << G_STRFUNC << ": before refresh_from_database_blank()." << std::endl;
+  std::cout << "debug: " << G_STRFUNC << ": before refresh_from_database_blank().\n";
   m_AddDel.refresh_from_database_blank();
   m_found_set = found_set;
 }
@@ -249,7 +249,7 @@ void Box_Data_List::on_details_nav_next()
     //Don't go past the last record:
     if( !m_AddDel.get_is_last_row(iter) )
     {
-      //std::cout << "debug: " << G_STRFUNC << ": The current row was not the last row." << std::endl;
+      //std::cout << "debug: " << G_STRFUNC << ": The current row was not the last row.\n";
 
       iter++;
       m_AddDel.select_item(iter);
@@ -257,7 +257,7 @@ void Box_Data_List::on_details_nav_next()
       signal_user_requested_details().emit(m_AddDel.get_value_key_selected());
     }
     //else
-    //  std::cout << "debug: " << G_STRFUNC << ": Not going past the last row." << std::endl;
+    //  std::cout << "debug: " << G_STRFUNC << ": Not going past the last row.\n";
   }
 }
 
@@ -330,7 +330,7 @@ Gnome::Gda::Value Box_Data_List::get_primary_key_value_first() const
       Gnome::Gda::Value value = get_primary_key_value(iter);
       if(Conversions::value_is_empty(value))
       {
-       //std::cout << "debug: " << G_STRFUNC << ": get_primary_key_value_first() iter val is NULL" << 
std::endl;
+       //std::cout << "debug: " << G_STRFUNC << ": get_primary_key_value_first() iter val is NULL\n";
         ++iter;
       }
       else
@@ -341,7 +341,7 @@ Gnome::Gda::Value Box_Data_List::get_primary_key_value_first() const
     }
   }
 
- // std::cout << "debug: " << G_STRFUNC << ": get_primary_key_value_first() return NULL" << std::endl;
+ // std::cout << "debug: " << G_STRFUNC << ": get_primary_key_value_first() return NULL\n";
   return Gnome::Gda::Value();
 }
 
diff --git a/glom/mode_data/box_data_list_related.cc b/glom/mode_data/box_data_list_related.cc
index 8eaffca..13b5f06 100644
--- a/glom/mode_data/box_data_list_related.cc
+++ b/glom/mode_data/box_data_list_related.cc
@@ -85,7 +85,7 @@ bool Box_Data_List_Related::init_db_details(const Glib::ustring& parent_table, b
 
   if(LayoutWidgetBase::m_table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": LayoutWidgetBase::m_table_name is null" << std::endl;
+    std::cerr << G_STRFUNC << ": LayoutWidgetBase::m_table_name is null\n";
   }
   
   Base_DB_Table::m_table_name = LayoutWidgetBase::m_table_name;
@@ -155,7 +155,7 @@ bool Box_Data_List_Related::fill_from_database()
     result = Base_DB_Table_Data::fill_from_database();
     if(!result)
     {
-      std::cerr << G_STRFUNC << ": Base_DB_Table_Data::fill_from_database() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Base_DB_Table_Data::fill_from_database() failed.\n";
     }
 
     //create_layout();
@@ -165,7 +165,7 @@ bool Box_Data_List_Related::fill_from_database()
     result = Box_Data_Portal::fill_from_database();
     if(!result)
     {
-      std::cerr << G_STRFUNC << ": Box_Data_Portal::fill_from_database() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Box_Data_Portal::fill_from_database() failed.\n";
     }
 
     //TODO: Disable add if the from_field already has a value and the to_field is auto-incrementing because
@@ -295,7 +295,7 @@ void Box_Data_List_Related::on_adddel_record_added(const Gtk::TreeModel::iterato
   }
   else if(Conversions::value_is_empty(m_key_value))
   {
-    std::cerr << G_STRFUNC << ": m_key_value is NULL." << std::endl;
+    std::cerr << G_STRFUNC << ": m_key_value is NULL.\n";
   }
   else
   {
@@ -315,7 +315,7 @@ void Box_Data_List_Related::on_adddel_record_added(const Gtk::TreeModel::iterato
       m_AddDel.set_value(row, layout_item, m_key_value);
     }
     else
-      std::cerr << G_STRFUNC << ": m_key_field is NULL" << std::endl;
+      std::cerr << G_STRFUNC << ": m_key_field is NULL\n";
 
 
     //on_adddel_user_changed(row, iKey); //Update the database.
@@ -421,7 +421,7 @@ void Box_Data_List_Related::create_layout()
   auto field_primary_key = get_field_primary_key_for_table(Base_DB_Table::m_table_name);
   if(!field_primary_key)
   {
-    std::cerr << G_STRFUNC << ": primary key not found." << std::endl;
+    std::cerr << G_STRFUNC << ": primary key not found.\n";
     return;
   }
 
diff --git a/glom/mode_data/box_data_portal.cc b/glom/mode_data/box_data_portal.cc
index 0f4ae2e..9e10526 100644
--- a/glom/mode_data/box_data_portal.cc
+++ b/glom/mode_data/box_data_portal.cc
@@ -57,18 +57,18 @@ void Box_Data_Portal::make_record_related(const Gnome::Gda::Value& related_recor
   //Create the link by setting the foreign key
   if(!m_key_field)
   {
-    std::cerr << G_STRFUNC << ": m_key_field was null." << std::endl;
+    std::cerr << G_STRFUNC << ": m_key_field was null.\n";
   }
 
   if(Conversions::value_is_empty(m_key_value))
   {
-    std::cerr << G_STRFUNC << ": m_key_value was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": m_key_value was empty.\n";
   }
 
 
   if(!m_portal)
   {
-    std::cerr << G_STRFUNC << ": m_portal was null." << std::endl;
+    std::cerr << G_STRFUNC << ": m_portal was null.\n";
   }
 
   const auto target_table = m_portal->get_table_used(Glib::ustring() /* not relevant */);
@@ -84,7 +84,7 @@ void Box_Data_Portal::make_record_related(const Gnome::Gda::Value& related_recor
   const auto test = DbUtils::query_execute(builder);
   if(!test)
   {
-    std::cerr << G_STRFUNC << ": SQL query failed." << std::endl;
+    std::cerr << G_STRFUNC << ": SQL query failed.\n";
   }
 }
 
@@ -303,7 +303,7 @@ void Box_Data_Portal::get_suitable_record_to_view_details(const Gnome::Gda::Valu
     if(Conversions::value_is_empty(table_primary_key_value))
     {
       value_found = false;
-      std::cout << "debug: " << G_STRFUNC << ": SQL query returned empty primary key." << std::endl;
+      std::cout << "debug: " << G_STRFUNC << ": SQL query returned empty primary key.\n";
     }
   }
   else
diff --git a/glom/mode_data/datawidget/cellcreation.cc b/glom/mode_data/datawidget/cellcreation.cc
index 52e1244..0b63daa 100644
--- a/glom/mode_data/datawidget/cellcreation.cc
+++ b/glom/mode_data/datawidget/cellcreation.cc
@@ -168,7 +168,7 @@ Gtk::CellRenderer* create_cell(const std::shared_ptr<const LayoutItem>& layout_i
 
   if(!cell)
   {
-    std::cerr << G_STRFUNC << ": Returning 0 because no cell was created." << std::endl;
+    std::cerr << G_STRFUNC << ": Returning 0 because no cell was created.\n";
     return nullptr;
   }
 
diff --git a/glom/mode_data/datawidget/cellrenderer_dblist.cc 
b/glom/mode_data/datawidget/cellrenderer_dblist.cc
index acc4aca..16151e6 100644
--- a/glom/mode_data/datawidget/cellrenderer_dblist.cc
+++ b/glom/mode_data/datawidget/cellrenderer_dblist.cc
@@ -56,7 +56,7 @@ void CellRendererDbList::set_choices_related(const std::shared_ptr<const Documen
   auto model = get_choices_model();
   if(!model)
   {
-    std::cerr << G_STRFUNC << ": model is null" << std::endl;
+    std::cerr << G_STRFUNC << ": model is null\n";
   }
 
   //Show model in the view:
@@ -68,7 +68,7 @@ void CellRendererDbList::set_choices_related(const std::shared_ptr<const Documen
     property_text_column() = model_db->get_text_column();
   else
   {
-    std::cerr << G_STRFUNC << ": The model is not a DbTreeModelWithExtraText." << std::endl;
+    std::cerr << G_STRFUNC << ": The model is not a DbTreeModelWithExtraText.\n";
     return;
   }
 
@@ -91,7 +91,7 @@ void CellRendererDbList::repack_cells_fixed(Gtk::CellLayout* combobox)
   auto widget = dynamic_cast<Gtk::Widget*>(combobox);
   if(!widget)
   {
-    std::cerr << G_STRFUNC << ": widget is null." << std::endl;
+    std::cerr << G_STRFUNC << ": widget is null.\n";
   }
 
   if(!m_repacked_first_cell)
@@ -151,7 +151,7 @@ void CellRendererDbList::repack_cells_related(Gtk::CellLayout* combobox)
   auto widget = dynamic_cast<Gtk::Widget*>(combobox);
   if(!widget)
   {
-    std::cerr << G_STRFUNC << ": widget is null." << std::endl;
+    std::cerr << G_STRFUNC << ": widget is null.\n";
   }
 
   const auto cells = combobox->get_cells();
@@ -169,7 +169,7 @@ void CellRendererDbList::repack_cells_related(Gtk::CellLayout* combobox)
       if(!cell)
       {
         //This is normal, for instance if the item is meant to be hidden.
-        //std::cerr << G_STRFUNC << ": get_first_cell() returned null." << std::endl;
+        //std::cerr << G_STRFUNC << ": get_first_cell() returned null.\n";
       }
       else
       {
@@ -190,7 +190,7 @@ void CellRendererDbList::repack_cells_related(Gtk::CellLayout* combobox)
       cell = create_cell(layout_item, m_table_name, m_document, get_fixed_cell_height(*widget));
       if(!cell)
       {
-        std::cerr << G_STRFUNC << ": create_cell() returned 0." << std::endl;
+        std::cerr << G_STRFUNC << ": create_cell() returned 0.\n";
       }
       else
       {
@@ -210,7 +210,7 @@ void CellRendererDbList::on_editing_started(Gtk::CellEditable* cell_editable, co
   //though that shouldn't really happen.
   if(!cell_editable)
   {
-    std::cerr << G_STRFUNC << ": cell_editable was null" << std::endl;
+    std::cerr << G_STRFUNC << ": cell_editable was null\n";
     return;
   }
 
diff --git a/glom/mode_data/datawidget/combo.cc b/glom/mode_data/datawidget/combo.cc
index bfcb058..301cfa7 100644
--- a/glom/mode_data/datawidget/combo.cc
+++ b/glom/mode_data/datawidget/combo.cc
@@ -62,7 +62,7 @@ void ComboGlom::on_fixed_cell_data(const Gtk::TreeModel::iterator& iter, Gtk::Ce
 {
   if(!cell)
   {
-    std::cerr << G_STRFUNC << ": cell is null." << std::endl;
+    std::cerr << G_STRFUNC << ": cell is null.\n";
     return;
   }
 
@@ -88,7 +88,7 @@ void ComboGlom::set_choices_fixed(const Formatting::type_list_values& list_value
   auto model = get_choices_model();
   if(!model)
   {
-    std::cerr << G_STRFUNC << ": model is null." << std::endl;
+    std::cerr << G_STRFUNC << ": model is null.\n";
     return;
   }
 
@@ -108,7 +108,7 @@ void ComboGlom::set_choices_fixed(const Formatting::type_list_values& list_value
     Glib::RefPtr<Gtk::CellAreaBox>::cast_dynamic(get_area());
   if(!cell_area)
   {
-    std::cerr << G_STRFUNC << ": Unexpected or null CellArea type." << std::endl;
+    std::cerr << G_STRFUNC << ": Unexpected or null CellArea type.\n";
     return;
   }
   
@@ -157,7 +157,7 @@ void ComboGlom::set_choices_related(const std::shared_ptr<const Document>& docum
   auto model = get_choices_model();
   if(!model)
   {
-    std::cerr << G_STRFUNC << ": model is null." << std::endl;
+    std::cerr << G_STRFUNC << ": model is null.\n";
     return;
   }
 
@@ -177,7 +177,7 @@ void ComboGlom::set_choices_related(const std::shared_ptr<const Document>& docum
     }
     else
     {
-      std::cerr << G_STRFUNC << ": The model is not a DbTreeModelWithExtraText." << std::endl;
+      std::cerr << G_STRFUNC << ": The model is not a DbTreeModelWithExtraText.\n";
       return;
     }
   }
@@ -237,7 +237,7 @@ void ComboGlom::set_value(const Gnome::Gda::Value& value)
   auto model = get_choices_model();
   if(!model)
   {
-    std::cerr << G_STRFUNC << ": model is null." << std::endl;
+    std::cerr << G_STRFUNC << ": model is null.\n";
     return;
   }
 
diff --git a/glom/mode_data/datawidget/combo_as_radio_buttons.cc 
b/glom/mode_data/datawidget/combo_as_radio_buttons.cc
index f07ccd0..b676a3c 100644
--- a/glom/mode_data/datawidget/combo_as_radio_buttons.cc
+++ b/glom/mode_data/datawidget/combo_as_radio_buttons.cc
@@ -253,7 +253,7 @@ Glib::ustring ComboAsRadioButtons::get_text() const
 #ifndef GLOM_ENABLE_CLIENT_ONLY
 void ComboAsRadioButtons::show_context_menu(GdkEventButton *button_event)
 {
-  std::cout << "ComboAsRadioButtons::show_context_menu()" << std::endl;
+  std::cout << "ComboAsRadioButtons::show_context_menu()\n";
   auto pApp = get_appwindow();
   if(pApp)
   {
diff --git a/glom/mode_data/datawidget/combochoiceswithtreemodel.cc 
b/glom/mode_data/datawidget/combochoiceswithtreemodel.cc
index e20af7f..a60a018 100644
--- a/glom/mode_data/datawidget/combochoiceswithtreemodel.cc
+++ b/glom/mode_data/datawidget/combochoiceswithtreemodel.cc
@@ -131,7 +131,7 @@ void ComboChoicesWithTreeModel::set_choices_with_second(const type_list_values_w
   auto list_store = Glib::RefPtr<Gtk::ListStore>::cast_dynamic(m_refModel);
   if(!list_store)
   {
-    std::cerr << G_STRFUNC << ": list_store is null." << std::endl;
+    std::cerr << G_STRFUNC << ": list_store is null.\n";
     return;
   }
 
@@ -186,7 +186,7 @@ void ComboChoicesWithTreeModel::set_choices_fixed(const Formatting::type_list_va
   auto list_store = Glib::RefPtr<Gtk::ListStore>::cast_dynamic(m_refModel);
   if(!list_store)
   {
-    std::cerr << G_STRFUNC << ": list_store is null." << std::endl;
+    std::cerr << G_STRFUNC << ": list_store is null.\n";
     return;
   }
 
@@ -232,7 +232,7 @@ void ComboChoicesWithTreeModel::set_choices_related(const std::shared_ptr<const
 {
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null." << std::endl;
+    std::cerr << G_STRFUNC << ": document is null.\n";
     return;
   }
 
@@ -293,7 +293,7 @@ void ComboChoicesWithTreeModel::set_choices_related(const std::shared_ptr<const
   m_refModel = DbTreeModelWithExtraText::create(found_set, layout_items, table_privs.m_view, false /* find 
mode */, m_db_layout_items);
   if(!m_refModel)
   {
-    std::cerr << G_STRFUNC << ": DbTreeModel::create() returned a null model." << std::endl;
+    std::cerr << G_STRFUNC << ": DbTreeModel::create() returned a null model.\n";
   }
 
   //The derived class's (virtual) implementation calls this base method and
@@ -337,7 +337,7 @@ void ComboChoicesWithTreeModel::set_cell_for_field_value(Gtk::CellRenderer* cell
         pDerived->property_pixbuf() = pixbuf;
       }
       else
-        std::cerr << G_STRFUNC << ": Field::sql(): glom_type is enumType::IMAGE but gda type is not 
VALUE_TYPE_BINARY" << std::endl;
+        std::cerr << G_STRFUNC << ": Field::sql(): glom_type is enumType::IMAGE but gda type is not 
VALUE_TYPE_BINARY\n";
 
       break;
     }
@@ -383,7 +383,7 @@ void ComboChoicesWithTreeModel::on_cell_data(const Gtk::TreeModel::iterator& ite
    
   if(!cell)
   {
-    std::cerr << G_STRFUNC << ": cell is null." << std::endl;
+    std::cerr << G_STRFUNC << ": cell is null.\n";
     return;
   }
 
diff --git a/glom/mode_data/datawidget/datawidget.cc b/glom/mode_data/datawidget/datawidget.cc
index 0f90ae9..c2debd3 100644
--- a/glom/mode_data/datawidget/datawidget.cc
+++ b/glom/mode_data/datawidget/datawidget.cc
@@ -135,7 +135,7 @@ DataWidget::DataWidget(const std::shared_ptr<LayoutItem_Field>& field, const Gli
       }
       else
       {
-        std::cerr << G_STRFUNC << ": Unexpected choice type." << std::endl;
+        std::cerr << G_STRFUNC << ": Unexpected choice type.\n";
       }
 
       pFieldWidget = combo;
diff --git a/glom/mode_data/datawidget/treemodel_db.cc b/glom/mode_data/datawidget/treemodel_db.cc
index 1a9428b..c690781 100644
--- a/glom/mode_data/datawidget/treemodel_db.cc
+++ b/glom/mode_data/datawidget/treemodel_db.cc
@@ -48,12 +48,12 @@ void DbTreeModelRow::fill_values_if_necessary(DbTreeModel& model, int row)
   //std::cout << "debug: " << G_STRFUNC << ": row=" << row << std::endl;
   //if(row == 1000)
   //{
-  //  std::cout << "1000" << std::endl;
+  //  std::cout << "1000\n";
   //}
 
   if(m_values_retrieved)
   {
-     //std::cout << "debug: " << G_STRFUNC << ": already retrieved" << std::endl;
+     //std::cout << "debug: " << G_STRFUNC << ": already retrieved\n";
   }
   else
   {
@@ -100,10 +100,10 @@ void DbTreeModelRow::fill_values_if_necessary(DbTreeModel& model, int row)
     }
     else
     {
-      //std::cerr << G_STRFUNC << ": Non-db row." << std::endl;
+      //std::cerr << G_STRFUNC << ": Non-db row.\n";
       if(m_extra)
       {
-        //std::cout << "debug: " << G_STRFUNC << ": using default value" << std::endl;
+        //std::cout << "debug: " << G_STRFUNC << ": using default value\n";
 
         //It is an extra row, added with append().
       }
@@ -155,10 +155,10 @@ void DbTreeModelRow::set_value(DbTreeModel& model, int column, int row, const Db
   {
     std::cout << "debug: " << G_STRFUNC << ": expected GType=" << debug_type_expected << ", but received 
GType=" << debug_type_in << std::endl;
     if(debug_type_expected)
-      std::cout << "  expected GType name=\"" << g_type_name(debug_type_expected) << "\"" << std::endl;
+      std::cout << "  expected GType name=\"" << g_type_name(debug_type_expected) << "\"\n";
 
     if(debug_type_in)
-      std::cout << "  received GType name=\"" << g_type_name(debug_type_in) << "\"" << std::endl;
+      std::cout << "  received GType name=\"" << g_type_name(debug_type_in) << "\"\n";
   }
   */
 
@@ -175,7 +175,7 @@ DbTreeModelRow::DbValue DbTreeModelRow::get_value(DbTreeModel& model, int column
     return iterFind->second;
   else
   {
-    std::cout << "debug: " << G_STRFUNC << ": column not found." << std::endl;
+    std::cout << "debug: " << G_STRFUNC << ": column not found.\n";
     return DbValue();
   }
 }
@@ -235,7 +235,7 @@ DbTreeModel::DbTreeModel(const FoundSet& found_set, const type_vec_const_layout_
       {
         const auto field_full = layout_item->get_full_field_details();
         if(!field_full)
-          std::cerr << G_STRFUNC << ": The layout item (" << layout_item->get_name() << ") has no field 
details." << std::endl;
+          std::cerr << G_STRFUNC << ": The layout item (" << layout_item->get_name() << ") has no field 
details.\n";
         else if(field_full->get_primary_key() )
         {
           key_found = true;
@@ -248,7 +248,7 @@ DbTreeModel::DbTreeModel(const FoundSet& found_set, const type_vec_const_layout_
 
     if(!key_found)
     {
-      std::cerr << G_STRFUNC << ": no primary key field found in the list of items:" << std::endl;
+      std::cerr << G_STRFUNC << ": no primary key field found in the list of items:\n";
       for(const auto& layout_item : m_column_fields)
       {
         if(layout_item)
@@ -289,7 +289,7 @@ Glib::RefPtr<DbTreeModel> DbTreeModel::create(const FoundSet& found_set, const t
 
 bool DbTreeModel::refresh_from_database(const FoundSet& found_set)
 {
-  //std::cout << "DbTreeModel::refresh_from_database()" << std::endl;
+  //std::cout << "DbTreeModel::refresh_from_database()\n";
   m_found_set = found_set;
 
   if(!m_get_records && !m_find_mode)
@@ -333,7 +333,7 @@ bool DbTreeModel::refresh_from_database(const FoundSet& found_set)
   }
 
   if(m_found_set.m_table_name.empty())
-    std::cerr << G_STRFUNC << ": found_set.m_table_name is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": found_set.m_table_name is empty.\n";
 
   if(m_connection && !m_found_set.m_table_name.empty() && m_get_records)
   {
@@ -347,7 +347,7 @@ bool DbTreeModel::refresh_from_database(const FoundSet& found_set)
       m_data_model_rows_count = 0;
       m_data_model_columns_count = m_columns_count;
 
-      std::cerr << G_STRFUNC << ": error executing SQL. SQL query: " << std::endl;
+      std::cerr << G_STRFUNC << ": error executing SQL. SQL query: \n";
       std::cerr << G_STRFUNC << ":   " << Utils::sqlbuilder_get_full_query(sql_query) << std::endl;
       ConnectionPool::handle_error_cerr_only();
       return false; //No records were found.
@@ -373,7 +373,7 @@ bool DbTreeModel::refresh_from_database(const FoundSet& found_set)
       const int count = DbUtils::count_rows_returned_by(sql_query_without_sort);
       if(count < 0)
       {
-        std::cerr << G_STRFUNC << ": count is < 0" << std::endl;
+        std::cerr << G_STRFUNC << ": count is < 0\n";
         m_data_model_rows_count = 0;
       }
       else
@@ -419,11 +419,11 @@ void DbTreeModel::get_value_vfunc(const TreeModel::iterator& iter, int column, G
 
   if(check_treeiter_validity(iter))
   {
-    //std::cout << "  debug: DbTreeModel::get_value_vfunc() 1" << std::endl;
+    //std::cout << "  debug: DbTreeModel::get_value_vfunc() 1\n";
 
     if(column < (int)m_columns_count)
     {
-       //std::cout << "  debug: DbTreeModel::get_value_vfunc() 1.1" << std::endl;
+       //std::cout << "  debug: DbTreeModel::get_value_vfunc() 1.1\n";
 
       //Get the correct ValueType from the Gtk::TreeModel::Column's type, so we don't have to repeat it here:
       //(This would be a custom boxed type for our Gda::Value (stored inside the TreeModel's Glib::Value 
just as an int or char* would be stored in it.)
@@ -441,7 +441,7 @@ void DbTreeModel::get_value_vfunc(const TreeModel::iterator& iter, int column, G
       const unsigned int internal_rows_count = get_internal_rows_count();
       if( datamodel_row < internal_rows_count) //!= m_rows.end())
       {
-         //std::cout << "  debug: DbTreeModel::get_value_vfunc() 1.2" << std::endl;
+         //std::cout << "  debug: DbTreeModel::get_value_vfunc() 1.2\n";
 
         //const typeRow& dataRow = *datamodel_row;
 
@@ -453,13 +453,13 @@ void DbTreeModel::get_value_vfunc(const TreeModel::iterator& iter, int column, G
         const int column_sql = column;
         if(column_sql < (int)m_columns_count) //TODO_Performance: Remove the checks.
         {
-           //std::cout << "  debug: DbTreeModel::get_value_vfunc() 1.3" << std::endl;
+           //std::cout << "  debug: DbTreeModel::get_value_vfunc() 1.3\n";
 
           if( !(datamodel_row < (internal_rows_count - 1)))
           {
-              //std::cout << "  debug: DbTreeModel::get_value_vfunc() 1.4" << std::endl;
+              //std::cout << "  debug: DbTreeModel::get_value_vfunc() 1.4\n";
 
-             //std::cout << "DbTreeModel::get_value_vfunc: row " << datamodel_row << " is placeholder" << 
std::endl;
+             //std::cout << "DbTreeModel::get_value_vfunc: row " << datamodel_row << " is placeholder\n";
 
              //If it's after the database rows then it must be a placeholder row.
              //We have only one of these because iter_n_root_children_vfunc() only adds 1 to the row count.
@@ -499,7 +499,7 @@ void DbTreeModel::get_value_vfunc(const TreeModel::iterator& iter, int column, G
         GType debug_type = result.get_value_type();
         std::cout << "debug: " << G_STRFUNC << ": result value type: GType=" << debug_type << std::endl;
         if(debug_type)
-          std::cout << "    GType name=\"" << g_type_name(debug_type) << "\"" << std::endl;
+          std::cout << "    GType name=\"" << g_type_name(debug_type) << "\"\n";
         */
 
         value_specific.set(result); //The compiler would complain if the type was wrong.
@@ -777,7 +777,7 @@ void DbTreeModel::set_value_impl(const iterator& row, int column, const Glib::Va
 
     const auto pDbValue = static_cast<const ValueDbValue*>(&value);
     if(!pDbValue)
-      std::cerr << G_STRFUNC << ": value is not a Value< DbValue >." << std::endl;
+      std::cerr << G_STRFUNC << ": value is not a Value< DbValue >.\n";
     else
     {
       DbTreeModelRow& row_details = m_map_rows[datamodel_row]; //Adds it if necessary.
@@ -943,7 +943,7 @@ Gtk::TreeModel::iterator DbTreeModel::get_placeholder_row()
         --row;
       else
       {
-        std::cerr << G_STRFUNC << ": Placeholder row not found." << std::endl;
+        std::cerr << G_STRFUNC << ": Placeholder row not found.\n";
         return result; //failed, because there are no non-removed rows.
       }
     }
diff --git a/glom/mode_data/datawidget/treemodel_db_withextratext.cc 
b/glom/mode_data/datawidget/treemodel_db_withextratext.cc
index 9e07c00..67be60e 100644
--- a/glom/mode_data/datawidget/treemodel_db_withextratext.cc
+++ b/glom/mode_data/datawidget/treemodel_db_withextratext.cc
@@ -60,7 +60,7 @@ DbTreeModelWithExtraText::DbTreeModelWithExtraText(const FoundSet& found_set, co
   }
   else
   {
-    std::cerr << G_STRFUNC << ": The first field was found in the list." << std::endl;
+    std::cerr << G_STRFUNC << ": The first field was found in the list.\n";
   }
 }
 
@@ -105,7 +105,7 @@ void DbTreeModelWithExtraText::get_value_vfunc(const TreeModel::iterator& iter,
     
     if(m_column_index_first == -1)
     {
-      std::cerr << G_STRFUNC << ": m_column_index_first is not set." << std::endl;
+      std::cerr << G_STRFUNC << ": m_column_index_first is not set.\n";
       //TODO: This then causes a crash later. Find out why.
     }
     else
diff --git a/glom/mode_data/db_adddel/db_adddel.cc b/glom/mode_data/db_adddel/db_adddel.cc
index 2d5b234..47c1226 100644
--- a/glom/mode_data/db_adddel/db_adddel.cc
+++ b/glom/mode_data/db_adddel/db_adddel.cc
@@ -154,7 +154,7 @@ void DbAddDel::do_user_requested_edit()
     signal_user_requested_edit()(iter);
   }
   else
-    std::cerr << G_STRFUNC << ": No item was selected." << std::endl;
+    std::cerr << G_STRFUNC << ": No item was selected.\n";
 }
 
 void DbAddDel::on_idle_row_edit()
@@ -817,7 +817,7 @@ void DbAddDel::set_value(const Gtk::TreeModel::iterator& iter, const std::shared
 
   if(!m_refListStore)
   {
-    std::cerr << G_STRFUNC << ": No model." << std::endl;
+    std::cerr << G_STRFUNC << ": No model.\n";
     return;
   }
 
@@ -863,7 +863,7 @@ void DbAddDel::refresh_cell_choices_data_from_database_with_foreign_key(guint mo
   auto layout_field = std::dynamic_pointer_cast<const LayoutItem_Field>(item);
   if(!layout_field)
   {
-    std::cerr << G_STRFUNC << ": The layout item was not a LayoutItem_Field." << std::endl;
+    std::cerr << G_STRFUNC << ": The layout item was not a LayoutItem_Field.\n";
     return;
   }
 
@@ -975,7 +975,7 @@ DbAddDel::type_list_indexes DbAddDel::get_column_index(const std::shared_ptr<con
 
   if(!layout_item)
   {
-    std::cerr << G_STRFUNC << ": layout_item was null." << std::endl;
+    std::cerr << G_STRFUNC << ": layout_item was null.\n";
     return list_indexes;
   }
 
@@ -1365,14 +1365,14 @@ void DbAddDel::on_idle_treeview_cell_edited_revert(const Gtk::TreeModel::Row& ro
   auto pColumn = m_TreeView.get_column(view_column_index);
   if(!pColumn)
   {
-    std::cerr << G_STRFUNC << ": pColumn is null." << std::endl;
+    std::cerr << G_STRFUNC << ": pColumn is null.\n";
     return;
   }
   
   auto pCell = dynamic_cast<Gtk::CellRendererText*>(pColumn->get_first_cell());
   if(!pCell)
   {
-    std::cerr << G_STRFUNC << ": pCell is null." << std::endl;
+    std::cerr << G_STRFUNC << ": pCell is null.\n";
     return;
   }
     
@@ -1395,7 +1395,7 @@ void DbAddDel::on_treeview_cell_edited(const Glib::ustring& path_string, const G
  
   if(path.empty())
   {
-    std::cerr << G_STRFUNC << ": path is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": path is empty.\n";
     return;
   }
 
@@ -1500,7 +1500,7 @@ void DbAddDel::on_treeview_cell_edited(const Glib::ustring& path_string, const G
         //Store the value in the model:
         //std::cout << "debug: setting value: column=" << treemodel_column_index << ", type=" << 
value.get_value_type() << std::endl;
         row.set_value(treemodel_column_index, value);
-        //std::cout << "debug: after setting value" << std::endl;
+        //std::cout << "debug: after setting value\n";
       }
 
       if(!bIsAdd)
@@ -1838,7 +1838,7 @@ bool DbAddDel::get_view_column_index(guint model_column_index, guint& view_colum
     ++view_column_index;
   }
   else
-    std::cout << "m_treeviewcolumn_button is null." << std::endl;
+    std::cout << "m_treeviewcolumn_button is null.\n";
 
   return true;
 }
@@ -1862,7 +1862,7 @@ void DbAddDel::set_key_field(const std::shared_ptr<Field>& field)
 
 void DbAddDel::treeviewcolumn_on_cell_data(Gtk::CellRenderer* renderer, const Gtk::TreeModel::iterator& 
iter, int model_column_index, int data_model_column_index)
 {
-  //std::cout << "debug: DbAddDel::treeviewcolumn_on_cell_data()" << std::endl;
+  //std::cout << "debug: DbAddDel::treeviewcolumn_on_cell_data()\n";
 
   if(iter)
   {
@@ -1880,7 +1880,7 @@ void DbAddDel::treeviewcolumn_on_cell_data(Gtk::CellRenderer* renderer, const Gt
       GType debug_type = value.get_value_type();
       std::cout << "debug: " << G_STRFUNC << ": GType=" << debug_type << std::endl;
       if(debug_type)
-         std::cout << "    GType name=\"" << g_type_name(debug_type) << "\"" << std::endl;
+         std::cout << "    GType name=\"" << g_type_name(debug_type) << "\"\n";
       */
 
       const auto type = field->get_glom_type();
@@ -1908,7 +1908,7 @@ void DbAddDel::treeviewcolumn_on_cell_data(Gtk::CellRenderer* renderer, const Gt
             pDerived->property_pixbuf() = pixbuf;
           }
           else
-            std::cerr << G_STRFUNC << ": glom_type is enumType::IMAGE but gda type is not VALUE_TYPE_BINARY" 
<< std::endl;
+            std::cerr << G_STRFUNC << ": glom_type is enumType::IMAGE but gda type is not 
VALUE_TYPE_BINARY\n";
 
           break;
         }
@@ -2149,7 +2149,7 @@ void DbAddDel::user_changed(const Gtk::TreeModel::iterator& row, guint col)
           }
           else
           {
-            std::cerr << G_STRFUNC << ": key not found for edited related field." << std::endl;
+            std::cerr << G_STRFUNC << ": key not found for edited related field.\n";
           }
         }
       }
@@ -2231,7 +2231,7 @@ void DbAddDel::user_changed(const Gtk::TreeModel::iterator& row, guint col)
     else
     {
       //A field value was entered, but the record has not been added yet, because not enough information 
exists yet.
-      std::cout << G_STRFUNC << ": debug: record not yet added." << std::endl;
+      std::cout << G_STRFUNC << ": debug: record not yet added.\n";
     }
   }
 }
@@ -2252,7 +2252,7 @@ void DbAddDel::user_added(const Gtk::TreeModel::iterator& row)
     return;
   }
 
-  //std::cout << "DbAddDel::on_adddel_user_added" << std::endl;
+  //std::cout << "DbAddDel::on_adddel_user_added\n";
 
   Gnome::Gda::Value primary_key_value;
 
diff --git a/glom/mode_data/flowtablewithfields.cc b/glom/mode_data/flowtablewithfields.cc
index aa36fc0..feb3722 100644
--- a/glom/mode_data/flowtablewithfields.cc
+++ b/glom/mode_data/flowtablewithfields.cc
@@ -346,7 +346,7 @@ void FlowTableWithFields::add_layout_portal(const std::shared_ptr<LayoutItem_Por
     add_layoutwidgetbase(portal_box);
   }
   else
-    std::cerr << G_STRFUNC << ": No portal was created." << std::endl;
+    std::cerr << G_STRFUNC << ": No portal was created.\n";
 }
 
 void FlowTableWithFields::add_layout_notebook(const std::shared_ptr<LayoutItem_Notebook>& notebook)
@@ -728,7 +728,7 @@ Gnome::Gda::Value FlowTableWithFields::get_field_value(const std::shared_ptr<con
       return value;
   }
 
-  //std::cerr << G_STRFUNC << ": returning null" << std::endl;
+  //std::cerr << G_STRFUNC << ": returning null\n";
   return Gnome::Gda::Value(); //null.
 }
 
@@ -792,7 +792,7 @@ FlowTableWithFields::type_portals FlowTableWithFields::get_portals(const std::sh
       }
       else
       {
-        std::cerr << G_STRFUNC << ": get_portal() returned NULL." << std::endl;
+        std::cerr << G_STRFUNC << ": get_portal() returned NULL.\n";
       }
     }
   }
@@ -1067,7 +1067,7 @@ void FlowTableWithFields::on_datawidget_layout_item_added(LayoutWidgetBase::enum
   auto layout_item_parent = pDataWidget->get_layout_item();
   if(!layout_item_parent)
   {
-    std::cerr << G_STRFUNC << ": layout_item_parent is null." << std::endl;
+    std::cerr << G_STRFUNC << ": layout_item_parent is null.\n";
     return;
   }
 
@@ -1077,7 +1077,7 @@ void FlowTableWithFields::on_datawidget_layout_item_added(LayoutWidgetBase::enum
   auto layout_group = std::dynamic_pointer_cast<LayoutGroup>(get_layout_item());
   if(!layout_group)
   {
-    std::cerr << G_STRFUNC << ": layout_group is null." << std::endl;
+    std::cerr << G_STRFUNC << ": layout_group is null.\n";
     return;
   }
 
@@ -1385,7 +1385,7 @@ void FlowTableWithFields::set_enable_drag_and_drop(bool enabled)
   {
     if(child)
     {
-      //std::cout << G_STRFUNC << ": child" << std::endl;
+      //std::cout << G_STRFUNC << ": child\n";
       child->set_drag_enabled(drag_mode);
       child->set_drop_enabled(enabled);  
     }
diff --git a/glom/mode_data/notebook_data.cc b/glom/mode_data/notebook_data.cc
index 971f864..cc6b345 100644
--- a/glom/mode_data/notebook_data.cc
+++ b/glom/mode_data/notebook_data.cc
@@ -118,7 +118,7 @@ bool Notebook_Data::init_db_details(const FoundSet& found_set, const Gnome::Gda:
 
       if(!details_record_specified)
       {
-        //std::cout << "debug: no new_found_set" << std::endl;
+        //std::cout << "debug: no new_found_set\n";
         primary_key_for_details = document->get_layout_record_viewed(m_table_name, 
m_Box_Details.get_layout_name());
       }
       else if(details_record_specified)
@@ -140,7 +140,7 @@ bool Notebook_Data::init_db_details(const FoundSet& found_set, const Gnome::Gda:
         //std::cout << "debug:  m_Box_List.get_primary_key_value_selected()=" << 
primary_key_for_details.to_string() << std::endl;
         if(Conversions::value_is_empty(primary_key_for_details))
         {
-          //std::cout << "debug: calling list.get_primary_key_value_first()" << std::endl;
+          //std::cout << "debug: calling list.get_primary_key_value_first()\n";
           primary_key_for_details = m_Box_List.get_primary_key_value_first();
           //std::cout << "  debug:  result=" <<  primary_key_for_details.to_string() << std::endl;
         }
@@ -149,7 +149,7 @@ bool Notebook_Data::init_db_details(const FoundSet& found_set, const Gnome::Gda:
       m_Box_Details.init_db_details(found_set, get_active_layout_platform(get_document()), 
primary_key_for_details);
     }
     else
-      std::cerr << G_STRFUNC << ": document is NULL" << std::endl;
+      std::cerr << G_STRFUNC << ": document is NULL\n";
   }
 
 
@@ -252,7 +252,7 @@ FoundSet Notebook_Data::get_found_set_selected() const
     const auto document = get_document();
     if(!document)
     {
-      std::cerr << G_STRFUNC << ": document is null" << std::endl;
+      std::cerr << G_STRFUNC << ": document is null\n";
       found_set.m_where_clause = Gnome::Gda::SqlExpr();
       return found_set;
     }
@@ -363,14 +363,14 @@ void Notebook_Data::on_switch_page_handler(Gtk::Widget* pPage)
     //b) show changed field contents, changed elsewhere.
     if(box == &m_Box_List)
     {
-      //std::cout << "debug: switching to list" << std::endl;
+      //std::cout << "debug: switching to list\n";
       const auto primary_key_selected = m_Box_List.get_primary_key_value_selected();
       m_Box_List.refresh_data_from_database();
       m_Box_List.set_primary_key_value_selected(primary_key_selected);
     }
     else if(box == &m_Box_Details)
     {
-      //std::cout << "debug: switching to details" << std::endl;
+      //std::cout << "debug: switching to details\n";
       const auto primary_key_selected = m_Box_List.get_primary_key_value_selected();
       m_Box_Details.refresh_data_from_database_with_primary_key(primary_key_selected);
     }
diff --git a/glom/mode_design/dialog_database_preferences.cc b/glom/mode_design/dialog_database_preferences.cc
index 96cbc3a..7b91bb1 100644
--- a/glom/mode_design/dialog_database_preferences.cc
+++ b/glom/mode_design/dialog_database_preferences.cc
@@ -140,7 +140,7 @@ void Dialog_Database_Preferences::on_treeview_cell_edited_next_value(const Glib:
 
     const bool test = DbUtils::query_execute(builder);
     if(!test)
-      std::cerr << G_STRFUNC << ": UPDATE failed." << std::endl;
+      std::cerr << G_STRFUNC << ": UPDATE failed.\n";
   }
 }
 
@@ -184,7 +184,7 @@ void Dialog_Database_Preferences::load_from_document()
   auto datamodel = DbUtils::query_execute_select(builder);
   if(!datamodel)
   {
-    std::cerr << G_STRFUNC << ": Gda::DataModel is NULL." << std::endl;
+    std::cerr << G_STRFUNC << ": Gda::DataModel is NULL.\n";
     return;
   }
 
diff --git a/glom/mode_design/dialog_initial_password.cc b/glom/mode_design/dialog_initial_password.cc
index 3428ddf..a204e91 100644
--- a/glom/mode_design/dialog_initial_password.cc
+++ b/glom/mode_design/dialog_initial_password.cc
@@ -68,7 +68,7 @@ void Dialog_InitialPassword::load_from_document()
     m_entry_user->set_text(user);
   }
   else
-    std::cerr << G_STRFUNC << ": no document" << std::endl;
+    std::cerr << G_STRFUNC << ": no document\n";
 
 }
 
diff --git a/glom/mode_design/fields/box_db_table_definition.cc 
b/glom/mode_design/fields/box_db_table_definition.cc
index 82891f4..39e8e38 100644
--- a/glom/mode_design/fields/box_db_table_definition.cc
+++ b/glom/mode_design/fields/box_db_table_definition.cc
@@ -147,7 +147,7 @@ bool Box_DB_Table_Definition::fill_from_database()
   bool result = Box_DB_Table::fill_from_database();
   if(!result)
   {
-    std::cerr << G_STRFUNC << ":  Box_DB_Table::fill_from_database() failed." << std::endl;
+    std::cerr << G_STRFUNC << ":  Box_DB_Table::fill_from_database() failed.\n";
     return false;
   }
 
@@ -263,7 +263,7 @@ void Box_DB_Table_Definition::on_adddel_delete(const Gtk::TreeModel::iterator& r
         get_document()->remove_field(m_table_name, name);
       }
       else
-        std::cerr << G_STRFUNC << ": field deletion failed." << std::endl;
+        std::cerr << G_STRFUNC << ": field deletion failed.\n";
     }
   }
 
@@ -349,7 +349,7 @@ bool Box_DB_Table_Definition::check_field_change(const std::shared_ptr<const Fie
   if( (field_new->get_name() != field_old->get_name()) &&
       (DbUtils::get_field_exists_in_database(m_table_name, field_new->get_name())) )
   {
-    std::cout << "get_field_exists_in_database(" << m_table_name << ", " << field_new->get_name() << ") 
returned true" << std::endl;
+    std::cout << "get_field_exists_in_database(" << m_table_name << ", " << field_new->get_name() << ") 
returned true\n";
 
     //Warn the user and refuse to make the change:
     UiUtils::show_ok_dialog(_("Field Name Already Exists"), 
@@ -655,7 +655,7 @@ std::shared_ptr<Field> Box_DB_Table_Definition::change_definition(const std::sha
 
 void Box_DB_Table_Definition::fill_fields()
 {
-  //std::cout << "DEBUG: Box_DB_Table_Definition::fill_fields()" << std::endl;
+  //std::cout << "DEBUG: Box_DB_Table_Definition::fill_fields()\n";
 
   //Update the fields (also checking the actual database):
   m_vecFields = DbUtils::get_fields_for_table(get_document(), m_table_name);
@@ -685,7 +685,7 @@ bool Box_DB_Table_Definition::field_has_null_values(const std::shared_ptr<const
   }
   else
   {
-    std::cerr << G_STRFUNC << ": query failed." << std::endl;
+    std::cerr << G_STRFUNC << ": query failed.\n";
   }
 
   return null_count > 0; 
@@ -710,7 +710,7 @@ bool Box_DB_Table_Definition::field_has_non_unique_values(const std::shared_ptr<
   }
   else
   {
-    std::cerr << G_STRFUNC << ": SELECT COUNT() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": SELECT COUNT() failed.\n";
   }
 
   //Count all rows, to compare. TODO_performance: Is there a more efficient way to do this? Maybe count(*), 
which apparently doesn't ignore NULL rows like count(somefield) would.
@@ -727,7 +727,7 @@ bool Box_DB_Table_Definition::field_has_non_unique_values(const std::shared_ptr<
   }
   else
   {
-    std::cerr << G_STRFUNC << ": SELECT COUNT() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": SELECT COUNT() failed.\n";
   }
 
 
diff --git a/glom/mode_design/fields/dialog_fielddefinition.cc 
b/glom/mode_design/fields/dialog_fielddefinition.cc
index 2dd3c00..3aaa3ab 100644
--- a/glom/mode_design/fields/dialog_fielddefinition.cc
+++ b/glom/mode_design/fields/dialog_fielddefinition.cc
@@ -147,7 +147,7 @@ void Dialog_FieldDefinition::set_field(const std::shared_ptr<const Field>& field
   layout_item->set_full_field_details(field_default_value);
   m_pDataWidget_DefaultValueSimple = Gtk::manage( new DataWidget(layout_item, "", get_document()) );
   if(!m_pDataWidget_DefaultValueSimple->get_data_child_widget())
-    std::cerr << G_STRFUNC << ": The DataWidget did not create a child widget." << std::endl;
+    std::cerr << G_STRFUNC << ": The DataWidget did not create a child widget.\n";
 
   connect_each_widget(m_pDataWidget_DefaultValueSimple);
 
@@ -201,7 +201,7 @@ void Dialog_FieldDefinition::set_field(const std::shared_ptr<const Field>& field
 
   //std::cout << "debug: dialog_fielddefinition.c:: m_pTextView_Calculation.gobj() gtype = " << 
G_OBJECT_TYPE_NAME(m_pTextView_Calculation->gobj()) << std::endl;
   m_pTextView_Calculation->get_buffer()->set_text(calculation);
-  //std::cout << "  debug: dialog_fielddefinition.c:: after get_buffer()" << std::endl;
+  //std::cout << "  debug: dialog_fielddefinition.c:: after get_buffer()\n";
 
   m_pEntry_Title->set_text(item_get_title(field));
 
diff --git a/glom/mode_design/layout/combobox_fields.cc b/glom/mode_design/layout/combobox_fields.cc
index dd59205..881c945 100644
--- a/glom/mode_design/layout/combobox_fields.cc
+++ b/glom/mode_design/layout/combobox_fields.cc
@@ -139,9 +139,9 @@ void ComboBox_Fields::set_fields(const std::shared_ptr<Document>& document, cons
   {
     if(rel && (rel->get_glom_type() == field_type))
     {
-      std::cout << "DEBUG: ComboBox_Fields::set_fields() 1" << std::endl;
+      std::cout << "DEBUG: ComboBox_Fields::set_fields() 1\n";
       auto tree_iter = m_model->append();
-      std::cout << "DEBUG: ComboBox_Fields::set_fields() 2" << std::endl;
+      std::cout << "DEBUG: ComboBox_Fields::set_fields() 2\n";
       Gtk::TreeModel::Row row = *tree_iter;
 
       row[m_model_columns.m_field] = rel;
diff --git a/glom/mode_design/layout/dialog_choose_field.cc b/glom/mode_design/layout/dialog_choose_field.cc
index 5ba0588..8ede977 100644
--- a/glom/mode_design/layout/dialog_choose_field.cc
+++ b/glom/mode_design/layout/dialog_choose_field.cc
@@ -132,12 +132,12 @@ void Dialog_ChooseField::set_document(const std::shared_ptr<Document>& document,
 
   if(!m_document)
   {
-    std::cerr << G_STRFUNC << ": document is null" << std::endl;
+    std::cerr << G_STRFUNC << ": document is null\n";
   }
 
   if(table_name.empty())
   {
-    std::cerr << G_STRFUNC << ": table_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": table_name is empty\n";
   }
   
   auto selection = m_treeview->get_selection();
diff --git a/glom/mode_design/layout/dialog_layout_calendar_related.cc 
b/glom/mode_design/layout/dialog_layout_calendar_related.cc
index c047d32..ce15248 100644
--- a/glom/mode_design/layout/dialog_layout_calendar_related.cc
+++ b/glom/mode_design/layout/dialog_layout_calendar_related.cc
@@ -246,7 +246,7 @@ void Dialog_Layout_Calendar_Related::update_ui(bool including_relationship_list)
 
   auto debugfield = m_portal->get_date_field();
   if(!debugfield)
-    std::cout << "debug: " << G_STRFUNC << ": date field is NULL" << std::endl;
+    std::cout << "debug: " << G_STRFUNC << ": date field is NULL\n";
   else
     std::cout << "debug: " << G_STRFUNC << ": date field:" << debugfield->get_name() << std::endl;
 
@@ -299,7 +299,7 @@ void Dialog_Layout_Calendar_Related::save_to_document()
     }
     else
     {
-      //std::cout << "debug: set_navigation_relationship_specific(false, none)" << std::endl;
+      //std::cout << "debug: set_navigation_relationship_specific(false, none)\n";
       std::shared_ptr<UsesRelationship> none;
       m_portal->set_navigation_relationship_specific(none);
     }
@@ -308,7 +308,7 @@ void Dialog_Layout_Calendar_Related::save_to_document()
 
     auto debugfield = m_portal->get_date_field();
     if(!debugfield)
-      std::cout << "debug: " << G_STRFUNC << ": date field is NULL" << std::endl;
+      std::cout << "debug: " << G_STRFUNC << ": date field is NULL\n";
     else
       std::cout << "debug: " << G_STRFUNC << ": date field:" << debugfield->get_name() << std::endl;
   }
@@ -351,7 +351,7 @@ void Dialog_Layout_Calendar_Related::on_combo_relationship_changed()
 
 std::shared_ptr<Relationship> Dialog_Layout_Calendar_Related::get_relationship() const
 {
-  std::cout << "debug: I wonder if this function is used." << std::endl;
+  std::cout << "debug: I wonder if this function is used.\n";
   return m_combo_relationship->get_selected_relationship();
 }
 
diff --git a/glom/mode_design/layout/dialog_layout_details.cc 
b/glom/mode_design/layout/dialog_layout_details.cc
index 3bea9e4..0a8f085 100644
--- a/glom/mode_design/layout/dialog_layout_details.cc
+++ b/glom/mode_design/layout/dialog_layout_details.cc
@@ -234,12 +234,12 @@ void Dialog_Layout_Details::fill_group(const Gtk::TreeModel::iterator& iter, std
       auto layout_portal = std::dynamic_pointer_cast<LayoutItem_Portal>(layout_item);
       if(layout_portal)
       {
-        //std::cout << "debug: " << G_STRFUNC << ": adding portal." << std::endl;
+        //std::cout << "debug: " << G_STRFUNC << ": adding portal.\n";
         group->add_item(glom_sharedptr_clone(layout_portal));
       }
       else
       {
-        //std::cout << "debug: " << G_STRFUNC << ": adding group." << std::endl;
+        //std::cout << "debug: " << G_STRFUNC << ": adding group.\n";
         auto layout_group = std::dynamic_pointer_cast<LayoutGroup>(layout_item);
         if(layout_group && !layout_portal)
         {
@@ -250,7 +250,7 @@ void Dialog_Layout_Details::fill_group(const Gtk::TreeModel::iterator& iter, std
         }
         else if(layout_item)
         {
-          //std::cout << "debug: " << G_STRFUNC << ": adding item." << std::endl;
+          //std::cout << "debug: " << G_STRFUNC << ": adding item.\n";
 
           //Add field or button:
           auto item = glom_sharedptr_clone(layout_item);
diff --git a/glom/mode_design/layout/dialog_layout_list_related.cc 
b/glom/mode_design/layout/dialog_layout_list_related.cc
index fc56869..4a8d06b 100644
--- a/glom/mode_design/layout/dialog_layout_list_related.cc
+++ b/glom/mode_design/layout/dialog_layout_list_related.cc
@@ -358,7 +358,7 @@ void Dialog_Layout_List_Related::save_to_document()
       // TODO: Get rid of the else branch. Cleanup code for the relations should
       // go into the Glom::LayoutItem_Portal::set_navigation_relationship_type_* functions.
 
-      //std::cout << "debug: set_navigation_relationship_specific(false, none)" << std::endl;
+      //std::cout << "debug: set_navigation_relationship_specific(false, none)\n";
       std::shared_ptr<UsesRelationship> none;
       m_portal->set_navigation_relationship_specific(none);
     }
@@ -472,7 +472,7 @@ void Dialog_Layout_List_Related::on_spinbutton_changed()
 
 std::shared_ptr<Relationship> Dialog_Layout_List_Related::get_relationship() const
 {
-  std::cout << "debug: I wonder if this function is used." << std::endl;
+  std::cout << "debug: I wonder if this function is used.\n";
   return m_combo_relationship->get_selected_relationship();
 }
 
diff --git a/glom/mode_design/layout/layout_item_dialogs/combo_summarytype.cc 
b/glom/mode_design/layout/layout_item_dialogs/combo_summarytype.cc
index 224d9a0..0c559bc 100644
--- a/glom/mode_design/layout/layout_item_dialogs/combo_summarytype.cc
+++ b/glom/mode_design/layout/layout_item_dialogs/combo_summarytype.cc
@@ -62,7 +62,7 @@ void Combo_SummaryType::set_summary_type(LayoutItem_FieldSummary::summaryType su
     }
   }
 
-  std::cerr << G_STRFUNC << ": no item found" << std::endl;
+  std::cerr << G_STRFUNC << ": no item found\n";
 
   //Not found, so mark it as blank:
   unset_active();
diff --git a/glom/mode_design/layout/layout_item_dialogs/dialog_line.cc 
b/glom/mode_design/layout/layout_item_dialogs/dialog_line.cc
index 5a6b5b6..7a2eaae 100644
--- a/glom/mode_design/layout/layout_item_dialogs/dialog_line.cc
+++ b/glom/mode_design/layout/layout_item_dialogs/dialog_line.cc
@@ -51,7 +51,7 @@ void Dialog_Line::set_line(const std::shared_ptr<const LayoutItem_Line>& line)
 {
   if(!line)
   {
-    std::cerr << G_STRFUNC << ": line is null" << std::endl;
+    std::cerr << G_STRFUNC << ": line is null\n";
   }
 
   //set_blocked();
@@ -72,14 +72,14 @@ std::shared_ptr<LayoutItem_Line> Dialog_Line::get_line() const
 {
   if(!m_line)
   {
-    std::cerr << G_STRFUNC <<  ": m_line is null" << std::endl;
+    std::cerr << G_STRFUNC <<  ": m_line is null\n";
   }
   
   auto result = glom_sharedptr_clone(m_line); //Start with the old details, to preserve anything that is not 
in our UI.
 
   if(!result)
   {
-    std::cerr << G_STRFUNC << ": : result is null" << std::endl;
+    std::cerr << G_STRFUNC << ": : result is null\n";
     return result;
   }
 
diff --git a/glom/mode_design/print_layouts/box_print_layouts.cc 
b/glom/mode_design/print_layouts/box_print_layouts.cc
index c58b055..9476d21 100644
--- a/glom/mode_design/print_layouts/box_print_layouts.cc
+++ b/glom/mode_design/print_layouts/box_print_layouts.cc
@@ -109,7 +109,7 @@ bool Box_Print_Layouts::fill_from_database()
     }
    }
   else
-    std::cerr << G_STRFUNC << ": document is null" << std::endl;
+    std::cerr << G_STRFUNC << ": document is null\n";
 
   //TODO:
 
diff --git a/glom/mode_design/print_layouts/window_print_layout_edit.cc 
b/glom/mode_design/print_layouts/window_print_layout_edit.cc
index 47c91ff..0761379 100644
--- a/glom/mode_design/print_layouts/window_print_layout_edit.cc
+++ b/glom/mode_design/print_layouts/window_print_layout_edit.cc
@@ -485,7 +485,7 @@ void Window_PrintLayout_Edit::on_canvas_drag_data_received(const Glib::RefPtr<Gd
   const auto item_type = PrintLayoutToolbarButton::get_item_type_from_selection_data(drag_context, 
selection_data);
   if(item_type == PrintLayoutToolbarButton::enumItems::INVALID)
   {
-    std::cerr << G_STRFUNC << ": item_type was invalid" << std::endl;
+    std::cerr << G_STRFUNC << ": item_type was invalid\n";
     return;
   }
 
@@ -520,7 +520,7 @@ void Window_PrintLayout_Edit::on_canvas_drag_data_received(const Glib::RefPtr<Gd
     auto layout_item = create_empty_item(item_type);
     if(!layout_item)
     {
-      std::cerr << G_STRFUNC << ": layout_item is null." << std::endl;
+      std::cerr << G_STRFUNC << ": layout_item is null.\n";
       return;
     }
 
@@ -561,7 +561,7 @@ void Window_PrintLayout_Edit::update_table_title()
   const auto document = std::dynamic_pointer_cast<const Document>(get_document());
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null" << std::endl;
+    std::cerr << G_STRFUNC << ": document was null\n";
     return;
   }
 
@@ -728,7 +728,7 @@ bool Window_PrintLayout_Edit::on_canvas_motion_notify_event(GdkEventMotion* moti
 void Window_PrintLayout_Edit::on_canvas_show_context_menu(guint button, guint32 activate_time)
 {
   //TODO: This is never called when right-clicking on the canvas.
-  //std::cout << G_STRFUNC << ": debug" << std::endl;
+  //std::cout << G_STRFUNC << ": debug\n";
 
   if(m_context_menu)
     m_context_menu->popup(button, activate_time);
@@ -846,14 +846,14 @@ void Window_PrintLayout_Edit::on_menu_insert_create_standard()
   const auto document = std::dynamic_pointer_cast<const Document>(get_document());
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null" << std::endl;
+    std::cerr << G_STRFUNC << ": document was null\n";
     return;
   }
 
   auto page_setup = m_canvas.get_page_setup();
   if(!page_setup)
   {
-    std::cerr << G_STRFUNC << ": page_setup was null" << std::endl;
+    std::cerr << G_STRFUNC << ": page_setup was null\n";
     return;
   }
   
diff --git a/glom/mode_design/relationships_overview/window_relationships_overview.cc 
b/glom/mode_design/relationships_overview/window_relationships_overview.cc
index af558ac..cd0fcaa 100644
--- a/glom/mode_design/relationships_overview/window_relationships_overview.cc
+++ b/glom/mode_design/relationships_overview/window_relationships_overview.cc
@@ -311,7 +311,7 @@ void Window_RelationshipsOverview::draw_lines()
   }
   else
   {
-    std::cout << "ERROR: Could not retrieve the Glom document." << std::endl;
+    std::cout << "ERROR: Could not retrieve the Glom document.\n";
   }
 }
 
diff --git a/glom/mode_design/translation/combobox_locale.cc b/glom/mode_design/translation/combobox_locale.cc
index 640b64d..a6270bf 100644
--- a/glom/mode_design/translation/combobox_locale.cc
+++ b/glom/mode_design/translation/combobox_locale.cc
@@ -76,7 +76,7 @@ void ComboBox_Locale::set_selected_locale(const Glib::ustring& locale)
     for(const auto& row : model->children())
     {
       const Glib::ustring& this_text = row[m_model_columns.m_identifier];
-      //std::cout << G_STRFUNC << ": DEBUG: locale=" << locale << ", this_text=" << this_text << "." << 
std::endl;
+      //std::cout << G_STRFUNC << ": DEBUG: locale=" << locale << ", this_text=" << this_text << ".\n";
  
       if(this_text == locale)
       {
@@ -90,7 +90,7 @@ void ComboBox_Locale::set_selected_locale(const Glib::ustring& locale)
   }
   else
   {
-    std::cerr << G_STRFUNC << ": locale not found in list: " << locale << ". The model is empty." << 
std::endl;
+    std::cerr << G_STRFUNC << ": locale not found in list: " << locale << ". The model is empty.\n";
   }
 
   unset_active();
diff --git a/glom/mode_design/translation/dialog_identify_original.cc 
b/glom/mode_design/translation/dialog_identify_original.cc
index cc6a436..8f2767b 100644
--- a/glom/mode_design/translation/dialog_identify_original.cc
+++ b/glom/mode_design/translation/dialog_identify_original.cc
@@ -45,7 +45,7 @@ Dialog_IdentifyOriginal::Dialog_IdentifyOriginal(BaseObjectType* cobject, const
 
 void Dialog_IdentifyOriginal::load_from_document()
 {
-  std::cout << "Dialog_IdentifyOriginal::load_from_document" << std::endl;
+  std::cout << "Dialog_IdentifyOriginal::load_from_document\n";
 
   if(m_label_original )
     m_label_original->set_markup( UiUtils::bold_message( IsoCodes::get_locale_name( 
get_document()->get_translation_original_locale()) ) );
diff --git a/glom/mode_design/users/dialog_groups_list.cc b/glom/mode_design/users/dialog_groups_list.cc
index 1c0059b..0e32e73 100644
--- a/glom/mode_design/users/dialog_groups_list.cc
+++ b/glom/mode_design/users/dialog_groups_list.cc
@@ -221,7 +221,7 @@ void Dialog_GroupsList::on_button_group_delete()
           const Glib::ustring strQuery = "DROP GROUP " + DbUtils::escape_sql_id(group);
           const auto test = DbUtils::query_execute_string(strQuery);
           if(!test)
-            std::cerr << G_STRFUNC << ": DROP GROUP failed." << std::endl;
+            std::cerr << G_STRFUNC << ": DROP GROUP failed.\n";
 
           fill_group_list();
         }
@@ -251,13 +251,13 @@ void Dialog_GroupsList::on_button_group_new()
 
   if(group_name.empty())
   {
-    std::cerr << G_STRFUNC << ": : group_name is empty" << std::endl;
+    std::cerr << G_STRFUNC << ": : group_name is empty\n";
     return;
   }
 
   if(!DbUtils::add_group(get_document(), group_name))
   {
-    std::cerr << G_STRFUNC << ": : DbUtils::add_group() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": : DbUtils::add_group() failed.\n";
   }
 
   fill_group_list();
@@ -373,7 +373,7 @@ void Dialog_GroupsList::fill_table_list(const Glib::ustring& group_name)
 {
   if(group_name.empty())
   {
-    std::cerr << G_STRFUNC << ": group_name is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": group_name is empty.\n";
   }
 
   //Fill the model rows:
@@ -480,7 +480,7 @@ bool Dialog_GroupsList::set_table_privilege(const Glib::ustring& table_name, con
 
   const auto test = DbUtils::query_execute_string(strQuery); //TODO: Handle errors.
   if(!test)
-    std::cerr << G_STRFUNC << ": GRANT/REVOKE failed." << std::endl;
+    std::cerr << G_STRFUNC << ": GRANT/REVOKE failed.\n";
 
   return test;
 }
diff --git a/glom/mode_design/users/dialog_users_list.cc b/glom/mode_design/users/dialog_users_list.cc
index 4b55b76..a1c7f44 100644
--- a/glom/mode_design/users/dialog_users_list.cc
+++ b/glom/mode_design/users/dialog_users_list.cc
@@ -208,7 +208,7 @@ void Dialog_UsersList::on_button_user_add()
     //Add it to the group:
     const auto query_add_user = DbUtils::build_query_add_user_to_group(m_combo_group->get_active_text(), 
user);
     if(!DbUtils::query_execute_string(query_add_user))
-      std::cerr << G_STRFUNC << ": ALTER GROUP failed." << std::endl;
+      std::cerr << G_STRFUNC << ": ALTER GROUP failed.\n";
 
     //Remove any user rights, so that all rights come from the user's presence in the group:
     const auto document = get_document();
@@ -217,7 +217,7 @@ void Dialog_UsersList::on_button_user_add()
       const auto table_name = table->get_name();
       const Glib::ustring query_revoke = "REVOKE ALL PRIVILEGES ON " + DbUtils::escape_sql_id(table_name) + 
" FROM " + DbUtils::escape_sql_id(user);
       if(!DbUtils::query_execute_string(query_revoke))
-        std::cerr << G_STRFUNC << ": REVOKE failed." << std::endl;
+        std::cerr << G_STRFUNC << ": REVOKE failed.\n";
     }
 
     fill_list();
@@ -261,7 +261,7 @@ void Dialog_UsersList::on_button_user_new()
 
   if(!DbUtils::add_user(get_document(), user, password, m_combo_group->get_active_text() /* group */))
   {
-    std::cerr << G_STRFUNC << ": add_user() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": add_user() failed.\n";
   }
 
   fill_list();
@@ -334,7 +334,7 @@ void Dialog_UsersList::on_button_user_edit()
         const Glib::ustring strQuery = "ALTER USER " + DbUtils::escape_sql_id(user) + " PASSWORD '" + 
password + "'" ; //TODO: Escape the password.
         const auto test = DbUtils::query_execute_string(strQuery);
         if(!test)
-          std::cerr << G_STRFUNC << ": ALTER USER failed." << std::endl;
+          std::cerr << G_STRFUNC << ": ALTER USER failed.\n";
 
         //Change the password in the current connection, if this is the current user.
         auto connection_pool = ConnectionPool::get_instance();
diff --git a/glom/navigation/box_tables.cc b/glom/navigation/box_tables.cc
index b4799c2..0504ebf 100644
--- a/glom/navigation/box_tables.cc
+++ b/glom/navigation/box_tables.cc
@@ -70,7 +70,7 @@ void Box_Tables::fill_table_row(const Gtk::TreeModel::iterator& iter, const std:
 {
   if(!table_info)
   {
-    std::cerr << G_STRFUNC << ": table_info was null." << std::endl;
+    std::cerr << G_STRFUNC << ": table_info was null.\n";
     return;
   }
   
@@ -146,7 +146,7 @@ bool Box_Tables::fill_from_database()
     listTablesDocument = document->get_tables();
   }
   else
-    std::cerr << G_STRFUNC << ": document is null" << std::endl;
+    std::cerr << G_STRFUNC << ": document is null\n";
 
   //Get the list of tables in the database, from the server:
   auto sharedconnection = connect_to_server(AppWindow::get_appwindow());
@@ -312,7 +312,7 @@ void Box_Tables::on_adddel_Delete(const Gtk::TreeModel::iterator& rowStart, cons
           {
             const auto test = DbUtils::drop_table(table_name);
             if(!test)
-              std::cerr << G_STRFUNC << ": DROP TABLE failed." << std::endl;
+              std::cerr << G_STRFUNC << ": DROP TABLE failed.\n";
             else
             {
               //Forget about it in the document too.
@@ -334,7 +334,7 @@ void Box_Tables::on_adddel_Delete(const Gtk::TreeModel::iterator& rowStart, cons
                 DbUtils::remove_auto_increment(table_name, field_name);
               else
               {
-                std::cerr << G_STRFUNC << ": field_name is empty" << std::endl;
+                std::cerr << G_STRFUNC << ": field_name is empty\n";
               }
             }
           }
diff --git a/glom/print_layout/canvas_layout_item.cc b/glom/print_layout/canvas_layout_item.cc
index 49fa28e..8ceedf2 100644
--- a/glom/print_layout/canvas_layout_item.cc
+++ b/glom/print_layout/canvas_layout_item.cc
@@ -114,14 +114,14 @@ void CanvasLayoutItem::set_layout_item(const std::shared_ptr<LayoutItem>& layout
   //TODO: If we can ever avoid this the also update the CanvasLayoutItem class documentation.
   if(!get_canvas())
   {
-    std::cerr << G_STRFUNC << ": get_canvas() returned null. This should not be called before the 
CanvasLayoutItem is in a canvas due to goocanvas bug https://bugzilla.gnome.org/show_bug.cgi?id=657592#c16 ." 
<< std::endl;
+    std::cerr << G_STRFUNC << ": get_canvas() returned null. This should not be called before the 
CanvasLayoutItem is in a canvas due to goocanvas bug https://bugzilla.gnome.org/show_bug.cgi?id=657592#c16 
.\n";
   }
   
   //Add the new child:
   m_layout_item = layout_item;
 
   if(!m_layout_item)
-    std::cerr << G_STRFUNC << ": item was NULL." << std::endl;
+    std::cerr << G_STRFUNC << ": item was NULL.\n";
 
   auto child_item = create_canvas_item_for_layout_item(m_layout_item);
 
@@ -265,7 +265,7 @@ Glib::RefPtr<CanvasItemMovable> CanvasLayoutItem::create_canvas_item_for_layout_
           }
           else
           {
-            std::cerr << G_STRFUNC << ": NULL LayoutItem type." << std::endl;
+            std::cerr << G_STRFUNC << ": NULL LayoutItem type.\n";
           }
         }
       }
@@ -318,7 +318,7 @@ void CanvasLayoutItem::add_portal_rows_if_necessary(guint rows_count)
     std::dynamic_pointer_cast<LayoutItem_Portal>(get_layout_item());
   if(!portal)
   {
-    std::cerr << G_STRFUNC << ": The layout item was not a portal." << std::endl;
+    std::cerr << G_STRFUNC << ": The layout item was not a portal.\n";
     return;
   }
 
@@ -344,7 +344,7 @@ void CanvasLayoutItem::add_portal_rows_if_necessary(const Glib::RefPtr<CanvasTab
         get_canvas_table_cell_child(canvas_table, row, col);
       if(existing_child)
       {
-        //std::cout << "    existing child" << std::endl;
+        //std::cout << "    existing child\n";
         col++;
         continue;
       }
@@ -469,7 +469,7 @@ void CanvasLayoutItem::set_db_data(const Gnome::Gda::Value& value)
       break;
     }
     default:
-      std::cerr << G_STRFUNC << ": unhandled field type." << std::endl;
+      std::cerr << G_STRFUNC << ": unhandled field type.\n";
   }
 
 }
diff --git a/glom/print_layout/canvas_print_layout.cc b/glom/print_layout/canvas_print_layout.cc
index cfebe39..a88c5ba 100644
--- a/glom/print_layout/canvas_print_layout.cc
+++ b/glom/print_layout/canvas_print_layout.cc
@@ -668,7 +668,7 @@ void Canvas_PrintLayout::set_page_count(guint count)
 {
   if(count < 1)
   {
-    std::cerr << G_STRFUNC << ": count was less than 1" << std::endl;
+    std::cerr << G_STRFUNC << ": count was less than 1\n";
     return;
   }
 
@@ -689,7 +689,7 @@ void Canvas_PrintLayout::fill_with_data(const FoundSet& found_set, bool avoid_pa
   {
     //This might help a developer/debugger:
     //This is not an error.
-    std::cout << G_STRFUNC << ": Not attempting to show real data because the where_clause is empty, maybe 
because there are no records in the database yet." << std::endl;
+    std::cout << G_STRFUNC << ": Not attempting to show real data because the where_clause is empty, maybe 
because there are no records in the database yet.\n";
     return;
   }
   
@@ -711,7 +711,7 @@ void Canvas_PrintLayout::fill_with_data_system_preferences(const Glib::RefPtr<Ca
 
     if(!document)
     {
-      std::cerr << G_STRFUNC << ": document is null" << std::endl;
+      std::cerr << G_STRFUNC << ": document is null\n";
       return;
     }
 
@@ -999,7 +999,7 @@ void Canvas_PrintLayout::set_canvas_item_field_value(const Glib::RefPtr<Goocanva
     auto canvas_text = Glib::RefPtr<CanvasTextMovable>::cast_dynamic(canvas_item);
     if(!canvas_text)
     {
-      std::cerr << G_STRFUNC << ": The canvas item is not of the expected type. Instead it is of type." << 
std::endl;
+      std::cerr << G_STRFUNC << ": The canvas item is not of the expected type. Instead it is of type.\n";
       return;
     }
 
@@ -1057,7 +1057,7 @@ Base_DB::type_vecConstLayoutFields Canvas_PrintLayout::get_portal_fields_to_show
 {
   const auto document = get_document();
   if(!document)
-    std::cerr << G_STRFUNC << ": document is NULL." << std::endl;
+    std::cerr << G_STRFUNC << ": document is NULL.\n";
 
   if(document && portal)
   {
@@ -1212,7 +1212,7 @@ Glib::RefPtr<CanvasLayoutItem> Canvas_PrintLayout::move_items_down(double y_star
       Glib::RefPtr<CanvasLayoutItem>::cast_dynamic(child);
     if(!derived)
     {
-      std::cout << "debug: not derived" << std::endl;
+      std::cout << "debug: not derived\n";
       continue;
     }
 
diff --git a/glom/print_layout/print_layout_utils.cc b/glom/print_layout/print_layout_utils.cc
index 1e01528..0227dd7 100644
--- a/glom/print_layout/print_layout_utils.cc
+++ b/glom/print_layout/print_layout_utils.cc
@@ -369,20 +369,20 @@ void do_print_layout(const std::shared_ptr<const PrintLayout>& print_layout, con
 {
   if(!print_layout)
   {
-    std::cerr << G_STRFUNC << ": print_layout was null" << std::endl;
+    std::cerr << G_STRFUNC << ": print_layout was null\n";
     return;
   }
   
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document was null" << std::endl;
+    std::cerr << G_STRFUNC << ": document was null\n";
     return;
   }
   
   //TODO: All this to be null when we allow that in Gtk::PrintOperation::run().
   if(!transient_for)
   {
-    std::cerr << G_STRFUNC << ":  transient_for was null" << std::endl;
+    std::cerr << G_STRFUNC << ":  transient_for was null\n";
     return;
   }
 
diff --git a/glom/print_layout/printoperation_printlayout.cc b/glom/print_layout/printoperation_printlayout.cc
index 535d5f0..e7e4988 100644
--- a/glom/print_layout/printoperation_printlayout.cc
+++ b/glom/print_layout/printoperation_printlayout.cc
@@ -46,7 +46,7 @@ void PrintOperationPrintLayout::on_begin_print(
 
 bool PrintOperationPrintLayout::on_paginate(const Glib::RefPtr<Gtk::PrintContext>& print_context)
 {
-  //std::cout << "PrintOperationPrintLayout::on_paginate" << std::endl;
+  //std::cout << "PrintOperationPrintLayout::on_paginate\n";
 
   if(!m_canvas)
     return false;
diff --git a/glom/python_embed/glom_python.cc b/glom/python_embed/glom_python.cc
index 0274d23..9318b69 100644
--- a/glom/python_embed/glom_python.cc
+++ b/glom/python_embed/glom_python.cc
@@ -91,7 +91,7 @@ static Glib::ustring get_traceback()
 
   if(!traceback)
   {
-    std::cerr << G_STRFUNC << ": traceback = 0" << std::endl;
+    std::cerr << G_STRFUNC << ": traceback = 0\n";
   }
 
   PyErr_NormalizeException(&type, &value, &traceback);
@@ -118,7 +118,7 @@ static Glib::ustring get_traceback()
 
 static void ShowTrace()
 {
-    std::cerr << G_STRFUNC << ": Glom: Python Error:" << std::endl << get_traceback() << std::endl;
+    std::cerr << G_STRFUNC << ": Glom: Python Error:\n" << get_traceback() << std::endl;
 
 }
 
@@ -176,7 +176,7 @@ static boost::python::object glom_python_call(Field::glom_field_type result_type
   const boost::python::object& param1,
   const boost::python::object& param2 = boost::python::object())
 {
-  //std::cout << "glom_evaluate_python_function_implementation()" << std::endl;
+  //std::cout << "glom_evaluate_python_function_implementation()\n";
   //for(const auto& item : field_values)
   //{
   //  std::cout << "  field_value: name=" << iter->first << ", value=" << iter->second.to_string() << 
std::endl;
@@ -218,7 +218,7 @@ static boost::python::object glom_python_call(Field::glom_field_type result_type
   //boost::python::dict pDict = pMain.attr("__dict__"); //TODO: Does boost::python have an equivalent for 
PyModule_GetDict()?
   if(!pDict)
   {
-     std::cerr << G_STRFUNC << ": pDict is null" << std::endl;
+     std::cerr << G_STRFUNC << ": pDict is null\n";
      error_message = get_traceback();
      return boost::python::object();
   }
@@ -276,7 +276,7 @@ static boost::python::object glom_python_call(Field::glom_field_type result_type
   }
   catch(const boost::python::error_already_set& ex)
   {
-    std::cerr << G_STRFUNC << ": Glom: boost::python::eval() threw boost::python_error_already_set." << 
std::endl;
+    std::cerr << G_STRFUNC << ": Glom: boost::python::eval() threw boost::python_error_already_set.\n";
     HandlePythonError();
   }
   */
@@ -292,14 +292,14 @@ static boost::python::object glom_python_call(Field::glom_field_type result_type
   }
   catch(const boost::python::error_already_set& ex)
   {
-    std::cerr << G_STRFUNC << ":  boost::python::exec() threw error_already_set when using text= " << 
std::endl << func_def << std::endl;
+    std::cerr << G_STRFUNC << ":  boost::python::exec() threw error_already_set when using text= \n" << 
func_def << std::endl;
     error_message = get_traceback();
     return boost::python::object();
   }
 
   if(!pyValue.ptr())
   {
-    std::cerr << G_STRFUNC << ": boost::python::exec failed." << std::endl;
+    std::cerr << G_STRFUNC << ": boost::python::exec failed.\n";
     error_message = get_traceback();
     return boost::python::object();
   }
@@ -312,14 +312,14 @@ static boost::python::object glom_python_call(Field::glom_field_type result_type
   }
   catch(const boost::python::error_already_set& ex)
   {
-    std::cerr << G_STRFUNC << ":  pDict[func_name] threw error_already_set when func_name= " << std::endl << 
func_name << std::endl;
+    std::cerr << G_STRFUNC << ":  pDict[func_name] threw error_already_set when func_name= \n" << func_name 
<< std::endl;
     error_message = get_traceback();
     return boost::python::object();
   }
 
   if(!pFunc.ptr())
   {
-    std::cerr << G_STRFUNC << ": pDict[func_name] failed." << std::endl;
+    std::cerr << G_STRFUNC << ": pDict[func_name] failed.\n";
     HandlePythonError();
     return boost::python::object();
   }
@@ -347,7 +347,7 @@ static boost::python::object glom_python_call(Field::glom_field_type result_type
   }
   catch(const boost::python::error_already_set& ex)
   {
-    std::cerr << G_STRFUNC << ": Glom: Exception caught from pFunc(objRecord). func_name=" << std::endl << 
func_name << std::endl;
+    std::cerr << G_STRFUNC << ": Glom: Exception caught from pFunc(objRecord). func_name=\n" << func_name << 
std::endl;
     error_message = get_traceback();
     //std::cerr << G_STRFUNC << ":   traceback=" << error_message << std::endl;
   }
@@ -460,7 +460,7 @@ Gnome::Gda::Value glom_evaluate_python_function_implementation(Field::glom_field
     valueResult = Gnome::Gda::Value(&value);
     if(valueResult.get_value_type() == 0)
     {
-      std::cerr << G_STRFUNC << ": valueResult (before convert_value()) has a GType of 0 before 
convert_value()." << std::endl;
+      std::cerr << G_STRFUNC << ": valueResult (before convert_value()) has a GType of 0 before 
convert_value().\n";
     }
 
     //Make sure that the value is of the expected Gda type:
@@ -468,7 +468,7 @@ Gnome::Gda::Value glom_evaluate_python_function_implementation(Field::glom_field
     valueResult = Glom::Conversions::convert_value(valueResult, result_type);
     if(valueResult.get_value_type() == 0)
     {
-      std::cerr << G_STRFUNC << ": valueResult has a GType of 0 after convert_value()." << std::endl;
+      std::cerr << G_STRFUNC << ": valueResult has a GType of 0 after convert_value().\n";
     }
 
     //std::cout << "debug: " << G_STRFUNC << ": valueResult Gda type=" << 
g_type_name(valueResult.get_value_type()) << std::endl;
@@ -499,7 +499,7 @@ Gnome::Gda::Value glom_evaluate_python_function_implementation(Field::glom_field
       }
       catch(const boost::python::error_already_set& ex)
       {
-        std::cerr << G_STRFUNC << ": Glom: Exception caught from boost::python::extract() while converting 
result to a const char*." << std::endl;
+        std::cerr << G_STRFUNC << ": Glom: Exception caught from boost::python::extract() while converting 
result to a const char*.\n";
         ShowTrace();
         return valueResult;
       }
diff --git a/glom/utility_widgets/adddel/adddel.cc b/glom/utility_widgets/adddel/adddel.cc
index d024b6b..30f5cf1 100644
--- a/glom/utility_widgets/adddel/adddel.cc
+++ b/glom/utility_widgets/adddel/adddel.cc
@@ -717,7 +717,7 @@ void AddDel::construct_specified_columns()
     }
     else
     {
-      std::cerr << G_STRFUNC << ": Leaking a Gtk::TreeModelColumn<>." << std::endl;
+      std::cerr << G_STRFUNC << ": Leaking a Gtk::TreeModelColumn<>.\n";
     }
 
     ++model_column_index;
@@ -734,7 +734,7 @@ void AddDel::set_value(const Gtk::TreeModel::iterator& iter, guint col, const Gn
   {
     case(AddDelColumnInfo::enumStyles::Boolean):
     {
-      std::cerr << G_STRFUNC << ": boolean column being set as bool." << std::endl;
+      std::cerr << G_STRFUNC << ": boolean column being set as bool.\n";
       set_value(iter, col, value.get_bool());
       break;
     }
@@ -752,7 +752,7 @@ void AddDel::set_value(const Gtk::TreeModel::iterator& iter, guint col, const Gl
   InnerIgnore innerIgnore(this);
 
   if(!m_refListStore)
-    std::cerr << G_STRFUNC << ": No model." << std::endl;
+    std::cerr << G_STRFUNC << ": No model.\n";
   else
   {
     Gtk::TreeModel::Row treerow = *iter;
@@ -802,7 +802,7 @@ void AddDel::set_value(const Gtk::TreeModel::iterator& iter, guint col, bool bVa
   InnerIgnore innerIgnore(this);
 
   if(!m_refListStore)
-    std::cerr << G_STRFUNC << ": No model." << std::endl;
+    std::cerr << G_STRFUNC << ": No model.\n";
   else
   {
     Gtk::TreeModel::Row treerow = *iter;
diff --git a/glom/utility_widgets/canvas/canvas_group_grid.cc 
b/glom/utility_widgets/canvas/canvas_group_grid.cc
index 66a36eb..932b410 100644
--- a/glom/utility_widgets/canvas/canvas_group_grid.cc
+++ b/glom/utility_widgets/canvas/canvas_group_grid.cc
@@ -325,7 +325,7 @@ void CanvasGroupGrid::set_rules_visibility(bool visible)
   if(m_grid_rules_group)
     m_grid_rules_group->property_visibility() = (visible ? Goocanvas::ITEM_VISIBLE : 
Goocanvas::ITEM_INVISIBLE);
   else
-    std::cerr << G_STRFUNC << ": m_grid_rules_group was null." << std::endl;
+    std::cerr << G_STRFUNC << ": m_grid_rules_group was null.\n";
 
   //Make sure that the gris is below the rules, so that the rules are visible:
   if(m_grid_lines && m_grid_rules_group)
diff --git a/glom/utility_widgets/canvas/canvas_group_movable.cc 
b/glom/utility_widgets/canvas/canvas_group_movable.cc
index 857eb84..42870d7 100644
--- a/glom/utility_widgets/canvas/canvas_group_movable.cc
+++ b/glom/utility_widgets/canvas/canvas_group_movable.cc
@@ -136,7 +136,7 @@ void CanvasGroupMovable::set_width_height(double width, double height)
 
 void CanvasGroupMovable::set_grid(const Glib::RefPtr<const CanvasGroupGrid>& grid)
 {
-  std::cout << "CanvasGroupMovable::set_grid" << std::endl;
+  std::cout << "CanvasGroupMovable::set_grid\n";
 
   //Call the base class:
   CanvasItemMovable::set_grid(grid);
@@ -203,7 +203,7 @@ void CanvasGroupMovable::snap_position_one_corner(Corners corner, double& x, dou
 
 void CanvasGroupMovable::snap_position(double& x, double& y) const
 {
-  //std::cout << "CanvasGroupMovable::snap_position" << std::endl;
+  //std::cout << "CanvasGroupMovable::snap_position\n";
 
   double offset_x_min = 0;
   double offset_y_min = 0;
diff --git a/glom/utility_widgets/canvas/canvas_group_resizable.cc 
b/glom/utility_widgets/canvas/canvas_group_resizable.cc
index e5985a4..9bcc848 100644
--- a/glom/utility_widgets/canvas/canvas_group_resizable.cc
+++ b/glom/utility_widgets/canvas/canvas_group_resizable.cc
@@ -212,7 +212,7 @@ void CanvasGroupResizable::set_outline_visible(bool visible)
 {
   if(!m_group_outline)
   {
-    std::cerr << G_STRFUNC << ": m_group_outline was null." << std::endl;
+    std::cerr << G_STRFUNC << ": m_group_outline was null.\n";
     return;
   }
   
@@ -380,7 +380,7 @@ void CanvasGroupResizable::set_child(const Glib::RefPtr<CanvasItemMovable>& chil
     item->remove();
   }
 
-  //std::cout << "DEBUG: CanvasGroupResizable::set_child() start" << std::endl;
+  //std::cout << "DEBUG: CanvasGroupResizable::set_child() start\n";
   if(!child)
     return;
 
@@ -727,7 +727,7 @@ bool CanvasGroupResizable::on_child_button_press_event(const Glib::RefPtr<Goocan
 
 bool CanvasGroupResizable::on_child_motion_notify_event(const Glib::RefPtr<Goocanvas::Item>& target, 
GdkEventMotion* event)
 { 
-  //std::cout << "CanvasGroupResizable::on_motion_notify_event()" << std::endl;
+  //std::cout << "CanvasGroupResizable::on_motion_notify_event()\n";
 
   const bool result = CanvasItemMovable::on_motion_notify_event(target, event);
   
@@ -798,7 +798,7 @@ bool CanvasGroupResizable::on_rect_enter_notify_event(const Glib::RefPtr<Goocanv
 
 bool CanvasGroupResizable::on_rect_leave_notify_event(const Glib::RefPtr<Goocanvas::Item>& /* target */, 
GdkEventCrossing* /* event */)
 {
-  //std::cout << "CanvasGroupResizable::on_rect_leave_notify_event" << std::endl;
+  //std::cout << "CanvasGroupResizable::on_rect_leave_notify_event\n";
 
   //Glib::RefPtr<CanvasItemMovable> target_movable = CanvasItemMovable::cast_to_movable(target);
   //Hide the manipulators if we are outside of the main area,
diff --git a/glom/utility_widgets/canvas/canvas_image_movable.cc 
b/glom/utility_widgets/canvas/canvas_image_movable.cc
index b9078d5..1530050 100644
--- a/glom/utility_widgets/canvas/canvas_image_movable.cc
+++ b/glom/utility_widgets/canvas/canvas_image_movable.cc
@@ -171,7 +171,7 @@ void CanvasImageMovable::scale_to_size()
   auto canvas = get_canvas();
   if(!canvas)
   {
-    std::cerr << G_STRFUNC << ": canvas is null" << std::endl;
+    std::cerr << G_STRFUNC << ": canvas is null\n";
     return;
   }
   
diff --git a/glom/utility_widgets/canvas/canvas_item_movable.cc 
b/glom/utility_widgets/canvas/canvas_item_movable.cc
index b1bfb22..29888b2 100644
--- a/glom/utility_widgets/canvas/canvas_item_movable.cc
+++ b/glom/utility_widgets/canvas/canvas_item_movable.cc
@@ -71,7 +71,7 @@ CanvasItemMovable::CanvasItemMovable()
 
 bool CanvasItemMovable::on_button_press_event(const Glib::RefPtr<Goocanvas::Item>& target, GdkEventButton* 
event)
 {
-  //std::cout << G_STRFUNC << ": DEBUG" << std::endl;
+  //std::cout << G_STRFUNC << ": DEBUG\n";
 
   m_shift_click = false;
 
@@ -198,7 +198,7 @@ bool CanvasItemMovable::on_motion_notify_event(const Glib::RefPtr<Goocanvas::Ite
 
 bool CanvasItemMovable::on_button_release_event(const Glib::RefPtr<Goocanvas::Item>& target, GdkEventButton* 
event)
 {
-  //std::cout << G_STRFUNC << ": DEBUG" << std::endl;
+  //std::cout << G_STRFUNC << ": DEBUG\n";
 
   if(!m_allow_vertical_movement && !m_allow_horizontal_movement)
     return false; // Not handled. Let it be handled by an item lower in the z order, or a parent group, if 
any.
@@ -313,7 +313,7 @@ void CanvasItemMovable::snap_position(double& x, double& y) const
     m_grid->snap_position(x, y);
   //else
   //{
-  //  std::cout << "debug: " << G_STRFUNC << ": m_grid is NULL" << std::endl;
+  //  std::cout << "debug: " << G_STRFUNC << ": m_grid is NULL\n";
   //}
 }
 
diff --git a/glom/utility_widgets/canvas/canvas_table_movable.cc 
b/glom/utility_widgets/canvas/canvas_table_movable.cc
index fea7836..63ff486 100644
--- a/glom/utility_widgets/canvas/canvas_table_movable.cc
+++ b/glom/utility_widgets/canvas/canvas_table_movable.cc
@@ -74,7 +74,7 @@ void CanvasTableMovable::set_width_height(double width, double height)
 {
   if(width == -1)
   {
-    std::cout << "debug: " << G_STRFUNC << ": width is -1" << std::endl;
+    std::cout << "debug: " << G_STRFUNC << ": width is -1\n";
   }
 
   property_width() = width;
@@ -148,7 +148,7 @@ void CanvasTableMovable::snap_position_one_corner(Corners corner, double& x, dou
 
 void CanvasTableMovable::snap_position(double& x, double& y) const
 {
-  //std::cout << "CanvasTableMovable::snap_position" << std::endl;
+  //std::cout << "CanvasTableMovable::snap_position\n";
 
   double offset_x_min = 0;
   double offset_y_min = 0;
diff --git a/glom/utility_widgets/dialog_image_load_progress.cc 
b/glom/utility_widgets/dialog_image_load_progress.cc
index d094633..d83a15c 100644
--- a/glom/utility_widgets/dialog_image_load_progress.cc
+++ b/glom/utility_widgets/dialog_image_load_progress.cc
@@ -46,7 +46,7 @@ DialogImageLoadProgress::DialogImageLoadProgress(BaseObjectType* cobject, const
 
   if(!m_progress_bar)
   {
-    std::cerr << G_STRFUNC << ": Missing widgets from glade file for DialogImageLoadProgress" << std::endl;
+    std::cerr << G_STRFUNC << ": Missing widgets from glade file for DialogImageLoadProgress\n";
   }
 }
 
diff --git a/glom/utility_widgets/dialog_image_save_progress.cc 
b/glom/utility_widgets/dialog_image_save_progress.cc
index 3509b1c..d88180f 100644
--- a/glom/utility_widgets/dialog_image_save_progress.cc
+++ b/glom/utility_widgets/dialog_image_save_progress.cc
@@ -47,7 +47,7 @@ DialogImageSaveProgress::DialogImageSaveProgress(BaseObjectType* cobject, const
 
   if(!m_progress_bar)
   {
-    std::cerr << G_STRFUNC << ": Missing widgets from glade file for DialogImageSaveProgress" << std::endl;
+    std::cerr << G_STRFUNC << ": Missing widgets from glade file for DialogImageSaveProgress\n";
   }
 }
 
diff --git a/glom/utility_widgets/dialog_properties.cc b/glom/utility_widgets/dialog_properties.cc
index df36e0a..b571e22 100644
--- a/glom/utility_widgets/dialog_properties.cc
+++ b/glom/utility_widgets/dialog_properties.cc
@@ -72,7 +72,7 @@ void Dialog_Properties::widget_connect_changed_signal(Gtk::Widget* widget)
 {
   if(!widget)
   {
-    std::cerr << G_STRFUNC << ": widget is null." << std::endl;
+    std::cerr << G_STRFUNC << ": widget is null.\n";
     return;
   }
 
@@ -136,7 +136,7 @@ void Dialog_Properties::connect_each_widget(Gtk::Widget* widget)
 {
   if(!widget)
   {
-    std::cerr << G_STRFUNC << ": widget is null." << std::endl;
+    std::cerr << G_STRFUNC << ": widget is null.\n";
     return;
   }
 
diff --git a/glom/utility_widgets/flowtable.cc b/glom/utility_widgets/flowtable.cc
index dd4139f..ba28ad7 100644
--- a/glom/utility_widgets/flowtable.cc
+++ b/glom/utility_widgets/flowtable.cc
@@ -92,7 +92,7 @@ void FlowTable::delete_and_forget_hbox(Gtk::Box* hbox)
   const auto iter = Utils::find(m_list_hboxes, hbox);
   if(iter == m_list_hboxes.end())
   {
-    std::cerr << G_STRFUNC << ": hbox=" << hbox << " is not in our list of hboxes." << std::endl;
+    std::cerr << G_STRFUNC << ": hbox=" << hbox << " is not in our list of hboxes.\n";
     return;
   }
   
@@ -106,7 +106,7 @@ void FlowTable::delete_and_forget_hbox(Gtk::Box* hbox)
   else
   {
     //TODO: Fix this leak.
-    //std::cerr << G_STRFUNC << ": hbox=" << hbox << " has no parent. Not removing from SpreadTableDnd" << 
std::endl;
+    //std::cerr << G_STRFUNC << ": hbox=" << hbox << " has no parent. Not removing from SpreadTableDnd\n";
   }
 
   //Delete and forget it:
@@ -157,7 +157,7 @@ void FlowTable::insert(Gtk::Widget* first, Gtk::Widget* second, int index, bool
   }
   else
   {
-    std::cerr << G_STRFUNC << ": first was null" << std::endl;
+    std::cerr << G_STRFUNC << ": first was null\n";
   }
 }
 
diff --git a/glom/utility_widgets/imageglom.cc b/glom/utility_widgets/imageglom.cc
index 5b460b1..b69e793 100644
--- a/glom/utility_widgets/imageglom.cc
+++ b/glom/utility_widgets/imageglom.cc
@@ -356,7 +356,7 @@ void ImageGlom::show_image_data()
     const auto gda_binary = get_binary();
     if(!gda_binary || !gda_binary->data || !gda_binary->binary_length)
     {
-       std::cerr << G_STRFUNC << "Data was null or empty." << std::endl;
+       std::cerr << G_STRFUNC << "Data was null or empty.\n";
       return;
     }
     
@@ -368,7 +368,7 @@ void ImageGlom::show_image_data()
     const auto uri = save_to_temp_file(false /* don't show progress */);
     if(uri.empty())
     {
-      std::cerr << G_STRFUNC << "Could not save temp file to show in the EvView." << std::endl;
+      std::cerr << G_STRFUNC << "Could not save temp file to show in the EvView.\n";
     }
   
     EvJob *job = ev_job_load_new(uri.c_str());
@@ -460,7 +460,7 @@ Glib::RefPtr<Gdk::Pixbuf> ImageGlom::get_scaled_image()
       if( !pixbuf_in_image || !pixbuf_scaled || (pixbuf_in_image->get_height() != 
pixbuf_scaled->get_height()) || (pixbuf_in_image->get_width() != pixbuf_scaled->get_width()) )
       {
         /*
-        std::cout << "get_scale(): returning scaled" << std::endl;
+        std::cout << "get_scale(): returning scaled\n";
         if(pixbuf_scaled)
         {
           std::cout << "scaled height=" << pixbuf_scaled->get_height() << ", scaled width=" << 
pixbuf_scaled->get_width() << std::endl;
@@ -479,7 +479,7 @@ Glib::RefPtr<Gdk::Pixbuf> ImageGlom::get_scaled_image()
     }
   }
   
-  //std::cout << "get_scaled(): returning original" << std::endl;
+  //std::cout << "get_scaled(): returning original\n";
   return pixbuf;
 }
 
@@ -496,7 +496,7 @@ void ImageGlom::on_menupopup_activate_open_file_with()
   const auto mime_type = get_mime_type();
   if(mime_type.empty())
   {
-    std::cerr << G_STRFUNC << ": mime_type is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": mime_type is empty.\n";
   }
   
   Gtk::AppChooserDialog dialog(mime_type);
@@ -509,7 +509,7 @@ void ImageGlom::on_menupopup_activate_open_file_with()
   auto app_info = dialog.get_app_info();
   if(!app_info)
   {
-    std::cerr << G_STRFUNC << ": app_info was null." << std::endl;
+    std::cerr << G_STRFUNC << ": app_info was null.\n";
   }
   
   open_with(app_info);
@@ -531,13 +531,13 @@ static void make_file_read_only(const Glib::ustring& uri)
   
   if(filepath.empty())
   {
-    std::cerr << G_STRFUNC << ": filepath is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": filepath is empty.\n";
   }
   
   const auto result = chmod(filepath.c_str(), S_IRUSR);
   if(result != 0)
   {
-    std::cerr << G_STRFUNC << ": chmod() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": chmod() failed.\n";
   }
   
   //Setting the attribute via gio gives us this exception:
@@ -559,7 +559,7 @@ static void make_file_read_only(const Glib::ustring& uri)
   
   if(!file_info)
   {
-    std::cerr << G_STRFUNC << ": : file_info is null" << std::endl;
+    std::cerr << G_STRFUNC << ": : file_info is null\n";
     return;
   }
   
@@ -586,7 +586,7 @@ Glib::ustring ImageGlom::save_to_temp_file(bool show_progress)
   Glib::ustring uri = Utils::get_temp_file_uri("glom_image");
   if(uri.empty())
   {
-    std::cerr << G_STRFUNC << ": : uri is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": : uri is empty.\n";
   }
   
   bool saved = false;
@@ -598,7 +598,7 @@ Glib::ustring ImageGlom::save_to_temp_file(bool show_progress)
   if(!saved)
   {
     uri = Glib::ustring();
-    std::cerr << G_STRFUNC << ": save_file() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": save_file() failed.\n";
   }
   else
   {
@@ -693,13 +693,13 @@ bool ImageGlom::save_file_sync(const Glib::ustring& uri)
   const auto gda_binary = get_binary();
   if(!gda_binary)
   {
-    std::cerr << G_STRFUNC << ": GdaBinary is null" << std::endl;
+    std::cerr << G_STRFUNC << ": GdaBinary is null\n";
     return false;
   }
     
   if(!gda_binary->data)
   {
-    std::cerr << G_STRFUNC << ": GdaBinary::data is null" << std::endl;
+    std::cerr << G_STRFUNC << ": GdaBinary::data is null\n";
     return false;
   }
 
@@ -809,7 +809,7 @@ void ImageGlom::on_clipboard_get(Gtk::SelectionData& selection_data, guint /* in
   const auto mime_type = get_mime_type();
   if(mime_type.empty())
   {
-    std::cerr << G_STRFUNC << ": mime_type is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": mime_type is empty.\n";
   }
   
   if(target == mime_type)
@@ -856,7 +856,7 @@ void ImageGlom::on_menupopup_activate_copy()
   const auto mime_type = get_mime_type();
   if(mime_type.empty())
   {
-    std::cerr << G_STRFUNC << ": mime_type is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": mime_type is empty.\n";
   }
   
   std::vector<Gtk::TargetEntry> listTargets;
@@ -963,7 +963,7 @@ void ImageGlom::popup_menu(guint button, guint32 activate_time)
 {
   if(!m_pMenuPopup_UserMode)
   {
-    std::cerr << G_STRFUNC << ": m_pMenuPopup_UserMode is null" << std::endl;
+    std::cerr << G_STRFUNC << ": m_pMenuPopup_UserMode is null\n";
     return;
   }
 
diff --git a/glom/utility_widgets/layoutwidgetbase.cc b/glom/utility_widgets/layoutwidgetbase.cc
index f08e63e..4a03c3b 100644
--- a/glom/utility_widgets/layoutwidgetbase.cc
+++ b/glom/utility_widgets/layoutwidgetbase.cc
@@ -100,7 +100,7 @@ void LayoutWidgetBase::apply_formatting(Gtk::Widget& widget, const std::shared_p
 
   if(!widget_to_change)
   {
-    std::cerr << G_STRFUNC << ": widget_to_change is null." << std::endl;
+    std::cerr << G_STRFUNC << ": widget_to_change is null.\n";
     return;
   }
 
diff --git a/glom/utility_widgets/layoutwidgetmenu.cc b/glom/utility_widgets/layoutwidgetmenu.cc
index 6322cc6..fe7cb82 100644
--- a/glom/utility_widgets/layoutwidgetmenu.cc
+++ b/glom/utility_widgets/layoutwidgetmenu.cc
@@ -61,7 +61,7 @@ void LayoutWidgetMenu::setup_menu(Gtk::Widget* widget)
 {
   if(!widget)
   {
-    std::cerr << G_STRFUNC << ": parent is NULL." << std::endl;
+    std::cerr << G_STRFUNC << ": parent is NULL.\n";
     return;
   }
 
@@ -156,7 +156,7 @@ void LayoutWidgetMenu::on_menupopup_activate_delete()
   if(!parent)
   {
     // Should never happen:
-    std::cerr << G_STRFUNC << ": this is not a Gtk::Widget" << std::endl;
+    std::cerr << G_STRFUNC << ": this is not a Gtk::Widget\n";
     return;
   }
 
diff --git a/glom/utility_widgets/layoutwidgetutils.cc b/glom/utility_widgets/layoutwidgetutils.cc
index 577ce80..79f50d3 100644
--- a/glom/utility_widgets/layoutwidgetutils.cc
+++ b/glom/utility_widgets/layoutwidgetutils.cc
@@ -63,7 +63,7 @@ void LayoutWidgetUtils::on_menu_delete_activate()
   if(!parent)
   {
     // Should never happen!
-    std::cerr << G_STRFUNC << ": LayoutWidgetUtils is no Gtk::Widget" << std::endl;
+    std::cerr << G_STRFUNC << ": LayoutWidgetUtils is no Gtk::Widget\n";
     return;
   }
 
@@ -93,7 +93,7 @@ void LayoutWidgetUtils::on_menu_delete_activate()
 void LayoutWidgetUtils::on_menu_properties_activate()
 {
   //This is not pure virtual, so we can easily use this base class in unit tests.
-  std::cerr << G_STRFUNC << ": Not imlemented. Derived classes should override this." << std::endl;
+  std::cerr << G_STRFUNC << ": Not imlemented. Derived classes should override this.\n";
 }
 
 #endif // !GLOM_ENABLE_CLIENT_ONLY
diff --git a/glom/utility_widgets/test_flowtable.cc b/glom/utility_widgets/test_flowtable.cc
index cbd952e..0fb89d2 100644
--- a/glom/utility_widgets/test_flowtable.cc
+++ b/glom/utility_widgets/test_flowtable.cc
@@ -86,7 +86,7 @@ static void clear_flowtable(Glom::FlowTable& flowtable)
 {
   flowtable.remove_all();
 
-  //std::cout << G_STRFUNC << ": debug 1" << std::endl;
+  //std::cout << G_STRFUNC << ": debug 1\n";
   for(const auto& widget : vec_child_widgets)
   {
     //std::cout << "  loop: widget=" << widget << std::endl;
diff --git a/glom/utils_ui.cc b/glom/utils_ui.cc
index 89ad327..35adb73 100644
--- a/glom/utils_ui.cc
+++ b/glom/utils_ui.cc
@@ -265,7 +265,7 @@ Glib::RefPtr<Gdk::Pixbuf> UiUtils::get_pixbuf_for_gda_value(const Gnome::Gda::Va
       {
         buffer_binary_length = 0;
         buffer_binary = 0;
-        std::cerr << G_STRFUNC << ": Failed to read BLOB data" << std::endl;
+        std::cerr << G_STRFUNC << ": Failed to read BLOB data\n";
       }
     }
     else
@@ -278,7 +278,7 @@ Glib::RefPtr<Gdk::Pixbuf> UiUtils::get_pixbuf_for_gda_value(const Gnome::Gda::Va
     {
       //typedef std::list<Gdk::PixbufFormat> type_list_formats;
       //const type_list_formats formats = Gdk::Pixbuf::get_formats();
-      //std::cout << "Debug: Supported pixbuf formats:" << std::endl;
+      //std::cout << "Debug: Supported pixbuf formats:\n";
       //for(const auto& item : formats)
       //{
       //  std::cout << " name=" << iter->get_name() << ", writable=" << iter->is_writable() << std::endl;
@@ -602,7 +602,7 @@ void UiUtils::treeview_delete_all_columns(Gtk::TreeView* treeview)
 
     if(weak_ptr)
     {
-      std::cerr << G_STRFUNC << ": The GtkTreeViewColumn was not destroyed as expected." << std::endl;
+      std::cerr << G_STRFUNC << ": The GtkTreeViewColumn was not destroyed as expected.\n";
     }
   }
 }
diff --git a/tests/glade_toplevels_instantiation.cc b/tests/glade_toplevels_instantiation.cc
index 60bf24e..478c736 100644
--- a/tests/glade_toplevels_instantiation.cc
+++ b/tests/glade_toplevels_instantiation.cc
@@ -99,7 +99,7 @@ int main(int argc, char* argv[])
     filepath = argv[1]; //Allow the user to specify a different XML file to parse.
   else
   {
-    std::cerr << G_STRFUNC << ": Usage: glade_toplevels_instantiation filepath" << std::endl;
+    std::cerr << G_STRFUNC << ": Usage: glade_toplevels_instantiation filepath\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/import/utils.cc b/tests/import/utils.cc
index 166cc4e..e2df280 100644
--- a/tests/import/utils.cc
+++ b/tests/import/utils.cc
@@ -13,7 +13,7 @@ static bool finished_parsing = true;
 bool check(const std::string& name, bool test, std::stringstream& report)
 {
   if(!test)
-    report << name << ": FAILED" << std::endl;
+    report << name << ": FAILED\n";
 
   return test;
 }
@@ -24,7 +24,7 @@ static Glib::ustring create_file_from_buffer(const char* input, guint input_size
   const auto file_uri = Glom::Utils::get_temp_file_uri("glom_import_testdata");
   if(file_uri.empty())
   {
-    std::cerr << G_STRFUNC << ": file_uri was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": file_uri was empty.\n";
     return std::string();
   }
 
diff --git a/tests/python/test_python_execute_func.cc b/tests/python/test_python_execute_func.cc
index 34b821b..05a1f3c 100644
--- a/tests/python/test_python_execute_func.cc
+++ b/tests/python/test_python_execute_func.cc
@@ -31,7 +31,7 @@ int main()
   }
   catch(const boost::python::error_already_set& ex)
   {
-    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set" << std::endl;
+    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/python/test_python_execute_func_bad_syntax.cc 
b/tests/python/test_python_execute_func_bad_syntax.cc
index 4f1ea3d..4df57d2 100644
--- a/tests/python/test_python_execute_func_bad_syntax.cc
+++ b/tests/python/test_python_execute_func_bad_syntax.cc
@@ -33,7 +33,7 @@ int main()
   }
   catch(const boost::python::error_already_set& ex)
   {
-    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set" << std::endl;
+    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/python/test_python_execute_func_change_result_type.cc 
b/tests/python/test_python_execute_func_change_result_type.cc
index fcdcad7..d00765f 100644
--- a/tests/python/test_python_execute_func_change_result_type.cc
+++ b/tests/python/test_python_execute_func_change_result_type.cc
@@ -33,7 +33,7 @@ int main()
   }
   catch(const boost::python::error_already_set& ex)
   {
-    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set" << std::endl;
+    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/python/test_python_execute_func_with_record.cc 
b/tests/python/test_python_execute_func_with_record.cc
index f1d5b71..35620dd 100644
--- a/tests/python/test_python_execute_func_with_record.cc
+++ b/tests/python/test_python_execute_func_with_record.cc
@@ -10,12 +10,12 @@
 
 static void on_startup_progress()
 {
-  std::cout << "Database startup progress" << std::endl;
+  std::cout << "Database startup progress\n";
 }
 
 static void on_cleanup_progress()
 {
-  std::cout << "Database cleanup progress" << std::endl;
+  std::cout << "Database cleanup progress\n";
 }
 
 void cleanup()
@@ -112,7 +112,7 @@ int main()
   }
   catch(const boost::python::error_already_set& ex)
   {
-    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set" << std::endl;
+    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/python/test_python_execute_func_with_record_field_types.cc 
b/tests/python/test_python_execute_func_with_record_field_types.cc
index 4e006c8..81aecbe 100644
--- a/tests/python/test_python_execute_func_with_record_field_types.cc
+++ b/tests/python/test_python_execute_func_with_record_field_types.cc
@@ -62,7 +62,7 @@ static bool get_field_result(const std::shared_ptr<Glom::Document>& document,
   }
   catch(const boost::python::error_already_set& ex)
   {
-    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set" << std::endl;
+    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set\n";
     return false;
   }
 
@@ -100,7 +100,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
 
@@ -118,7 +118,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     document->get_field_primary_key(table_name);
   if(!primary_key_field)
   {
-    std::cerr << G_STRFUNC << ": Failure: primary_key_field is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: primary_key_field is empty.\n";
     return false;
   }
 
@@ -131,7 +131,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
       primary_key_value);
   if(field_values.empty())
   {
-    std::cerr << G_STRFUNC << ": field_values was empty: " << std::endl;
+    std::cerr << G_STRFUNC << ": field_values was empty: \n";
     return false;
   }
 
diff --git a/tests/python/test_python_execute_script.cc b/tests/python/test_python_execute_script.cc
index 08894d4..255c5ce 100644
--- a/tests/python/test_python_execute_script.cc
+++ b/tests/python/test_python_execute_script.cc
@@ -98,7 +98,7 @@ int main()
   }
   catch(const boost::python::error_already_set& ex)
   {
-    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set" << std::endl;
+    std::cerr << G_STRFUNC << ": Exception: boost::python::error_already_set\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/python/test_python_module.cc b/tests/python/test_python_module.cc
index 2195624..fbdcd36 100644
--- a/tests/python/test_python_module.cc
+++ b/tests/python/test_python_module.cc
@@ -19,7 +19,7 @@ bool glom_python_module_is_available()
 
   if(!module_glom)
   {
-    std::cerr << "Glom: A python import of " << name << " failed." << std::endl;
+    std::cerr << "Glom: A python import of " << name << " failed.\n";
   }
 
   Py_XDECREF(module_glom);
@@ -39,7 +39,7 @@ bool gda_python_module_is_available()
 
   if(!module_glom)
   {
-    std::cerr << "Glom: A python import of " << name << " failed." << std::endl;
+    std::cerr << "Glom: A python import of " << name << " failed.\n";
   }
 
   Py_XDECREF(module_glom);
diff --git a/tests/test_conversions.cc b/tests/test_conversions.cc
index 0f6e529..bd7b949 100644
--- a/tests/test_conversions.cc
+++ b/tests/test_conversions.cc
@@ -32,7 +32,7 @@ static bool test_string_value(const Glib::ustring& str)
     Glom::Conversions::parse_value(field_type, str, success, true);
   if(!success)
   {
-    std::cerr << G_STRFUNC << ": parse_value() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": parse_value() failed.\n";
     return false;
   }
 
diff --git a/tests/test_document_load.cc b/tests/test_document_load.cc
index b9cf8bc..b5e5ad2 100644
--- a/tests/test_document_load.cc
+++ b/tests/test_document_load.cc
@@ -91,7 +91,7 @@ static std::shared_ptr<const Glom::LayoutItem_Portal> get_portal_from_details_la
     document->get_data_layout_groups("details", table_name);
   if(groups.empty())
   {
-    std::cerr << G_STRFUNC << ": groups is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": groups is empty.\n";
   }
   
   for(const auto& group : groups)
@@ -261,7 +261,7 @@ int main()
   const auto module_names = document->get_library_module_names();
   if(!module_names.empty()) //TODO: Test a document that actually has some?
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected library module names." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected library module names.\n";
     return false;
   }
 
@@ -271,32 +271,32 @@ int main()
     document->get_print_layout_names("contacts");
   if(print_layout_names.size() != 1)
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected number of print layouts." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected number of print layouts.\n";
     return false;
   }
 
   if(!contains(print_layout_names, "contact_details"))
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not find the expected print layout name." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not find the expected print layout name.\n";
     return false;
   }
   
   const auto print_layout = document->get_print_layout("contacts", "contact_details");
   if(!print_layout)
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not get an expected print layout." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not get an expected print layout.\n";
     return false;
   }
   
   if(print_layout->get_title_original() != "Contact Details")
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected print layout title." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected print layout title.\n";
     return false;
   }
   
   if(!print_layout->get_layout_group())
   {
-    std::cerr << G_STRFUNC << ": Failure: The print layout has no layout group." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The print layout has no layout group.\n";
     return false;
   }
 
@@ -305,32 +305,32 @@ int main()
     document->get_report_names("contacts");
   if(report_names.size() != 2)
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected number of reports." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected number of reports.\n";
     return false;
   }
 
   if(!contains(report_names, "by_country"))
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not find the expected report name." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not find the expected report name.\n";
     return false;
   }
 
   const auto report = document->get_report("contacts", "by_country_by_town");
   if(!report)
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not get an expected report." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not get an expected report.\n";
     return false;
   }
   
   if(report->get_title_original() != "By Country, By Town")
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected report title." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected report title.\n";
     return false;
   }
   
   if(!report->get_layout_group())
   {
-    std::cerr << G_STRFUNC << ": Failure: The report has no layout group." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The report has no layout group.\n";
     return false;
   }
 
@@ -355,13 +355,13 @@ int main()
   //Test navigation:
   if(!needs_navigation(document, "scenes", "location_id"))
   {
-    std::cerr << G_STRFUNC << ": Failure: DbUtils::layout_field_should_have_navigation() did not return the 
expected result." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: DbUtils::layout_field_should_have_navigation() did not return the 
expected result.\n";
     return false;
   }
 
   if(needs_navigation(document, "scenes", "description"))
   {
-    std::cerr << G_STRFUNC << ": Failure: DbUtils::layout_field_should_have_navigation() did not return the 
expected result." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: DbUtils::layout_field_should_have_navigation() did not return the 
expected result.\n";
     return false;
   }
 
@@ -374,7 +374,7 @@ int main()
     get_portal_from_details_layout(document, "scenes", portal_relationship_name);
   if(!portal)
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not get the portal from the layout." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not get the portal from the layout.\n";
     return false;
   }
 
@@ -390,7 +390,7 @@ int main()
 
   if(!navigation_relationship)
   {
-    std::cerr << G_STRFUNC << ": Failure: get_suitable_table_to_view_details() returned an empty 
navigation_relationship." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: get_suitable_table_to_view_details() returned an empty 
navigation_relationship.\n";
     return false;
   }
 
diff --git a/tests/test_document_load_and_change.cc b/tests/test_document_load_and_change.cc
index baf64d4..baa2166 100644
--- a/tests/test_document_load_and_change.cc
+++ b/tests/test_document_load_and_change.cc
@@ -103,14 +103,14 @@ int main()
   //Check that the original field name is not known to the document:
   if(document->get_field(table_name, field_name_original))
   {
-    std::cerr << G_STRFUNC << ": Failure: The document should have forgotten about the original field name." 
<< std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The document should have forgotten about the original field 
name.\n";
     return false;
   }
 
   //Check that the new field name is known to the document:
   if(!(document->get_field(table_name, field_name_new)))
   {
-    std::cerr << G_STRFUNC << ": Failure: The document does not know about the new field name." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The document does not know about the new field name.\n";
     return false;
   }
 
@@ -118,20 +118,20 @@ int main()
   auto relationship = document->get_relationship("invoice_lines", "products");
   if(!relationship)
   {
-    std::cerr << G_STRFUNC << ": Failure: The relationship could not be found in the document." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The relationship could not be found in the document.\n";
     return false;
   }
 
   if(relationship->get_to_field() == field_name_original)
   {
-    std::cerr << G_STRFUNC << ": Failure: The relationship still uses the original field name." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The relationship still uses the original field name.\n";
     return false;
   }
 
   //Check that the original field name is no longer used on a layout:
   if(field_is_on_a_layout(document, table_name, field_name_original))
   {
-    std::cerr << G_STRFUNC << ": Failure: The original field name is still used on a layout." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The original field name is still used on a layout.\n";
     return false;
   }
 
@@ -144,13 +144,13 @@ int main()
       relationship_name_original, relationship_name_new);
     if(document->get_relationship(table_name, relationship_name_original))
     {
-      std::cerr << G_STRFUNC << ": Failure: The original relationship name still exists." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: The original relationship name still exists.\n";
       return false;
     }
 
     if(!document->get_relationship(table_name, relationship_name_new))
     {
-      std::cerr << G_STRFUNC << ": Failure: The new relationship name does not exist." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: The new relationship name does not exist.\n";
       return false;
     }
 
@@ -160,7 +160,7 @@ int main()
     g_assert(field_on_layout);
     if(field_on_layout->get_relationship_name() != relationship_name_new)
     {
-      std::cerr << G_STRFUNC << ": Failure: A layout item does not use the new relationship name as 
expected." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: A layout item does not use the new relationship name as 
expected.\n";
       return false;
     }
   }
@@ -169,7 +169,7 @@ int main()
   document->remove_field("publisher", "publisher_id");
   if(field_is_on_a_layout(document, "publisher", "publisher_id"))
   {
-    std::cerr << G_STRFUNC << ": Failure: The removed field name is still used on a layout." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The removed field name is still used on a layout.\n";
     return false;
   }
   
@@ -178,7 +178,7 @@ int main()
   relationship = document->get_relationship("invoice_lines", "products");
   if(relationship)
   {
-    std::cerr << G_STRFUNC << ": Failure: The removed relationship still exists." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The removed relationship still exists.\n";
     return false;
   }
   
@@ -187,27 +187,27 @@ int main()
   document->change_table_name("invoice_lines", table_renamed);
   if(document->get_table("invoice_lines"))
   {
-    std::cerr << G_STRFUNC << ": Failure: The renamed table still exists." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The renamed table still exists.\n";
     return false;
   }
   
   relationship = document->get_relationship("invoices", "invoice_lines");
   if(!relationship)
   {
-    std::cerr << G_STRFUNC << ": Failure: The expected relationship does not exist." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The expected relationship does not exist.\n";
     return false;
   }
 
   if(relationship->get_to_table() != table_renamed)
   {
-    std::cerr << G_STRFUNC << ": Failure: The relationship's to_table does have been renamed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The relationship's to_table does have been renamed.\n";
     return false;
   }
   
   document->remove_table("products");
   if(document->get_table("products"))
   {
-    std::cerr << G_STRFUNC << ": Failure: The removed table still exists." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The removed table still exists.\n";
     return false;
   }
 
@@ -217,7 +217,7 @@ int main()
     document->get_print_layout("contacts", "contact_details");
   if(!print_layout)
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not get an expected print layout." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not get an expected print layout.\n";
     return false;
   }
   
@@ -226,7 +226,7 @@ int main()
     document->get_print_layout("contacts", "contact_details");
   if(print_layout)
   {
-    std::cerr << G_STRFUNC << ": Failure: The removed print layotu still exists." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The removed print layotu still exists.\n";
     return false;
   }
   
diff --git a/tests/test_document_load_and_save.cc b/tests/test_document_load_and_save.cc
index 945c65e..d76f5ab 100644
--- a/tests/test_document_load_and_save.cc
+++ b/tests/test_document_load_and_save.cc
@@ -75,7 +75,7 @@ int main(int argc, char* argv[])
 
   if(argc <= 2 )
   {
-    std::cerr << G_STRFUNC << ": Usage: test_document_load_and_save filepath dtd_filepath" << std::endl;
+    std::cerr << G_STRFUNC << ": Usage: test_document_load_and_save filepath dtd_filepath\n";
     return EXIT_FAILURE;
   }
 
@@ -112,7 +112,7 @@ int main(int argc, char* argv[])
   const auto saved = document->save();
   if(!saved)
   {
-    std::cerr << G_STRFUNC << ": Document::save() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Document::save() failed.\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/test_fake_connection.cc b/tests/test_fake_connection.cc
index a210db7..e24166a 100644
--- a/tests/test_fake_connection.cc
+++ b/tests/test_fake_connection.cc
@@ -87,7 +87,7 @@ int main()
   g_assert(!query.empty());
   if(query.find("album_id") == Glib::ustring::npos)
   {
-    std::cerr << G_STRFUNC << ": Failed: The query did not contain an expected field name." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed: The query did not contain an expected field name.\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/test_field_file_format.cc b/tests/test_field_file_format.cc
index 1893e3f..c061b0e 100644
--- a/tests/test_field_file_format.cc
+++ b/tests/test_field_file_format.cc
@@ -67,7 +67,7 @@ int main()
     //https://bugzilla.gnome.org/show_bug.cgi?id=619445
     //This should tell us what the problem is:
     std::cerr << G_STRFUNC << ": exception from std::locale::global(std::locale(\"\")): " << ex.what() << 
std::endl;
-    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured." 
<< std::endl;
+    std::cerr << G_STRFUNC << ":   This can happen if the locale is not properly installed or configured.\n";
   }
 
 
diff --git a/tests/test_glade_derived_instantiation.cc b/tests/test_glade_derived_instantiation.cc
index eefce6a..1062a3a 100644
--- a/tests/test_glade_derived_instantiation.cc
+++ b/tests/test_glade_derived_instantiation.cc
@@ -115,7 +115,7 @@ bool instantiate_widget()
     std::cerr << G_STRFUNC << ": Test: The window/widget is too big: " << T_Widget::glade_id << std::endl;
     std::cerr << G_STRFUNC << ":   height=" << allocation.get_height() << std::endl; 
     std::cerr << G_STRFUNC << ":   width=" << allocation.get_width() << std::endl;
-    std::cerr << G_STRFUNC << ":   (Ignored, though it should be fixed.)" << std::endl; 
+    std::cerr << G_STRFUNC << ":   (Ignored, though it should be fixed.)\n"; 
     //TODO: Uncomment this when all the windows are small enough: exit(EXIT_FAILURE); //Make sure that our 
test case fails.
   }
   
diff --git a/tests/test_layout_item_field.cc b/tests/test_layout_item_field.cc
index ccb48ac..330817d 100644
--- a/tests/test_layout_item_field.cc
+++ b/tests/test_layout_item_field.cc
@@ -30,7 +30,7 @@ bool test_compare_empty_instances()
   auto layout_item2 = std::make_shared<Glom::LayoutItem_Field>();
   if(!layout_item1->is_same_field(layout_item2))
   {
-    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with empty instances." << 
std::endl;
+    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with empty instances.\n";
     return false;
   }
 
@@ -46,7 +46,7 @@ bool test_compare_same_named_instances()
   layout_item2->set_name("two");
   if(layout_item1->is_same_field(layout_item2))
   {
-    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with named field instances." 
<< std::endl;
+    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with named field 
instances.\n";
     return false;
   }
 
@@ -63,7 +63,7 @@ bool test_compare_same_named_instances_unrelated_differences()
   layout_item2->set_hidden(); //is_same_field() should ignore this.
   if(!layout_item1->is_same_field(layout_item2))
   {
-    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with named field instances 
with unrelated differences." << std::endl;
+    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with named field instances 
with unrelated differences.\n";
     return false;
   }
 
@@ -89,14 +89,14 @@ bool test_compare_same_named_instances_with_relationship()
 
   if(layout_item1->is_same_field(layout_item2))
   {
-    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with field instances with 
different relationships." << std::endl;
+    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with field instances with 
different relationships.\n";
     return false;
   }
 
   layout_item2->set_relationship(relationship1);
   if(!layout_item1->is_same_field(layout_item2))
   {
-    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with field instances with 
same relationships." << std::endl;
+    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with field instances with 
same relationships.\n";
     return false;
   }
 
@@ -122,7 +122,7 @@ bool test_compare_same_named_instances_with_related_relationship()
 
   if(layout_item1->is_same_field(layout_item2))
   {
-    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with field instances with 
different (one unset) related relationships." << std::endl;
+    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with field instances with 
different (one unset) related relationships.\n";
     return false;
   }
 
@@ -132,14 +132,14 @@ bool test_compare_same_named_instances_with_related_relationship()
 
   if(layout_item1->is_same_field(layout_item2))
   {
-    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with field instances with 
different related relationships." << std::endl;
+    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with field instances with 
different related relationships.\n";
     return false;
   }
 
   layout_item2->set_related_relationship(relationship_related1);
   if(!layout_item1->is_same_field(layout_item2))
   {
-    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with field instances with 
same related relationships." << std::endl;
+    std::cerr << G_STRFUNC << ": Glom::LayoutItem_Field::is_same_field() failed with field instances with 
same related relationships.\n";
     return false;
   }
 
diff --git a/tests/test_parsing_time.cc b/tests/test_parsing_time.cc
index 6a09ba3..39f2386 100644
--- a/tests/test_parsing_time.cc
+++ b/tests/test_parsing_time.cc
@@ -17,7 +17,7 @@ int main()
     Glom::Conversions::parse_time(time_text_input, success);
   if(!success)
   {
-    std::cerr << G_STRFUNC << ": Failed: parse_time() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed: parse_time() failed.\n";
     return EXIT_FAILURE;
   }
 
@@ -27,7 +27,7 @@ int main()
 
   if(!success)
   {
-    std::cerr << G_STRFUNC << ": Failed: parse_value() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed: parse_value() failed.\n";
     return EXIT_FAILURE;
   }
 
@@ -36,13 +36,13 @@ int main()
 
   if(parsed_time.hour != 13)
   {
-    std::cerr << G_STRFUNC << ": Failed: The parsed hour was " <<  parsed_time.hour << " instead of 13" << 
std::endl;
+    std::cerr << G_STRFUNC << ": Failed: The parsed hour was " <<  parsed_time.hour << " instead of 13\n";
     return EXIT_FAILURE; //Failed.
   }
 
   if(parsed_time.minute != 0)
   {
-    std::cerr << G_STRFUNC << ": Failed: The parsed minute was " <<  parsed_time.minute << " instead of 0" 
<< std::endl;
+    std::cerr << G_STRFUNC << ": Failed: The parsed minute was " <<  parsed_time.minute << " instead of 0\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/test_script_check_for_problems.cc b/tests/test_script_check_for_problems.cc
index 65ab148..2cb613a 100644
--- a/tests/test_script_check_for_problems.cc
+++ b/tests/test_script_check_for_problems.cc
@@ -30,7 +30,7 @@ int main()
 
   if(!Glom::Utils::script_check_for_pygtk2(script))
   {
-    std::cerr << G_STRFUNC << ": script_check_for_pygtk2() failed unexpectedly." << std::endl;
+    std::cerr << G_STRFUNC << ": script_check_for_pygtk2() failed unexpectedly.\n";
     return EXIT_FAILURE;
   }
 
@@ -39,7 +39,7 @@ int main()
 
   if(!Glom::Utils::script_check_for_pygtk2(script))
   {
-    std::cerr << G_STRFUNC << ": script_check_for_pygtk2() failed unexpectedly." << std::endl;
+    std::cerr << G_STRFUNC << ": script_check_for_pygtk2() failed unexpectedly.\n";
     return EXIT_FAILURE;
   }
 
@@ -50,7 +50,7 @@ int main()
 
   if(Glom::Utils::script_check_for_pygtk2(script))
   {
-    std::cerr << G_STRFUNC << ": script_check_for_pygtk2() succeeded unexpectedly." << std::endl;
+    std::cerr << G_STRFUNC << ": script_check_for_pygtk2() succeeded unexpectedly.\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/test_selfhosting_new_empty.cc b/tests/test_selfhosting_new_empty.cc
index 17d3fc2..b6588a8 100644
--- a/tests/test_selfhosting_new_empty.cc
+++ b/tests/test_selfhosting_new_empty.cc
@@ -31,7 +31,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
 
   if(!(test_create_and_selfhost_new_database(document, hosting_mode, "test_db")))
   {
-    std::cerr << G_STRFUNC << ": test_create_and_selfhost_new_database() failed" << std::endl;
+    std::cerr << G_STRFUNC << ": test_create_and_selfhost_new_database() failed\n";
     return false;
   }
   
diff --git a/tests/test_selfhosting_new_empty_change_sysprefs.cc 
b/tests/test_selfhosting_new_empty_change_sysprefs.cc
index 020d6e9..c912630 100644
--- a/tests/test_selfhosting_new_empty_change_sysprefs.cc
+++ b/tests/test_selfhosting_new_empty_change_sysprefs.cc
@@ -31,7 +31,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
 
   if(!(test_create_and_selfhost_new_database(document, hosting_mode, "test_db")))
   {
-    std::cerr << G_STRFUNC << ": test_create_and_selfhost_new_database() failed" << std::endl;
+    std::cerr << G_STRFUNC << ": test_create_and_selfhost_new_database() failed\n";
     return false;
   }
   
@@ -52,7 +52,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
       Glom::DbUtils::get_database_preferences(document);
     if(prefs_out != prefs_in)
     {
-      std::cerr << G_STRFUNC << ": The System Preferences read out were not the same as those written." << 
std::endl;
+      std::cerr << G_STRFUNC << ": The System Preferences read out were not the same as those written.\n";
       return false;
     }
   }
diff --git a/tests/test_selfhosting_new_empty_then_users.cc b/tests/test_selfhosting_new_empty_then_users.cc
index 35489d2..9492bc7 100644
--- a/tests/test_selfhosting_new_empty_then_users.cc
+++ b/tests/test_selfhosting_new_empty_then_users.cc
@@ -39,14 +39,14 @@ static bool test_add_group(const std::shared_ptr<Glom::Document>& document, cons
 {
   if(!Glom::DbUtils::add_group(document, group))
   {
-    std::cerr << G_STRFUNC << ": DbUtils::add_group() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": DbUtils::add_group() failed.\n";
     return false;
   }
 
   const auto group_list = Glom::Privs::get_database_groups();
   if(!contains(group_list, group))
   {
-    std::cerr << G_STRFUNC << ": Privs::get_database_groups() does not contain the expected group." << 
std::endl;
+    std::cerr << G_STRFUNC << ": Privs::get_database_groups() does not contain the expected group.\n";
     std::cerr << G_STRFUNC << ":   group: " << group << std::endl;
     return false;
   }
@@ -54,7 +54,7 @@ static bool test_add_group(const std::shared_ptr<Glom::Document>& document, cons
   const auto user_list = Glom::Privs::get_database_users(group);
   if(!user_list.empty())
   {
-    std::cerr << G_STRFUNC << ": The user list is not empty as expected.." << std::endl;
+    std::cerr << G_STRFUNC << ": The user list is not empty as expected..\n";
     return false;
   }
 
@@ -66,7 +66,7 @@ static bool test_add_user(const std::shared_ptr<Glom::Document>& document, const
   //Add an operator user, adding it to the group:
   if(!Glom::DbUtils::add_user(document, user, "somepassword", group))
   {
-    std::cerr << G_STRFUNC << ": DbUtils::add_user() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": DbUtils::add_user() failed.\n";
     test_selfhosting_cleanup();
     return false;
   }
@@ -74,7 +74,7 @@ static bool test_add_user(const std::shared_ptr<Glom::Document>& document, const
   const auto user_list = Glom::Privs::get_database_users(group);
   if(!contains(user_list, user))
   {
-    std::cerr << G_STRFUNC << ": Privs::get_database_users() does not contain the expected user:" << 
std::endl;
+    std::cerr << G_STRFUNC << ": Privs::get_database_users() does not contain the expected user:\n";
     std::cerr << G_STRFUNC << ":   group: " << group << std::endl;
     std::cerr << G_STRFUNC << ":   user: " << user << std::endl;
     return false;
@@ -125,7 +125,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   auto document = std::make_shared<Glom::Document>();
     if(!(test_create_and_selfhost_new_database(document, hosting_mode, "test_db")))
   {
-    std::cerr << G_STRFUNC << ": test_create_and_selfhost_new_database() failed" << std::endl;
+    std::cerr << G_STRFUNC << ": test_create_and_selfhost_new_database() failed\n";
     return false;
   }
 
@@ -149,7 +149,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   {
     if(!Glom::DbUtils::create_table_with_default_fields(document, table_name))
     {
-      std::cerr << G_STRFUNC << ": Failure: create_table_with_default_fields() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: create_table_with_default_fields() failed.\n";
       return false;
     }
   }
@@ -167,13 +167,13 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   const auto group_list_original = Glom::Privs::get_database_groups();
   if(group_list_original.empty())
   {
-    std::cerr << G_STRFUNC << ": Privs::get_database_groups() returned an empty list." << std::endl;
+    std::cerr << G_STRFUNC << ": Privs::get_database_groups() returned an empty list.\n";
     return false;
   }
 
   if(!contains(group_list_original, GLOM_STANDARD_GROUP_NAME_DEVELOPER))
   {
-    std::cerr << G_STRFUNC << ": Privs::get_database_groups() does not contain the developers group." << 
std::endl;
+    std::cerr << G_STRFUNC << ": Privs::get_database_groups() does not contain the developers group.\n";
     return false;
   }
 
diff --git a/tests/test_selfhosting_new_from_example.cc b/tests/test_selfhosting_new_from_example.cc
index c7a266b..c61fda9 100644
--- a/tests/test_selfhosting_new_from_example.cc
+++ b/tests/test_selfhosting_new_from_example.cc
@@ -33,13 +33,13 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_music_collection.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
   
   if(!test_example_musiccollection_data(document))
   {
-    std::cerr << G_STRFUNC << ": test_example_musiccollection_data() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": test_example_musiccollection_data() failed.\n";
     return false;
   }
 
diff --git a/tests/test_selfhosting_new_from_example_defaultvalues.cc 
b/tests/test_selfhosting_new_from_example_defaultvalues.cc
index c69c376..7480b49 100644
--- a/tests/test_selfhosting_new_from_example_defaultvalues.cc
+++ b/tests/test_selfhosting_new_from_example_defaultvalues.cc
@@ -33,7 +33,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
 
@@ -49,14 +49,14 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   auto field = document->get_field(table_name, "count");
   if(!field)
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not get field." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not get field.\n";
     return false;
   }
 
   Gnome::Gda::Value default_value = field->get_default_value();
   if(default_value.get_value_type() != GDA_TYPE_NUMERIC)
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected type of default value." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected type of default value.\n";
     std::cerr << "  type=" << g_type_name(default_value.get_value_type()) << std::endl;
     return false;
   }
@@ -79,14 +79,14 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   field = document->get_field(table_name, "website");
   if(!field)
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not get field." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not get field.\n";
     return false;
   }
 
   default_value = field->get_default_value();
   if(default_value.get_value_type() != G_TYPE_STRING)
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected type of default value." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected type of default value.\n";
     std::cerr << "  type=" << g_type_name(default_value.get_value_type()) << std::endl;
     return false;
   }
diff --git a/tests/test_selfhosting_new_from_example_float.cc 
b/tests/test_selfhosting_new_from_example_float.cc
index ec51396..3168a10 100644
--- a/tests/test_selfhosting_new_from_example_float.cc
+++ b/tests/test_selfhosting_new_from_example_float.cc
@@ -37,7 +37,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
   
@@ -45,7 +45,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   auto primary_key_field = document->get_field_primary_key(table_name);
   if(!primary_key_field)
   {
-    std::cerr << G_STRFUNC << ": Failure: primary_key_field is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: primary_key_field is empty.\n";
     return false;
   }
 
@@ -92,7 +92,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
 
   if(Glom::Conversions::get_double_for_gda_value_numeric(value) != 3.5l)
   {
-    std::cerr << G_STRFUNC << ": Failure: The value has an unexpected value: " << value.to_string() << " 
instead of 3.5" << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The value has an unexpected value: " << value.to_string() << " 
instead of 3.5\n";
     std::cerr << G_STRFUNC << ":     value as string: " << value.to_string() << std::endl;
     std::cerr << G_STRFUNC << ":     value GType: " << g_type_name(value.get_value_type()) << std::endl;
     return false;
diff --git a/tests/test_selfhosting_new_from_example_operator.cc 
b/tests/test_selfhosting_new_from_example_operator.cc
index d6b6f1a..63ffc09 100644
--- a/tests/test_selfhosting_new_from_example_operator.cc
+++ b/tests/test_selfhosting_new_from_example_operator.cc
@@ -57,14 +57,14 @@ static bool test(Glom::Document::HostingMode hosting_mode)
       test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
     if(!recreated)
     {
-      std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Recreation failed.\n";
       return false;
     }
 
     temp_file_uri = test_get_temp_file_uri();
     if(temp_file_uri.empty())
     {
-      std::cerr << G_STRFUNC << ": temp_file_uri is empty." << std::endl;
+      std::cerr << G_STRFUNC << ": temp_file_uri is empty.\n";
       return false;
     }
 
@@ -81,13 +81,13 @@ static bool test(Glom::Document::HostingMode hosting_mode)
       Glom::Privs::get_database_groups();
     if(!contains(group_list, operator_group_name))
     {
-      std::cerr << G_STRFUNC << ": The expected group was not found." << std::endl;
+      std::cerr << G_STRFUNC << ": The expected group was not found.\n";
       return false;
     }
 
     if(!Glom::DbUtils::add_user(document, operator_user, operator_password, operator_group_name))
     {
-      std::cerr << G_STRFUNC << ": DbUtils::add_user() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": DbUtils::add_user() failed.\n";
       test_selfhosting_cleanup();
       return false;
     }
@@ -97,7 +97,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
       Glom::DbUtils::get_table_names_from_database(true /* ignore system tables */);
     if(tables.empty())
     {
-      std::cerr << G_STRFUNC << ": get_table_names_from_database() failed for developer user." << std::endl;
+      std::cerr << G_STRFUNC << ": get_table_names_from_database() failed for developer user.\n";
       return false;
     }
 
@@ -120,7 +120,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
 
     if(!test_selfhost(document, operator_user, operator_password))
     {
-      std::cerr << G_STRFUNC << ": test_selfhost() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": test_selfhost() failed.\n";
       return false;
     }
 
@@ -130,13 +130,13 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     const auto field_types = connection_pool->get_field_types();
     if(!field_types)
     {
-      std::cerr << G_STRFUNC << ": get_field_types() returned null." << std::endl;
+      std::cerr << G_STRFUNC << ": get_field_types() returned null.\n";
       return false;
     }
 
     if(field_types->get_types_count() == 0)
     {
-      std::cerr << G_STRFUNC << ": get_field_types() returned no types." << std::endl;
+      std::cerr << G_STRFUNC << ": get_field_types() returned no types.\n";
       return false;
     }
 
@@ -146,13 +146,13 @@ static bool test(Glom::Document::HostingMode hosting_mode)
       Glom::DbUtils::get_table_names_from_database(true /* ignore system tables */);
     if(tables.empty())
     {
-      std::cerr << G_STRFUNC << ": get_table_names_from_database() failed for operator user." << std::endl;
+      std::cerr << G_STRFUNC << ": get_table_names_from_database() failed for operator user.\n";
       return false;
     }
 
     if(Glom::Privs::get_user_is_in_group(connection_pool->get_user(), GLOM_STANDARD_GROUP_NAME_DEVELOPER))
     {
-      std::cerr << G_STRFUNC << ": The operator user is in the developer group, but should not be." << 
std::endl;
+      std::cerr << G_STRFUNC << ": The operator user is in the developer group, but should not be.\n";
       return false;
     }
 
diff --git a/tests/test_selfhosting_new_from_example_strangepath.cc 
b/tests/test_selfhosting_new_from_example_strangepath.cc
index 8115fe1..7ed63f1 100644
--- a/tests/test_selfhosting_new_from_example_strangepath.cc
+++ b/tests/test_selfhosting_new_from_example_strangepath.cc
@@ -46,13 +46,13 @@ static bool test(Glom::Document::HostingMode hosting_mode)
       //hosting_mode, "path with space and \" quote and single ' quote and $ dollar sign and / forward slash 
and \\ backwards slash ");
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
   
   if(!test_example_musiccollection_data(document))
   {
-    std::cerr << G_STRFUNC << ": test_example_musiccollection_data() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": test_example_musiccollection_data() failed.\n";
     return false;
   }
 
diff --git a/tests/test_selfhosting_new_then_alter_table.cc b/tests/test_selfhosting_new_then_alter_table.cc
index 172fde2..7fd5343 100644
--- a/tests/test_selfhosting_new_then_alter_table.cc
+++ b/tests/test_selfhosting_new_then_alter_table.cc
@@ -37,31 +37,31 @@ static bool do_test(Glom::Document::HostingMode hosting_mode, const Glib::ustrin
     test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
   
   if(!Glom::DbUtils::create_table_with_default_fields(document, first_table_name))
   {
-    std::cerr << G_STRFUNC << ": Failure: create_table_with_default_fields() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: create_table_with_default_fields() failed.\n";
     return false;
   }
 
   if(!Glom::DbUtils::rename_table(first_table_name, renamed_table_name))
   {
-    std::cerr << G_STRFUNC << ": Failure: rename_table() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: rename_table() failed.\n";
     return false;
   }
 
   if(!Glom::DbUtils::drop_table(renamed_table_name))
   {
-    std::cerr << G_STRFUNC << ": Failure: drop_table() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: drop_table() failed.\n";
     return false;
   }
 
   const auto table_names = Glom::DbUtils::get_table_names_from_database();
   if(Glom::Utils::find_exists(table_names, renamed_table_name)) {
-    std::cerr << G_STRFUNC << ": Failure: The dropped table seems to still exist." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The dropped table seems to still exist.\n";
     return false;
   }
 
diff --git a/tests/test_selfhosting_new_then_backup_restore.cc 
b/tests/test_selfhosting_new_then_backup_restore.cc
index 1352e5f..60ef0a4 100644
--- a/tests/test_selfhosting_new_then_backup_restore.cc
+++ b/tests/test_selfhosting_new_then_backup_restore.cc
@@ -28,7 +28,7 @@
 
 static void on_backup_progress()
 {
-  std::cout << "Restore progress" << std::endl;
+  std::cout << "Restore progress\n";
 }
 
 
@@ -43,7 +43,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
       test_create_and_selfhost_from_example("example_music_collection.glom", document, hosting_mode);
     if(!recreated)
     {
-      std::cerr << G_STRFUNC << ": Recreation from the example failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Recreation from the example failed.\n";
       return false;
     }
 
@@ -53,7 +53,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
       sigc::ptr_fun(&on_backup_progress));
     if(backup_uri_tarball.empty())
     {
-      std::cerr << G_STRFUNC << ": Backup failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Backup failed.\n";
       return false;
     }
 
@@ -70,7 +70,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
         sigc::ptr_fun(&on_backup_progress));
     if(backup_glom_file_contents.empty())
     {
-      std::cerr << G_STRFUNC << ": Extraction from the backup file failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Extraction from the backup file failed.\n";
       return false;
     }
     
@@ -81,7 +81,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
       test_create_and_selfhost_from_data(backup_glom_file_contents, document, hosting_mode);
     if(!recreated)
     {
-      std::cerr << G_STRFUNC << ": Recreation from the backup failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Recreation from the backup failed.\n";
       return false;
     }
 
@@ -90,7 +90,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     /* TODO: Find out why this test fails, though it seems to work fine in the UI:
     if(!test_example_musiccollection_data(document))
     {
-      std::cerr << G_STRFUNC << ": test_example_musiccollection_data() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": test_example_musiccollection_data() failed.\n";
       return false;
     }
     */
@@ -107,7 +107,7 @@ int main()
 
   if(!test(Glom::Document::HostingMode::POSTGRES_SELF))
   {
-    std::cerr << G_STRFUNC << ": Failed with PostgreSQL" << std::endl;
+    std::cerr << G_STRFUNC << ": Failed with PostgreSQL\n";
     test_selfhosting_cleanup();
     return EXIT_FAILURE;
   }
@@ -115,7 +115,7 @@ int main()
   /* TODO: Make this work with sqlite too:
   if(!test(Glom::Document::HostingMode::SQLITE))
   {
-    std::cerr << G_STRFUNC << ": Failed with SQLite" << std::endl;
+    std::cerr << G_STRFUNC << ": Failed with SQLite\n";
     test_selfhosting_cleanup();
     return EXIT_FAILURE;
   }
diff --git a/tests/test_selfhosting_new_then_change_columns.cc 
b/tests/test_selfhosting_new_then_change_columns.cc
index 8578807..19eab7e 100644
--- a/tests/test_selfhosting_new_then_change_columns.cc
+++ b/tests/test_selfhosting_new_then_change_columns.cc
@@ -39,7 +39,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
   
@@ -48,14 +48,14 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   auto field_original = document->get_field(table_name, field_name_original);
   if(!field_original)
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not get field." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not get field.\n";
     return false;
   }
 
   auto field_new = Glom::glom_sharedptr_clone(field_original);
   if(!field_new)
   {
-    std::cerr << G_STRFUNC << ": Failure: field_new is null." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: field_new is null.\n";
     return false;
   }
   field_new->set_glom_type(Glom::Field::glom_field_type::TEXT);
@@ -63,7 +63,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   auto connection_pool = Glom::ConnectionPool::get_instance();
   if(!connection_pool)
   {
-    std::cerr << G_STRFUNC << ": Failure: connection_pool is null." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: connection_pool is null.\n";
     return false;
   }
 
@@ -75,7 +75,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     const auto test = connection_pool->change_column(table_name, field_original, field_new);
     if(!test)
     {
-      std::cerr << G_STRFUNC << ": Failure: change_column() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: change_column() failed.\n";
       return false;
     }
   }
@@ -93,7 +93,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     const auto test = connection_pool->change_column(table_name, field_original, field_new);
     if(!test)
     {
-      std::cerr << G_STRFUNC << ": Failure: change_column() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: change_column() failed.\n";
       return false;
     }
   }
@@ -111,7 +111,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     const auto test = connection_pool->change_column(table_name, field_original, field_new);
     if(!test)
     {
-      std::cerr << G_STRFUNC << ": Failure: change_column() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: change_column() failed.\n";
       return false;
     }
   }
@@ -129,7 +129,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     const auto test = connection_pool->change_column(table_name, field_original, field_new);
     if(!test)
     {
-      std::cerr << G_STRFUNC << ": Failure: change_column() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: change_column() failed.\n";
       return false;
     }
   }
@@ -170,7 +170,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     const auto test = connection_pool->add_column(table_name, field_numeric);
     if(!test)
     {
-      std::cerr << G_STRFUNC << ": Failure: add_column() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: add_column() failed.\n";
       return false;
     }
   }
diff --git a/tests/test_selfhosting_new_then_choices.cc b/tests/test_selfhosting_new_then_choices.cc
index 40b3fdb..da9d1d6 100644
--- a/tests/test_selfhosting_new_then_choices.cc
+++ b/tests/test_selfhosting_new_then_choices.cc
@@ -39,7 +39,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
   
@@ -49,7 +49,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     get_field_on_layout(document, table_name, table_name, "product_id");
   if(!field_with_choice)
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not get the field with choice from the layout." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not get the field with choice from the layout.\n";
     return false;
   }
 
@@ -57,7 +57,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     Glom::Utils::get_choice_values_all(document, field_with_choice);
   if(values_with_second.size() != 3)
   {
-    std::cerr << G_STRFUNC << ": Failure: There were an unexpected number of choices." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: There were an unexpected number of choices.\n";
     return false;
   }
   
@@ -65,7 +65,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     = *(values_with_second.begin());
   if(pair_values.second.size() != 1)
   {
-    std::cerr << G_STRFUNC << ": Failure: There were an unexpected number of field values in each choice." 
<< std::endl;
+    std::cerr << G_STRFUNC << ": Failure: There were an unexpected number of field values in each choice.\n";
     return false;
   }
 
diff --git a/tests/test_selfhosting_new_then_get_privs.cc b/tests/test_selfhosting_new_then_get_privs.cc
index 363cc63..bb23d7f 100644
--- a/tests/test_selfhosting_new_then_get_privs.cc
+++ b/tests/test_selfhosting_new_then_get_privs.cc
@@ -31,14 +31,14 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
   
   const auto groups = Glom::Privs::get_database_groups();
   if(groups.empty())
   {
-    std::cerr << G_STRFUNC << ": Failure: groups was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: groups was empty.\n";
     return false;
   }
 
@@ -46,7 +46,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   {
     if(group_name.empty())
     {
-      std::cerr << G_STRFUNC << ": Failure: group_name was empty." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: group_name was empty.\n";
       return false;
     }
 
@@ -54,7 +54,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     {
       if(user_name.empty())
       {
-        std::cerr << G_STRFUNC << ": Failure: user_name was empty." << std::endl;
+        std::cerr << G_STRFUNC << ": Failure: user_name was empty.\n";
         return false;
       }
 
@@ -73,7 +73,7 @@ int main()
   
   if(!test(Glom::Document::HostingMode::POSTGRES_SELF))
   {
-    std::cerr << G_STRFUNC << ": Failed with PostgreSQL" << std::endl;
+    std::cerr << G_STRFUNC << ": Failed with PostgreSQL\n";
     test_selfhosting_cleanup();
     return EXIT_FAILURE;
   }
@@ -81,7 +81,7 @@ int main()
   /* SQLite does not have this feature:
   if(!test(Glom::Document::HostingMode::SQLITE))
   {
-    std::cerr << G_STRFUNC << ": Failed with SQLite" << std::endl;
+    std::cerr << G_STRFUNC << ": Failed with SQLite\n";
     test_selfhosting_cleanup();
     return EXIT_FAILURE;
   }
diff --git a/tests/test_selfhosting_new_then_image.cc b/tests/test_selfhosting_new_then_image.cc
index bd36421..6ab94d8 100644
--- a/tests/test_selfhosting_new_then_image.cc
+++ b/tests/test_selfhosting_new_then_image.cc
@@ -39,7 +39,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
   
@@ -53,7 +53,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   const auto key_field = document->get_field(table_name, "contact_id");
   if(!key_field)
   {
-    std::cerr << G_STRFUNC << ": Failure: Could not get key field." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Could not get key field.\n";
     return false;
   }
 
@@ -69,7 +69,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   const auto rows_affected = Glom::DbUtils::query_execute(builder_set);
   if(!rows_affected)
   {
-    std::cerr << G_STRFUNC << ": Failure: UPDATE failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: UPDATE failed.\n";
     return false;
   }
 
@@ -87,7 +87,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     Glom::DbUtils::query_execute_select(builder_get);
   if(!test_model_expected_size(data_model, 1, 1))
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected data model size for main query." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected data model size for main query.\n";
     return false;
   }
 
@@ -118,7 +118,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     const auto read_all = gda_blob_op_read_all(const_cast<GdaBlobOp*>(blob->op), const_cast<GdaBlob*>(blob));
     if(!read_all)
     {
-      std::cerr << G_STRFUNC << ": Failure: gda_blob_op_read_all() failed." << std::endl;
+      std::cerr << G_STRFUNC << ": Failure: gda_blob_op_read_all() failed.\n";
       return false;
     }
 
@@ -127,14 +127,14 @@ static bool test(Glom::Document::HostingMode hosting_mode)
 
   if(!binary_read)
   {
-    std::cerr << G_STRFUNC << ": Failure: The value read's data was null." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The value read's data was null.\n";
     return false;
   }
 
   const auto binary_set = gda_value_get_binary(value_set.gobj());
   if(!binary_set)
   {
-    std::cerr << G_STRFUNC << ": Failure: The value read's data was null." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The value read's data was null.\n";
     return false;
   }
 
@@ -143,13 +143,13 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     std::cerr << G_STRFUNC << ": Failure: The value read's data length ("
       << binary_read->binary_length <<
       ") was not equal to that of the value set ("
-      << binary_set->binary_length << ")" << std::endl;
+      << binary_set->binary_length << ")\n";
     return false;
   }
 
   if(memcmp(binary_set->data, binary_read->data, binary_set->binary_length) != 0)
   {
-    std::cerr << G_STRFUNC << ": Failure: The value read was not equal to the value set." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The value read was not equal to the value set.\n";
     return false;
   }
 
diff --git a/tests/test_selfhosting_new_then_lookup.cc b/tests/test_selfhosting_new_then_lookup.cc
index 9942186..a7611be 100644
--- a/tests/test_selfhosting_new_then_lookup.cc
+++ b/tests/test_selfhosting_new_then_lookup.cc
@@ -71,7 +71,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
   
@@ -79,7 +79,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
   auto primary_key_field = document->get_field_primary_key(table_name);
   if(!primary_key_field)
   {
-    std::cerr << G_STRFUNC << ": Failure: primary_key_field is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: primary_key_field is empty.\n";
     return false;
   }
 
@@ -94,19 +94,19 @@ static bool test(Glom::Document::HostingMode hosting_mode)
 
   if(!contains_field(lookups, table_name, "product_price"))
   {
-    std::cerr << G_STRFUNC << ": Failure: Expected lookup field not found." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Expected lookup field not found.\n";
     return false;
   }
 
   if(!contains_field(lookups, table_name, "product_name"))
   {
-    std::cerr << G_STRFUNC << ": Failure: Expected lookup field not found." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Expected lookup field not found.\n";
     return false;
   }
 
   if(!contains_field(lookups, table_name, "vat_percentage"))
   {
-    std::cerr << G_STRFUNC << ": Failure: Expected lookup field not found." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Expected lookup field not found.\n";
     return false;
   }
 
@@ -116,62 +116,62 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     get_lookup_field(lookups, table_name, field_name, relationship);
   if(!layout_field)
   {
-    std::cerr << G_STRFUNC << ": Failure: The lookup field is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The lookup field is empty.\n";
     return false;
   }
  
   if(!relationship)
   {
-    std::cerr << G_STRFUNC << ": Failure: The lookup relationship is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The lookup relationship is empty.\n";
     return false;
   }
 
   if(relationship->get_to_table() != "products")
   {
-    std::cerr << G_STRFUNC << ": Failure: The relationship's to table is unexpected." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The relationship's to table is unexpected.\n";
     return false;
   }
 
   if(layout_field->get_table_used(table_name) != table_name)
   {
-    std::cerr << G_STRFUNC << ": Failure: The lookup field's table is unexpected" << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The lookup field's table is unexpected\n";
     return false;
   }
 
   if(layout_field->get_name() != field_name)
   {
-    std::cerr << G_STRFUNC << ": Failure: The lookup field's name is unexpected." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The lookup field's name is unexpected.\n";
     return false;
   }
 
   const auto field = layout_field->get_full_field_details();
   if(!field)
   {
-    std::cerr << G_STRFUNC << ": Failure: The lookup item's field is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The lookup item's field is empty.\n";
     return false;
   }
 
   if(field->get_name() != field_name)
   {
-    std::cerr << G_STRFUNC << ": Failure: The lookup item's field name is unexpected." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The lookup item's field name is unexpected.\n";
     return false;
   }
 
   if(!field->get_is_lookup())
   {
-    std::cerr << G_STRFUNC << ": Failure: The lookup item's field is not a lookup." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The lookup item's field is not a lookup.\n";
     return false;
   }
 
   if(field->get_lookup_field() != "price")
   {
-    std::cerr << G_STRFUNC << ": Failure: The lookup item's field's name is unexpected." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The lookup item's field's name is unexpected.\n";
     return false;
   }
 
   if(relationship != field->get_lookup_relationship())
   {
-    std::cerr << G_STRFUNC << ": Failure: The lookup item's field's relationship is not expected." << 
std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The lookup item's field's relationship is not expected.\n";
     return false;
   }
 
@@ -190,7 +190,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
 
   if(Glom::Conversions::get_double_for_gda_value_numeric(value) != 3.5l)
   {
-    std::cerr << G_STRFUNC << ": Failure: The value has an unexpected value: " << value.to_string() << " 
instead of 3.5" << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The value has an unexpected value: " << value.to_string() << " 
instead of 3.5\n";
     std::cerr << G_STRFUNC << ":     value as string: " << value.to_string() << std::endl;
     std::cerr << G_STRFUNC << ":     value GType: " << g_type_name(value.get_value_type()) << std::endl;
     return false;
diff --git a/tests/test_selfhosting_new_then_report.cc b/tests/test_selfhosting_new_then_report.cc
index 05abeb1..8a75003 100644
--- a/tests/test_selfhosting_new_then_report.cc
+++ b/tests/test_selfhosting_new_then_report.cc
@@ -33,7 +33,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_music_collection.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
 
@@ -51,13 +51,13 @@ static bool test(Glom::Document::HostingMode hosting_mode)
 
   if(html.empty())
   {
-    std::cerr << G_STRFUNC << ": Failed: html was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed: html was empty.\n";
     return false;
   }
 
   if(html.find("Bruce Springsteen") == std::string::npos)
   {
-    std::cerr << G_STRFUNC << ": Failed: html did not contain the expected text." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed: html did not contain the expected text.\n";
     return false;
   }
 
diff --git a/tests/test_selfhosting_new_then_report_summary.cc 
b/tests/test_selfhosting_new_then_report_summary.cc
index 131dfec..55b31ea 100644
--- a/tests/test_selfhosting_new_then_report_summary.cc
+++ b/tests/test_selfhosting_new_then_report_summary.cc
@@ -33,7 +33,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_smallbusiness.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
 
@@ -41,7 +41,7 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     document->get_report("invoices", "by_customer");
   if(!report)
   {
-    std::cerr << G_STRFUNC << ": The report could not be found." << std::endl;
+    std::cerr << G_STRFUNC << ": The report could not be found.\n";
     return false;
   }
 
@@ -56,19 +56,19 @@ static bool test(Glom::Document::HostingMode hosting_mode)
 
   if(html.empty())
   {
-    std::cerr << G_STRFUNC << ": Failed: html was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed: html was empty.\n";
     return false;
   }
 
   if(html.find("Yodda Yossarian") == std::string::npos)
   {
-    std::cerr << G_STRFUNC << ": Failed: html did not contain the expected text." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed: html did not contain the expected text.\n";
     return false;
   }
 
   if(html.find("90.47") == std::string::npos)
   {
-    std::cerr << G_STRFUNC << ": Failed: html did not contain the expected summary number." << std::endl;
+    std::cerr << G_STRFUNC << ": Failed: html did not contain the expected summary number.\n";
     return false;
   }
 
@@ -88,14 +88,14 @@ int main()
 
   if(!test(Glom::Document::HostingMode::POSTGRES_SELF))
   {
-    std::cerr << G_STRFUNC << ": Failed with PostgreSQL" << std::endl;
+    std::cerr << G_STRFUNC << ": Failed with PostgreSQL\n";
     test_selfhosting_cleanup();
     return EXIT_FAILURE;
   }
   
   if(!test(Glom::Document::HostingMode::SQLITE))
   {
-    std::cerr << G_STRFUNC << ": Failed with SQLite" << std::endl;
+    std::cerr << G_STRFUNC << ": Failed with SQLite\n";
     test_selfhosting_cleanup();
     return EXIT_FAILURE;
   }
diff --git a/tests/test_selfhosting_non_numeric_primary_keys.cc 
b/tests/test_selfhosting_non_numeric_primary_keys.cc
index 6b523ab..e2147fd 100644
--- a/tests/test_selfhosting_non_numeric_primary_keys.cc
+++ b/tests/test_selfhosting_non_numeric_primary_keys.cc
@@ -33,13 +33,13 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_test_example("test_example_music_collection_text_pk_fields.glom", 
document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
   
   if(!test_example_musiccollection_data(document))
   {
-    std::cerr << G_STRFUNC << ": test_example_musiccollection_data() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": test_example_musiccollection_data() failed.\n";
     return false;
   }
 
diff --git a/tests/test_selfhosting_sqlinjection.cc b/tests/test_selfhosting_sqlinjection.cc
index 4dcae89..f683ed0 100644
--- a/tests/test_selfhosting_sqlinjection.cc
+++ b/tests/test_selfhosting_sqlinjection.cc
@@ -93,7 +93,7 @@ static bool check_drop_table(const Glib::ustring& quote_char)
 
   if(!test_table_exists("songs", document))
   {
-    std::cerr << G_STRFUNC << ": Failure: The table may have been dropped." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The table may have been dropped.\n";
     return false;
   }
 
@@ -124,7 +124,7 @@ static bool check_avoid_quotes_and_drop_table_with_false_value_type()
     Glom::Utils::build_sql_select_with_where_clause("albums",
       fieldsToGet, where_clause);
 
-  std::cout << "This test expects some std::cerr output about exceptions now:" << std::endl;
+  std::cout << "This test expects some std::cerr output about exceptions now:\n";
   
   //Glom::ConnectionPool::get_instance()->set_show_debug_output(true);
 
@@ -141,13 +141,13 @@ static bool check_avoid_quotes_and_drop_table_with_false_value_type()
     //though even with SQLite there is quoting that prevents the SQL injection.
     result = true;
     //result = false;
-    //std::cerr << G_STRFUNC << ": Failure: The SQL query should have failed." << std::endl;
+    //std::cerr << G_STRFUNC << ": Failure: The SQL query should have failed.\n";
   }
 
   //We should not get this far, but if we do, tell us more about what happened:
   if(!test_table_exists("songs", document))
   {
-    std::cerr << G_STRFUNC << ": Failure: The table may have been dropped." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The table may have been dropped.\n";
     return false;
   }
 
@@ -188,13 +188,13 @@ static bool check_avoid_quotes_and_drop_table_with_false_field_type()
     = Glom::DbUtils::query_execute_select(builder);
   if(!test_model_expected_size(data_model, 2, 0)) //No rows should be returned because the match value was 
stupid, if escaped properly.
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected data model size for query." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected data model size for query.\n";
     return false;
   }
 
   if(!test_table_exists("songs", document))
   {
-    std::cerr << G_STRFUNC << ": Failure: The table may have been dropped." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The table may have been dropped.\n";
     return false;
   }
 
@@ -207,43 +207,43 @@ static bool test(Glom::Document::HostingMode hosting_mode)
     test_create_and_selfhost_from_example("example_music_collection.glom", document, hosting_mode);
   if(!recreated)
   {
-    std::cerr << G_STRFUNC << ": Recreation failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Recreation failed.\n";
     return false;
   }
 
   if(!check_get_extra_rows("\""))
   {
-    std::cerr << G_STRFUNC << ": Failure: check_get_extra_rows() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: check_get_extra_rows() failed.\n";
     return false;
   }
   
   if(!check_get_extra_rows("'"))
   {
-    std::cerr << G_STRFUNC << ": Failure: check_get_extra_rows() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: check_get_extra_rows() failed.\n";
     return false;
   }
 
   if(!check_drop_table("\""))
   {
-    std::cerr << G_STRFUNC << ": Failure: check_drop_table() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: check_drop_table() failed.\n";
     return false;
   }
   
   if(!check_drop_table("'"))
   {
-    std::cerr << G_STRFUNC << ": Failure: check_drop_table() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: check_drop_table() failed.\n";
     return false;
   }
 
   if(!check_avoid_quotes_and_drop_table_with_false_value_type())
   {
-    std::cerr << G_STRFUNC << ": Failure: check_avoid_quotes_and_drop_table_with_false_value_type() failed." 
<< std::endl;
+    std::cerr << G_STRFUNC << ": Failure: check_avoid_quotes_and_drop_table_with_false_value_type() 
failed.\n";
     return false;
   }
 
   if(!check_avoid_quotes_and_drop_table_with_false_field_type())
   {
-    std::cerr << G_STRFUNC << ": Failure: check_avoid_quotes_and_drop_table_with_false_field_type() failed." 
<< std::endl;
+    std::cerr << G_STRFUNC << ": Failure: check_avoid_quotes_and_drop_table_with_false_field_type() 
failed.\n";
     return false;
   }
 
diff --git a/tests/test_selfhosting_utils.cc b/tests/test_selfhosting_utils.cc
index f5c4a3a..b533e0c 100644
--- a/tests/test_selfhosting_utils.cc
+++ b/tests/test_selfhosting_utils.cc
@@ -35,27 +35,27 @@
 
 static void on_initialize_progress()
 {
-  //std::cout << "Database initialization progress" << std::endl;
+  //std::cout << "Database initialization progress\n";
 }
 
 static void on_startup_progress()
 {
-  //std::cout << "Database startup progress" << std::endl;
+  //std::cout << "Database startup progress\n";
 }
 
 static void on_recreate_progress()
 {
-  //std::cout << "Database re-creation progress" << std::endl;
+  //std::cout << "Database re-creation progress\n";
 }
 
 static void on_cleanup_progress()
 {
-  //std::cout << "Database cleanup progress" << std::endl;
+  //std::cout << "Database cleanup progress\n";
 }
 
 static void on_db_creation_progress()
 {
-  //std::cout << "Database creation progress" << std::endl;
+  //std::cout << "Database creation progress\n";
 }
 
 static std::string temp_filepath_dir; //Remembered so we can delete it later.
@@ -65,7 +65,7 @@ static bool check_directory_exists()
 {
   if(temp_filepath_dir.empty())
   {
-    std::cerr << G_STRFUNC << ": temp_filepath_dir is empty." << std::endl;
+    std::cerr << G_STRFUNC << ": temp_filepath_dir is empty.\n";
     return false;
   }
   
@@ -224,7 +224,7 @@ bool test_create_and_selfhost_new_empty(const std::shared_ptr<Glom::Document>& d
   
   if(!check_directory_exists())
   {
-    std::cerr << G_STRFUNC << ": Failure: The data directory does not exist after calling initialize()." << 
std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The data directory does not exist after calling initialize().\n";
     return false;
   }
 
@@ -241,14 +241,14 @@ bool test_create_and_selfhost_new_database(const std::shared_ptr<Glom::Document>
 {
   if(!test_create_and_selfhost_new_empty(document, hosting_mode, subdirectory_path))
   {
-    std::cerr << G_STRFUNC << ": test_create_and_selfhost_new_empty() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": test_create_and_selfhost_new_empty() failed.\n";
     return false;
   } 
 
   const auto db_name = Glom::DbUtils::get_unused_database_name(database_name);
   if(db_name.empty())
   {
-    std::cerr << G_STRFUNC << ": DbUtils::get_unused_database_name) failed." << std::endl;
+    std::cerr << G_STRFUNC << ": DbUtils::get_unused_database_name) failed.\n";
     return false;
   }
 
@@ -257,7 +257,7 @@ bool test_create_and_selfhost_new_database(const std::shared_ptr<Glom::Document>
     "test title", &on_db_creation_progress);
   if(!created)
   {
-    std::cerr << G_STRFUNC << ": DbUtils::create_database() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": DbUtils::create_database() failed.\n";
     return false;
   }
   
@@ -326,13 +326,13 @@ static bool after_load(const std::shared_ptr<Glom::Document>& document, Glom::Do
 {
   if(!document->get_is_example_file() && !document->get_is_backup_file())
   {
-    std::cerr << G_STRFUNC << ": The document is not an example or a backup." << std::endl;
+    std::cerr << G_STRFUNC << ": The document is not an example or a backup.\n";
     return false;
   }
 
   if(!test_create_and_selfhost_new_empty(document, hosting_mode, subdirectory_path))
   {
-    std::cerr << G_STRFUNC << ": test_create_and_selfhost_new_empty() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": test_create_and_selfhost_new_empty() failed.\n";
     return false;
   }
 
@@ -396,7 +396,7 @@ bool test_model_expected_size(const Glib::RefPtr<const Gnome::Gda::DataModel>& d
 {
   if(!data_model)
   {
-    std::cerr << G_STRFUNC << ": Failure: data_model was null" << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: data_model was null\n";
     return false;
   }
 
@@ -448,7 +448,7 @@ static bool test_example_musiccollection_data_related(const std::shared_ptr<cons
 {
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null" << std::endl;
+    std::cerr << G_STRFUNC << ": document is null\n";
     return false;
   }
 
@@ -462,7 +462,7 @@ static bool test_example_musiccollection_data_related(const std::shared_ptr<cons
   auto field = document->get_field("albums", "name");
   if(!field)
   {
-    std::cerr << G_STRFUNC << "Failure: Could not get field." << std::endl;
+    std::cerr << G_STRFUNC << "Failure: Could not get field.\n";
     return false;
   }
   layoutitem = std::make_shared<Glom::LayoutItem_Field>();
@@ -473,7 +473,7 @@ static bool test_example_musiccollection_data_related(const std::shared_ptr<cons
   const auto relationship = document->get_relationship("albums", "artist");
   if(!relationship)
   {
-    std::cerr << G_STRFUNC << ": Failure: The relationship could not be found." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: The relationship could not be found.\n";
     return false;
   }
   layoutitem = std::make_shared<Glom::LayoutItem_Field>();
@@ -481,7 +481,7 @@ static bool test_example_musiccollection_data_related(const std::shared_ptr<cons
   field = document->get_field("artists", "name");
   if(!field)
   {
-    std::cerr << G_STRFUNC << "Failure: Could not get field." << std::endl;
+    std::cerr << G_STRFUNC << "Failure: Could not get field.\n";
     return false;
   }
   layoutitem->set_full_field_details(field);
@@ -505,7 +505,7 @@ bool test_example_musiccollection_data(const std::shared_ptr<const Glom::Documen
 {
   if(!document)
   {
-    std::cerr << G_STRFUNC << ": document is null" << std::endl;
+    std::cerr << G_STRFUNC << ": document is null\n";
     return false;
   }
   
@@ -523,7 +523,7 @@ bool test_example_musiccollection_data(const std::shared_ptr<const Glom::Documen
   field = document->get_field("albums", "name");
   if(!field)
   {
-    std::cerr << G_STRFUNC << "Failure: Could not get field." << std::endl;
+    std::cerr << G_STRFUNC << "Failure: Could not get field.\n";
     return false;
   }
   layoutitem = std::make_shared<Glom::LayoutItem_Field>();
@@ -574,7 +574,7 @@ static bool test_hosting_mode(const SlotTest& slot, Glom::Document::HostingMode
   }
   catch(...)
   {
-    std::cerr << G_STRFUNC << ": Failed with " << name << " with unknown exception: " << std::endl;
+    std::cerr << G_STRFUNC << ": Failed with " << name << " with unknown exception: \n";
     test_selfhosting_cleanup();
     return false;
   }
diff --git a/tests/test_signal_reemit.cc b/tests/test_signal_reemit.cc
index 97eb504..45025ae 100644
--- a/tests/test_signal_reemit.cc
+++ b/tests/test_signal_reemit.cc
@@ -9,7 +9,7 @@ const int param_value = 1;
 
 void on_reemit_void()
 {
-  //std::cout << "Success: signal_to_reemit_void was emitted when signal_first_emit was emitted." << 
std::endl;
+  //std::cout << "Success: signal_to_reemit_void was emitted when signal_first_emit was emitted.\n";
   success_reemit_void = true;
 }
 
diff --git a/tests/translations_po/test_document_export_po.cc 
b/tests/translations_po/test_document_export_po.cc
index ff56764..0e2cf2b 100644
--- a/tests/translations_po/test_document_export_po.cc
+++ b/tests/translations_po/test_document_export_po.cc
@@ -103,7 +103,7 @@ int main()
   const auto po_file_uri = Glom::Utils::get_temp_file_uri("glom_export.po");
   if(po_file_uri.empty())
   {
-    std::cerr << G_STRFUNC << ": Could not generate a temporary file URI=" << std::endl;
+    std::cerr << G_STRFUNC << ": Could not generate a temporary file URI=\n";
     return EXIT_FAILURE;
   }
 
@@ -114,7 +114,7 @@ int main()
     Glom::write_translations_to_po_file(document, po_file_uri, locale);
   if(!success)
   {
-    std::cerr << G_STRFUNC << ": Glom::write_translations_to_po_file() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Glom::write_translations_to_po_file() failed.\n";
     return EXIT_FAILURE;
   }
 
diff --git a/tests/translations_po/test_document_import_po.cc 
b/tests/translations_po/test_document_import_po.cc
index 4bd916f..52bd679 100644
--- a/tests/translations_po/test_document_import_po.cc
+++ b/tests/translations_po/test_document_import_po.cc
@@ -83,7 +83,7 @@ int main()
 
   if(po_file_uri.empty())
   {
-    std::cerr << G_STRFUNC << ": po_file_uri was empty." << std::endl;
+    std::cerr << G_STRFUNC << ": po_file_uri was empty.\n";
     return EXIT_FAILURE;
   }
 
@@ -94,7 +94,7 @@ int main()
     Glom::import_translations_from_po_file(document, po_file_uri, locale);
   if(!success)
   {
-    std::cerr << G_STRFUNC << ": Glom::import_translations_from_po_file() failed." << std::endl;
+    std::cerr << G_STRFUNC << ": Glom::import_translations_from_po_file() failed.\n";
     return EXIT_FAILURE;
   }
 
@@ -107,7 +107,7 @@ int main()
   //This should have a new translated title:
   if(table->get_title_translation(locale) != "TestResult1")
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected translated report title." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected translated report title.\n";
     return EXIT_FAILURE;
   }
 
@@ -118,7 +118,7 @@ int main()
   //This should have a new translated title:
   if(report->get_title_translation(locale) != "TestResult2")
   {
-    std::cerr << G_STRFUNC << ": Failure: Unexpected translated report title." << std::endl;
+    std::cerr << G_STRFUNC << ": Failure: Unexpected translated report title.\n";
     return EXIT_FAILURE;
   }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]