summaryrefslogtreecommitdiff
path: root/libs/glibmm2/glibmm/fileutils.cc
diff options
context:
space:
mode:
authorTaybin Rutkin <taybin@taybin.com>2005-05-13 20:47:18 +0000
committerTaybin Rutkin <taybin@taybin.com>2005-05-13 20:47:18 +0000
commitd09f6b3016bacbc2871a8946cbb24ad705076509 (patch)
treef27312839c2a772cb2ce068a4f28b2449ad869df /libs/glibmm2/glibmm/fileutils.cc
Initial revision
git-svn-id: svn://localhost/trunk/ardour2@4 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/glibmm2/glibmm/fileutils.cc')
-rw-r--r--libs/glibmm2/glibmm/fileutils.cc217
1 files changed, 217 insertions, 0 deletions
diff --git a/libs/glibmm2/glibmm/fileutils.cc b/libs/glibmm2/glibmm/fileutils.cc
new file mode 100644
index 0000000000..ce7051faa0
--- /dev/null
+++ b/libs/glibmm2/glibmm/fileutils.cc
@@ -0,0 +1,217 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+#include <glibmm/fileutils.h>
+#include <glibmm/private/fileutils_p.h>
+
+// -*- c++ -*-
+/* $Id$ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gdir.h>
+#include <glib/gfileutils.h>
+#include <glib/gstrfuncs.h>
+#include <glibmm/utility.h>
+
+
+namespace Glib
+{
+
+/**** Glib::Dir ************************************************************/
+
+Dir::Dir(const std::string& path)
+{
+ GError* error = 0;
+ gobject_ = g_dir_open(path.c_str(), 0, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+Dir::Dir(GDir* gobject)
+:
+ gobject_ (gobject)
+{}
+
+Dir::~Dir()
+{
+ if(gobject_)
+ g_dir_close(gobject_);
+}
+
+std::string Dir::read_name()
+{
+ const char *const name = g_dir_read_name(gobject_);
+ return (name) ? std::string(name) : std::string();
+}
+
+void Dir::rewind()
+{
+ g_dir_rewind(gobject_);
+}
+
+void Dir::close()
+{
+ if(gobject_)
+ {
+ g_dir_close(gobject_);
+ gobject_ = 0;
+ }
+}
+
+DirIterator Dir::begin()
+{
+ g_dir_rewind(gobject_);
+ return DirIterator(gobject_, g_dir_read_name(gobject_));
+}
+
+DirIterator Dir::end()
+{
+ return DirIterator(gobject_, 0);
+}
+
+
+/**** Glib::DirIterator ****************************************************/
+
+DirIterator::DirIterator()
+:
+ gobject_ (0),
+ current_ (0)
+{}
+
+DirIterator::DirIterator(GDir* gobject, const char* current)
+:
+ gobject_ (gobject),
+ current_ (current)
+{}
+
+std::string DirIterator::operator*() const
+{
+ return (current_) ? std::string(current_) : std::string();
+}
+
+DirIterator& DirIterator::operator++()
+{
+ current_ = g_dir_read_name(gobject_);
+ return *this;
+}
+
+void DirIterator::operator++(int)
+{
+ current_ = g_dir_read_name(gobject_);
+}
+
+bool DirIterator::operator==(const DirIterator& rhs) const
+{
+ return (current_ == rhs.current_);
+}
+
+bool DirIterator::operator!=(const DirIterator& rhs) const
+{
+ return (current_ != rhs.current_);
+}
+
+
+bool file_test(const std::string& filename, FileTest test)
+{
+ return g_file_test(filename.c_str(), static_cast<GFileTest>(unsigned(test)));
+}
+
+int mkstemp(std::string& filename_template)
+{
+ const ScopedPtr<char> buf (g_strndup(filename_template.data(), filename_template.size()));
+ const int fileno = g_mkstemp(buf.get());
+
+ filename_template = buf.get();
+ return fileno;
+}
+
+int file_open_tmp(std::string& name_used, const std::string& prefix)
+{
+ std::string basename_template (prefix);
+ basename_template += "XXXXXX"; // this sillyness shouldn't be in the interface
+
+ GError* error = 0;
+ ScopedPtr<char> buf_name_used;
+
+ const int fileno = g_file_open_tmp(basename_template.c_str(), buf_name_used.addr(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ name_used = buf_name_used.get();
+ return fileno;
+}
+
+int file_open_tmp(std::string& name_used)
+{
+ GError* error = 0;
+ ScopedPtr<char> buf_name_used;
+
+ const int fileno = g_file_open_tmp(0, buf_name_used.addr(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ name_used = buf_name_used.get();
+ return fileno;
+}
+
+std::string file_get_contents(const std::string& filename)
+{
+ ScopedPtr<char> contents;
+ gsize length = 0;
+ GError* error = 0;
+
+ g_file_get_contents(filename.c_str(), contents.addr(), &length, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ return std::string(contents.get(), length);
+}
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+Glib::FileError::FileError(Glib::FileError::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (G_FILE_ERROR, error_code, error_message)
+{}
+
+Glib::FileError::FileError(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+Glib::FileError::Code Glib::FileError::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+void Glib::FileError::throw_func(GError* gobject)
+{
+ throw Glib::FileError(gobject);
+}
+
+