Extract program version that a session was created with
authorRobin Gareus <robin@gareus.org>
Fri, 20 Jan 2017 17:15:44 +0000 (18:15 +0100)
committerRobin Gareus <robin@gareus.org>
Fri, 20 Jan 2017 17:15:44 +0000 (18:15 +0100)
libs/ardour/ardour/session.h
libs/ardour/session_state.cc

index fb0860bd78f320b4c0d77c75f8fa5dabc64f8e51..562b8a94c2d986b092f7247e186004ed332fa079 100644 (file)
@@ -199,7 +199,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
 
        virtual ~Session ();
 
-       static int get_info_from_path (const std::string& xmlpath, float& sample_rate, SampleFormat& data_format);
+       static int get_info_from_path (const std::string& xmlpath, float& sample_rate, SampleFormat& data_format, std::string& created_version);
        static std::string get_snapshot_from_instant (const std::string& session_dir);
 
        /** a monotonic counter used for naming user-visible things uniquely
index 04f647058206a57917e4b4d47aed38bcefefb3fe..ee86a40e09d08f4b0c9cf24560d2c03b3d43d67c 100644 (file)
@@ -4428,10 +4428,11 @@ Session::rename (const std::string& new_name)
 }
 
 int
-Session::get_info_from_path (const string& xmlpath, float& sample_rate, SampleFormat& data_format)
+Session::get_info_from_path (const string& xmlpath, float& sample_rate, SampleFormat& data_format, std::string& created_version)
 {
        bool found_sr = false;
        bool found_data_format = false;
+       created_version = "";
 
        if (!Glib::file_test (xmlpath, Glib::FILE_TEST_EXISTS)) {
                return -1;
@@ -4468,6 +4469,13 @@ Session::get_info_from_path (const string& xmlpath, float& sample_rate, SampleFo
 
        node = node->children;
        while (node != NULL) {
+                if (!strcmp((const char*) node->name, "ProgramVersion")) {
+                        xmlChar* val = xmlGetProp (node, (const xmlChar*)"created-with");
+                        if (val) {
+                                created_version = string ((const char*)val);
+                        }
+                        xmlFree (val);
+                }
                 if (strcmp((const char*) node->name, "Config")) {
                         node = node->next;
                         continue;