add a lua timer callback signal
[ardour.git] / libs / ardour / session_state_utils.cc
index 1ce61954a425230fa7724552780d2247209c7980..28cfbb2b756eb6019f4ca2bcb06f032a2cce46e2 100644 (file)
@@ -1,5 +1,5 @@
 /*
-       Copyright (C) 2007 Tim Mayberry 
+       Copyright (C) 2007 Tim Mayberry
 
        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-#include <pbd/compose.h>
-#include <pbd/error.h>
+#include <algorithm>
 
-#include <ardour/session_state_utils.h>
-#include <ardour/filename_extensions.h>
+#include <glibmm/fileutils.h>
 
-#include "i18n.h"
+#include <giomm/file.h>
+
+#include "pbd/basename.h"
+#include "pbd/compose.h"
+#include "pbd/error.h"
+#include "pbd/file_utils.h"
+
+#include "ardour/session_state_utils.h"
+#include "ardour/filename_extensions.h"
+
+#include "pbd/i18n.h"
+
+using namespace std;
+using namespace PBD;
 
 namespace ARDOUR {
 
 bool
-create_backup_file (const sys::path & file_path)
+create_backup_file (const std::string & file_path)
+{
+       return copy_file (file_path, file_path + backup_suffix);
+}
+
+void
+get_state_files_in_directory (const std::string & directory_path,
+                             vector<std::string> & result)
 {
-       if (!sys::exists (file_path)) return false;
-
-       sys::path backup_path(file_path.to_string() + backup_suffix);
-
-       try
-       {
-               sys::copy_file (file_path, backup_path);
-       }
-       catch(sys::filesystem_error& ex)
-       {
-               error << string_compose (_("Unable to create a backup copy of file %1 (%2)"),
-                               file_path.to_string(), ex.what())
-                       << endmsg;
-               return false;
-       }
-       return true;
+       find_files_matching_pattern (result, directory_path,
+                                    '*' + string(statefile_suffix));
+}
+
+vector<string>
+get_file_names_no_extension (const vector<std::string> & file_paths)
+{
+       vector<string> result;
+
+       std::transform (file_paths.begin(), file_paths.end(),
+                       std::back_inserter(result), PBD::basename_nosuffix);
+
+       sort (result.begin(), result.end(), std::less<string>());
+
+       return result;
 }
 
 } // namespace ARDOUR