From 3bf25783a29219d14889ba251cd7b42b3974c287 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jakub=20Sko=C5=99epa?= <jakub@skorepa.info>
Date: Thu, 27 Aug 2015 18:57:24 +0200
Subject: [PATCH] Print server version on interactive start too

 + Fix history saving for ^D
---
 .../src/commands/InteractiveCommand.vala      |  4 +++-
 dserial-cli/src/dbus-serial-client.vala       | 19 +++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/dserial-cli/src/commands/InteractiveCommand.vala b/dserial-cli/src/commands/InteractiveCommand.vala
index b3d1ef3..872080f 100644
--- a/dserial-cli/src/commands/InteractiveCommand.vala
+++ b/dserial-cli/src/commands/InteractiveCommand.vala
@@ -75,7 +75,7 @@ public class InteractiveCommand : Object, Command
 		state.interactive = true;
 		stdout.printf("dserial: Serial communication program\n");
 		stdout.printf("License: GPL3+\n");
-		stdout.printf("Version: 0.5\n");
+		stdout.printf("Version: 0.5.1\t\t\tServer version: %s\n",Serial.get_server_version());
 		stdout.printf("Write help for help\n");
 		Readline.History.read(Environment.get_variable("HOME")+"/.dserial-history");
 		Readline.attempted_completion_function = readline_completion;
@@ -87,6 +87,8 @@ public class InteractiveCommand : Object, Command
             if (line == null) {
                 stdout.printf("\n");
                 run_func(state,{"exit"});
+                Readline.History.write(Environment.get_variable("HOME")+"/.dserial-history");
+                Readline.History.truncate_file(Environment.get_variable("HOME")+"/.dserial-history",256);
                 return 0;
             }
             Readline.History.add(line);
diff --git a/dserial-cli/src/dbus-serial-client.vala b/dserial-cli/src/dbus-serial-client.vala
index 8be8bb9..68995d8 100644
--- a/dserial-cli/src/dbus-serial-client.vala
+++ b/dserial-cli/src/dbus-serial-client.vala
@@ -112,6 +112,25 @@ public string[] get_ports() {
     return {};
 }
 
+/*=====================================
+ * Get server version
+ *=====================================*/
+public string get_server_version() {
+    if(DEBUG_OUTPUT) stdout.printf("get_server_version\n");
+    try {
+        return GLib.Bus.get_sync(BusType.SESSION).call_sync(
+            "info.skorepa.DSerial1",
+            "/controller",
+            "org.freedesktop.DBus.Properties",
+            "Get",
+            new Variant("(ss)","info.skorepa.DSerial1.controller", "ServerVersion"),
+            null,
+            DBusCallFlags.NONE,
+            1000).get_child_value(0).get_variant().get_string();
+    }catch(Error e) {}
+    return "UNKNOWN";
+}
+
 /*=====================================
  * Return object name for file name
  *=====================================*/
-- 
GitLab