mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-20 13:48:12 +02:00
We use clang-format for automatic formatting of our source files. Since clang-format is actively maintained software, the actual formatting depends on the used version of clang-format. That is unfortunate and painful, but really unavoidable unless clang-format would be strictly bug-compatible. So the version that we must use is from the current Fedora release, which is also tested by our gitlab-ci. Previously, we were using Fedora 34 with clang-tools-extra-12.0.1-1.fc34.x86_64. As Fedora 35 comes along, we need to update our formatting as Fedora 35 comes with version "13.0.0~rc1-1.fc35". An alternative would be to freeze on version 12, but that has different problems (like, it's cumbersome to rebuild clang 12 on Fedora 35 and it would be cumbersome for our developers which are on Fedora 35 to use a clang that they cannot easily install). The (differently painful) solution is to reformat from time to time, as we switch to a new Fedora (and thus clang) version. Usually we would expect that such a reformatting brings minor changes. But this time, the changes are huge. That is mentioned in the release notes [1] as Makes PointerAligment: Right working with AlignConsecutiveDeclarations. (Fixes https://llvm.org/PR27353) [1] https://releases.llvm.org/13.0.0/tools/clang/docs/ReleaseNotes.html#clang-format
80 lines
3.1 KiB
C
80 lines
3.1 KiB
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2018 Red Hat, Inc.
|
|
*/
|
|
|
|
#ifndef __NM_IO_UTILS_H__
|
|
#define __NM_IO_UTILS_H__
|
|
|
|
#include "nm-macros-internal.h"
|
|
|
|
/*****************************************************************************/
|
|
|
|
/**
|
|
* NMUtilsFileGetContentsFlags:
|
|
* @NM_UTILS_FILE_GET_CONTENTS_FLAG_NONE: no flag
|
|
* @NM_UTILS_FILE_GET_CONTENTS_FLAG_SECRET: if present, ensure that no
|
|
* data is left in memory. Essentially, it means to call nm_explicit_bzero()
|
|
* to not leave key material on the heap (when reading secrets).
|
|
*/
|
|
typedef enum {
|
|
NM_UTILS_FILE_GET_CONTENTS_FLAG_NONE = 0,
|
|
NM_UTILS_FILE_GET_CONTENTS_FLAG_SECRET = (1 << 0),
|
|
} NMUtilsFileGetContentsFlags;
|
|
|
|
gboolean nm_utils_fd_get_contents(int fd,
|
|
gboolean close_fd,
|
|
gsize max_length,
|
|
NMUtilsFileGetContentsFlags flags,
|
|
char **contents,
|
|
gsize *length,
|
|
int *out_errsv,
|
|
GError **error);
|
|
|
|
gboolean nm_utils_file_get_contents(int dirfd,
|
|
const char *filename,
|
|
gsize max_length,
|
|
NMUtilsFileGetContentsFlags flags,
|
|
char **contents,
|
|
gsize *length,
|
|
int *out_errsv,
|
|
GError **error);
|
|
|
|
gboolean nm_utils_file_set_contents(const char *filename,
|
|
const char *contents,
|
|
gssize length,
|
|
mode_t mode,
|
|
const struct timespec *times,
|
|
int *out_errsv,
|
|
GError **error);
|
|
|
|
struct _NMStrBuf;
|
|
|
|
gssize nm_utils_fd_read(int fd, struct _NMStrBuf *out_string);
|
|
|
|
struct stat;
|
|
|
|
int nm_utils_file_stat(const char *filename, struct stat *out_st);
|
|
|
|
void nm_g_subprocess_terminate_in_background(GSubprocess *subprocess, int timeout_msec_before_kill);
|
|
|
|
char **nm_utils_find_mkstemp_files(const char *dirname, const char *filename);
|
|
|
|
static inline gboolean
|
|
nm_io_sockaddr_un_path_is_abstract(const char *path, const char **out_path)
|
|
{
|
|
if (path && path[0] == '@') {
|
|
NM_SET_OUT(out_path, &path[1]);
|
|
return TRUE;
|
|
}
|
|
NM_SET_OUT(out_path, path);
|
|
return FALSE;
|
|
}
|
|
|
|
struct sockaddr_un;
|
|
|
|
int nm_io_sockaddr_un_set(struct sockaddr_un *ret, NMOptionBool is_abstract, const char *path);
|
|
|
|
int nm_sd_notify(const char *state);
|
|
|
|
#endif /* __NM_IO_UTILS_H__ */
|