PathBuf#
Added in version 2.76.
- class PathBuf(*args, **kwargs)#
GPathBuf
is a helper type that allows you to easily build paths from
individual elements, using the platform specific conventions for path
separators.
g_auto (GPathBuf) path;
g_path_buf_init (&path);
g_path_buf_push (&path, "usr");
g_path_buf_push (&path, "bin");
g_path_buf_push (&path, "echo");
g_autofree char *echo = g_path_buf_to_path (&path);
g_assert_cmpstr (echo, ==, "/usr/bin/echo");
You can also load a full path and then operate on its components:
g_auto (GPathBuf) path;
g_path_buf_init_from_path (&path, "/usr/bin/echo");
g_path_buf_pop (&path);
g_path_buf_push (&path, "sh");
g_autofree char *sh = g_path_buf_to_path (&path);
g_assert_cmpstr (sh, ==, "/usr/bin/sh");
Methods#
- class PathBuf
- clear() None #
Clears the contents of the path buffer.
This function should be use to free the resources in a stack-allocated
GPathBuf
initialized usinginit()
orinit_from_path()
.Added in version 2.76.
- clear_to_path() str | None #
Clears the contents of the path buffer and returns the built path.
This function returns
NULL
if theGPathBuf
is empty.See also:
to_path()
Added in version 2.76.
- equal(v1: None, v2: None) bool #
Compares two path buffers for equality and returns
TRUE
if they are equal.The path inside the paths buffers are not going to be normalized, so
X/Y/Z/A/..
,X/./Y/Z
andX/Y/Z
are not going to be considered equal.This function can be passed to
new()
as thekey_equal_func
parameter.Added in version 2.76.
- Parameters:
v1 – a path buffer to compare
v2 – a path buffer to compare
- free_to_path() str | None #
Frees a
GPathBuf
allocated bynew()
, and returns the path inside the buffer.This function returns
NULL
if theGPathBuf
is empty.See also:
to_path()
Added in version 2.76.
- init_from_path(path: str | None = None) PathBuf #
Initializes a
GPathBuf
instance with the given path.Added in version 2.76.
- Parameters:
path – a file system path
- pop() bool #
Removes the last element of the path buffer.
If there is only one element in the path buffer (for example,
/
on Unix-like operating systems or the drive on Windows systems), it will not be removed andFalse
will be returned instead.GPathBuf buf, cmp; g_path_buf_init_from_path (&buf, "/bin/sh"); g_path_buf_pop (&buf); g_path_buf_init_from_path (&cmp, "/bin"); g_assert_true (g_path_buf_equal (&buf, &cmp)); g_path_buf_clear (&cmp); g_path_buf_pop (&buf); g_path_buf_init_from_path (&cmp, "/"); g_assert_true (g_path_buf_equal (&buf, &cmp)); g_path_buf_clear (&cmp); g_path_buf_clear (&buf);
Added in version 2.76.
- push(path: str) PathBuf #
Extends the given path buffer with
path
.If
path
is absolute, it replaces the current path.If
path
contains a directory separator, the buffer is extended by as many elements the path provides.On Windows, both forward slashes and backslashes are treated as directory separators. On other platforms,
DIR_SEPARATOR_S
is the only directory separator.GPathBuf buf, cmp; g_path_buf_init_from_path (&buf, "/tmp"); g_path_buf_push (&buf, ".X11-unix/X0"); g_path_buf_init_from_path (&cmp, "/tmp/.X11-unix/X0"); g_assert_true (g_path_buf_equal (&buf, &cmp)); g_path_buf_clear (&cmp); g_path_buf_push (&buf, "/etc/locale.conf"); g_path_buf_init_from_path (&cmp, "/etc/locale.conf"); g_assert_true (g_path_buf_equal (&buf, &cmp)); g_path_buf_clear (&cmp); g_path_buf_clear (&buf);
Added in version 2.76.
- Parameters:
path – a path
- set_extension(extension: str | None = None) bool #
Adds an extension to the file name in the path buffer.
If
extension
isNULL
, the extension will be unset.If the path buffer does not have a file name set, this function returns
FALSE
and leaves the path buffer unmodified.Added in version 2.76.
- Parameters:
extension – the file extension
- set_filename(file_name: str) bool #
Sets the file name of the path.
If the path buffer is empty, the filename is left unset and this function returns
FALSE
.If the path buffer only contains the root element (on Unix-like operating systems) or the drive (on Windows), this is the equivalent of pushing the new
file_name
.If the path buffer contains a path, this is the equivalent of popping the path buffer and pushing
file_name
, creating a sibling of the original path.GPathBuf buf, cmp; g_path_buf_init_from_path (&buf, "/"); g_path_buf_set_filename (&buf, "bar"); g_path_buf_init_from_path (&cmp, "/bar"); g_assert_true (g_path_buf_equal (&buf, &cmp)); g_path_buf_clear (&cmp); g_path_buf_set_filename (&buf, "baz.txt"); g_path_buf_init_from_path (&cmp, "/baz.txt"); g_assert_true (g_path_buf_equal (&buf, &cmp); g_path_buf_clear (&cmp); g_path_buf_clear (&buf);
Added in version 2.76.
- Parameters:
file_name – the file name in the path
Fields#
- class PathBuf
- dummy#