mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-26 05:56:14 +01:00
a963712646
I didn't do this comprehensively, since there's a lot of it, mainly due to the GDBus object manager stuff, but anyone trying to use that would fail fast due to lack of the gdbus code generator. My main goal was to get API additions to existing classes like g_data_input_stream_read_line_utf8(), as well as the lower level new API like glib-unix.h. https://bugzilla.gnome.org/show_bug.cgi?id=676816
180 lines
5.6 KiB
C
180 lines
5.6 KiB
C
/* gfileutils.h - File utility functions
|
|
*
|
|
* Copyright 2000 Red Hat, Inc.
|
|
*
|
|
* GLib is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* GLib 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
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with GLib; see the file COPYING.LIB. If not,
|
|
* write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
* Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
|
|
#error "Only <glib.h> can be included directly."
|
|
#endif
|
|
|
|
#ifndef __G_FILEUTILS_H__
|
|
#define __G_FILEUTILS_H__
|
|
|
|
#include <glib/gerror.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
#define G_FILE_ERROR g_file_error_quark ()
|
|
|
|
typedef enum
|
|
{
|
|
G_FILE_ERROR_EXIST,
|
|
G_FILE_ERROR_ISDIR,
|
|
G_FILE_ERROR_ACCES,
|
|
G_FILE_ERROR_NAMETOOLONG,
|
|
G_FILE_ERROR_NOENT,
|
|
G_FILE_ERROR_NOTDIR,
|
|
G_FILE_ERROR_NXIO,
|
|
G_FILE_ERROR_NODEV,
|
|
G_FILE_ERROR_ROFS,
|
|
G_FILE_ERROR_TXTBSY,
|
|
G_FILE_ERROR_FAULT,
|
|
G_FILE_ERROR_LOOP,
|
|
G_FILE_ERROR_NOSPC,
|
|
G_FILE_ERROR_NOMEM,
|
|
G_FILE_ERROR_MFILE,
|
|
G_FILE_ERROR_NFILE,
|
|
G_FILE_ERROR_BADF,
|
|
G_FILE_ERROR_INVAL,
|
|
G_FILE_ERROR_PIPE,
|
|
G_FILE_ERROR_AGAIN,
|
|
G_FILE_ERROR_INTR,
|
|
G_FILE_ERROR_IO,
|
|
G_FILE_ERROR_PERM,
|
|
G_FILE_ERROR_NOSYS,
|
|
G_FILE_ERROR_FAILED
|
|
} GFileError;
|
|
|
|
/* For backward-compat reasons, these are synced to an old
|
|
* anonymous enum in libgnome. But don't use that enum
|
|
* in new code.
|
|
*/
|
|
typedef enum
|
|
{
|
|
G_FILE_TEST_IS_REGULAR = 1 << 0,
|
|
G_FILE_TEST_IS_SYMLINK = 1 << 1,
|
|
G_FILE_TEST_IS_DIR = 1 << 2,
|
|
G_FILE_TEST_IS_EXECUTABLE = 1 << 3,
|
|
G_FILE_TEST_EXISTS = 1 << 4
|
|
} GFileTest;
|
|
|
|
GQuark g_file_error_quark (void);
|
|
/* So other code can generate a GFileError */
|
|
GFileError g_file_error_from_errno (gint err_no);
|
|
|
|
#ifndef __GTK_DOC_IGNORE__
|
|
#ifdef G_OS_WIN32
|
|
#define g_file_test g_file_test_utf8
|
|
#define g_file_get_contents g_file_get_contents_utf8
|
|
#define g_mkstemp g_mkstemp_utf8
|
|
#define g_file_open_tmp g_file_open_tmp_utf8
|
|
#endif
|
|
#endif
|
|
|
|
gboolean g_file_test (const gchar *filename,
|
|
GFileTest test);
|
|
gboolean g_file_get_contents (const gchar *filename,
|
|
gchar **contents,
|
|
gsize *length,
|
|
GError **error);
|
|
gboolean g_file_set_contents (const gchar *filename,
|
|
const gchar *contents,
|
|
gssize length,
|
|
GError **error);
|
|
gchar *g_file_read_link (const gchar *filename,
|
|
GError **error);
|
|
|
|
/* Wrapper / workalike for mkdtemp() */
|
|
GLIB_AVAILABLE_IN_2_30
|
|
gchar *g_mkdtemp (gchar *tmpl);
|
|
GLIB_AVAILABLE_IN_2_30
|
|
gchar *g_mkdtemp_full (gchar *tmpl,
|
|
gint mode);
|
|
|
|
/* Wrapper / workalike for mkstemp() */
|
|
gint g_mkstemp (gchar *tmpl);
|
|
gint g_mkstemp_full (gchar *tmpl,
|
|
gint flags,
|
|
gint mode);
|
|
|
|
/* Wrappers for g_mkstemp and g_mkdtemp() */
|
|
gint g_file_open_tmp (const gchar *tmpl,
|
|
gchar **name_used,
|
|
GError **error);
|
|
GLIB_AVAILABLE_IN_2_30
|
|
gchar *g_dir_make_tmp (const gchar *tmpl,
|
|
GError **error);
|
|
|
|
gchar *g_build_path (const gchar *separator,
|
|
const gchar *first_element,
|
|
...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
|
|
gchar *g_build_pathv (const gchar *separator,
|
|
gchar **args) G_GNUC_MALLOC;
|
|
|
|
gchar *g_build_filename (const gchar *first_element,
|
|
...) G_GNUC_MALLOC G_GNUC_NULL_TERMINATED;
|
|
gchar *g_build_filenamev (gchar **args) G_GNUC_MALLOC;
|
|
|
|
gint g_mkdir_with_parents (const gchar *pathname,
|
|
gint mode);
|
|
|
|
#ifdef G_OS_WIN32
|
|
|
|
/* On Win32, the canonical directory separator is the backslash, and
|
|
* the search path separator is the semicolon. Note that also the
|
|
* (forward) slash works as directory separator.
|
|
*/
|
|
#define G_DIR_SEPARATOR '\\'
|
|
#define G_DIR_SEPARATOR_S "\\"
|
|
#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
|
|
#define G_SEARCHPATH_SEPARATOR ';'
|
|
#define G_SEARCHPATH_SEPARATOR_S ";"
|
|
|
|
#else /* !G_OS_WIN32 */
|
|
|
|
#define G_DIR_SEPARATOR '/'
|
|
#define G_DIR_SEPARATOR_S "/"
|
|
#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR)
|
|
#define G_SEARCHPATH_SEPARATOR ':'
|
|
#define G_SEARCHPATH_SEPARATOR_S ":"
|
|
|
|
#endif /* !G_OS_WIN32 */
|
|
|
|
gboolean g_path_is_absolute (const gchar *file_name);
|
|
const gchar *g_path_skip_root (const gchar *file_name);
|
|
|
|
GLIB_DEPRECATED_FOR(g_path_get_basename)
|
|
const gchar *g_basename (const gchar *file_name);
|
|
#ifndef G_DISABLE_DEPRECATED
|
|
#define g_dirname g_path_get_dirname
|
|
#endif
|
|
|
|
#ifndef __GTK_DOC_IGNORE__
|
|
#ifdef G_OS_WIN32
|
|
#define g_get_current_dir g_get_current_dir_utf8
|
|
#endif
|
|
#endif
|
|
|
|
gchar *g_get_current_dir (void);
|
|
gchar *g_path_get_basename (const gchar *file_name) G_GNUC_MALLOC;
|
|
gchar *g_path_get_dirname (const gchar *file_name) G_GNUC_MALLOC;
|
|
|
|
G_END_DECLS
|
|
|
|
#endif /* __G_FILEUTILS_H__ */
|