mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-08 10:08:05 +02:00
utils: add nm_utils_read_link_absolute()
This commit is contained in:
parent
19350c8975
commit
c4b88bf23f
2 changed files with 35 additions and 0 deletions
|
|
@ -1147,6 +1147,39 @@ nm_utils_find_helper(const char *progname, const char *try_first, GError **error
|
||||||
|
|
||||||
/******************************************************************************************/
|
/******************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* nm_utils_read_link_absolute:
|
||||||
|
* @link_file: file name of the symbolic link
|
||||||
|
* @error: error reason in case of failure
|
||||||
|
*
|
||||||
|
* Uses to g_file_read_link()/readlink() to read the symlink
|
||||||
|
* and returns the result as absolute path.
|
||||||
|
**/
|
||||||
|
char *
|
||||||
|
nm_utils_read_link_absolute (const char *link_file, GError **error)
|
||||||
|
{
|
||||||
|
char *ln, *dirname, *ln_abs;
|
||||||
|
|
||||||
|
ln = g_file_read_link (link_file, error);
|
||||||
|
if (!ln)
|
||||||
|
return NULL;
|
||||||
|
if (g_path_is_absolute (ln))
|
||||||
|
return ln;
|
||||||
|
|
||||||
|
dirname = g_path_get_dirname (link_file);
|
||||||
|
if (!g_path_is_absolute (link_file)) {
|
||||||
|
gs_free char *dirname_rel = dirname;
|
||||||
|
|
||||||
|
dirname = g_build_filename (g_get_current_dir (), dirname_rel, NULL);
|
||||||
|
}
|
||||||
|
ln_abs = g_build_filename (dirname, ln, NULL);
|
||||||
|
g_free (dirname);
|
||||||
|
g_free (ln);
|
||||||
|
return ln_abs;
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************************************/
|
||||||
|
|
||||||
#define MAC_TAG "mac:"
|
#define MAC_TAG "mac:"
|
||||||
#define INTERFACE_NAME_TAG "interface-name:"
|
#define INTERFACE_NAME_TAG "interface-name:"
|
||||||
#define DEVICE_TYPE_TAG "type:"
|
#define DEVICE_TYPE_TAG "type:"
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,8 @@ const char *nm_utils_find_helper (const char *progname,
|
||||||
const char *try_first,
|
const char *try_first,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
char *nm_utils_read_link_absolute (const char *link_file, GError **error);
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
NM_MATCH_SPEC_NO_MATCH = 0,
|
NM_MATCH_SPEC_NO_MATCH = 0,
|
||||||
NM_MATCH_SPEC_MATCH = 1,
|
NM_MATCH_SPEC_MATCH = 1,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue