tree-wide: Introduce sd-forward.h and shared-forward.h headers
Let's not leak details from src/shared and src/libsystemd into src/basic, even though you can't actually do anything useful with just forward declarations from src/shared. The sd-forward.h header is put in src/libsystemd/sd-common as we don't have a directory for shared internal headers for libsystemd yet. Let's also rename forward.h to basic-forward.h to keep things self-explanatory.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
int bus_container_connect_socket(sd_bus *b);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
int bus_add_match_internal(sd_bus *bus, const char *match, uint64_t timeout_usec, uint64_t *ret_counter);
|
||||
int bus_add_match_internal_async(sd_bus *bus, sd_bus_slot **ret, const char *match, sd_bus_message_handler_t callback, void *userdata, uint64_t timeout_usec);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
typedef struct sd_bus_creds {
|
||||
bool allocated;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
int bus_creds_dump(sd_bus_creds *c, FILE *f, bool terse);
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "sd-bus-protocol.h"
|
||||
|
||||
#include "errno-util.h"
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
bool bus_error_is_dirty(sd_bus_error *e);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
typedef enum BusAuth BusAuth;
|
||||
typedef enum BusSlotType BusSlotType;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
#define MEMFD_CACHE_MAX 32
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
bool signature_is_single(const char *s, bool allow_dict_entry);
|
||||
bool signature_is_pair(const char *s);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
void bus_socket_setup(sd_bus *b);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
void bus_track_dispatch(sd_bus_track *track);
|
||||
void bus_track_close(sd_bus_track *track);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
bool bus_type_is_valid(char c) _const_;
|
||||
bool bus_type_is_basic(char c) _const_;
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
/* IWYU pragma: always_keep */
|
||||
|
||||
#include "basic-forward.h" /* IWYU pragma: export */
|
||||
|
||||
typedef void (*_sd_destroy_t)(void *userdata);
|
||||
|
||||
typedef union sd_id128 sd_id128_t;
|
||||
|
||||
typedef struct sd_event sd_event;
|
||||
typedef struct sd_event_source sd_event_source;
|
||||
|
||||
typedef int (*sd_event_handler_t)(sd_event_source *s, void *userdata);
|
||||
typedef int (*sd_event_io_handler_t)(sd_event_source *s, int fd, uint32_t revents, void *userdata);
|
||||
typedef int (*sd_event_time_handler_t)(sd_event_source *s, uint64_t usec, void *userdata);
|
||||
typedef int (*sd_event_signal_handler_t)(sd_event_source *s, const struct signalfd_siginfo *si, void *userdata);
|
||||
typedef int (*sd_event_inotify_handler_t)(sd_event_source *s, const struct inotify_event *event, void *userdata);
|
||||
typedef _sd_destroy_t sd_event_destroy_t;
|
||||
|
||||
enum ENUM_TYPE_S64(sd_json_format_flags_t);
|
||||
enum ENUM_TYPE_S64(sd_json_dispatch_flags_t);
|
||||
enum ENUM_TYPE_S64(sd_json_variant_type_t);
|
||||
enum ENUM_TYPE_S64(sd_json_parse_flags_t);
|
||||
|
||||
typedef enum sd_json_format_flags_t sd_json_format_flags_t;
|
||||
typedef enum sd_json_dispatch_flags_t sd_json_dispatch_flags_t;
|
||||
typedef enum sd_json_variant_type_t sd_json_variant_type_t;
|
||||
typedef enum sd_json_parse_flags_t sd_json_parse_flags_t;
|
||||
|
||||
typedef struct sd_json_variant sd_json_variant;
|
||||
|
||||
typedef struct sd_bus sd_bus;
|
||||
typedef struct sd_bus_error sd_bus_error;
|
||||
typedef struct sd_bus_error_map sd_bus_error_map;
|
||||
typedef struct sd_bus_message sd_bus_message;
|
||||
typedef struct sd_bus_slot sd_bus_slot;
|
||||
typedef struct sd_bus_creds sd_bus_creds;
|
||||
typedef struct sd_bus_track sd_bus_track;
|
||||
typedef struct sd_bus_vtable sd_bus_vtable;
|
||||
|
||||
typedef int (*sd_bus_message_handler_t)(sd_bus_message *m, void *userdata, sd_bus_error *ret_error);
|
||||
typedef int (*sd_bus_property_get_t)(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *ret_error);
|
||||
typedef int (*sd_bus_property_set_t)(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *value, void *userdata, sd_bus_error *ret_error);
|
||||
typedef int (*sd_bus_object_find_t)(sd_bus *bus, const char *path, const char *interface, void *userdata, void **ret_found, sd_bus_error *ret_error);
|
||||
typedef int (*sd_bus_node_enumerator_t)(sd_bus *bus, const char *prefix, void *userdata, char ***ret_nodes, sd_bus_error *ret_error);
|
||||
typedef int (*sd_bus_track_handler_t)(sd_bus_track *track, void *userdata);
|
||||
typedef _sd_destroy_t sd_bus_destroy_t;
|
||||
|
||||
enum ENUM_TYPE_S64(sd_device_action_t);
|
||||
|
||||
typedef enum sd_device_action_t sd_device_action_t;
|
||||
|
||||
typedef struct sd_device sd_device;
|
||||
typedef struct sd_device_enumerator sd_device_enumerator;
|
||||
typedef struct sd_device_monitor sd_device_monitor;
|
||||
|
||||
typedef struct sd_netlink sd_netlink;
|
||||
typedef struct sd_netlink_message sd_netlink_message;
|
||||
typedef struct sd_netlink_slot sd_netlink_slot;
|
||||
|
||||
typedef int (*sd_netlink_message_handler_t)(sd_netlink *nl, sd_netlink_message *m, void *userdata);
|
||||
typedef _sd_destroy_t sd_netlink_destroy_t;
|
||||
|
||||
typedef struct sd_network_monitor sd_network_monitor;
|
||||
|
||||
enum ENUM_TYPE_S64(sd_dhcp_lease_server_type_t);
|
||||
enum ENUM_TYPE_S64(sd_lldp_rx_event_t);
|
||||
enum ENUM_TYPE_S64(sd_lldp_multicast_mode_t);
|
||||
enum ENUM_TYPE_S64(sd_ndisc_event_t);
|
||||
|
||||
typedef enum sd_dhcp_lease_server_type_t sd_dhcp_lease_server_type_t;
|
||||
typedef enum sd_lldp_rx_event_t sd_lldp_rx_event_t;
|
||||
typedef enum sd_lldp_multicast_mode_t sd_lldp_multicast_mode_t;
|
||||
typedef enum sd_ndisc_event_t sd_ndisc_event_t;
|
||||
|
||||
typedef struct sd_ipv4ll sd_ipv4ll;
|
||||
typedef struct sd_dhcp_client sd_dhcp_client;
|
||||
typedef struct sd_dhcp_lease sd_dhcp_lease;
|
||||
typedef struct sd_dhcp_route sd_dhcp_route;
|
||||
typedef struct sd_dns_resolver sd_dns_resolver;
|
||||
typedef struct sd_dhcp_server sd_dhcp_server;
|
||||
typedef struct sd_ndisc sd_ndisc;
|
||||
typedef struct sd_radv sd_radv;
|
||||
typedef struct sd_dhcp6_client sd_dhcp6_client;
|
||||
typedef struct sd_dhcp6_lease sd_dhcp6_lease;
|
||||
typedef struct sd_lldp_tx sd_lldp_tx;
|
||||
typedef struct sd_lldp_rx sd_lldp_rx;
|
||||
typedef struct sd_lldp_neighbor sd_lldp_neighbor;
|
||||
|
||||
typedef struct ICMP6Packet ICMP6Packet;
|
||||
|
||||
enum ENUM_TYPE_S64(sd_varlink_method_flags_t);
|
||||
enum ENUM_TYPE_S64(sd_varlink_interface_flags_t);
|
||||
enum ENUM_TYPE_S64(sd_varlink_symbol_type_t);
|
||||
enum ENUM_TYPE_S64(sd_varlink_field_type_t);
|
||||
enum ENUM_TYPE_S64(sd_varlink_field_direction_t);
|
||||
enum ENUM_TYPE_S64(sd_varlink_field_flags_t);
|
||||
enum ENUM_TYPE_S64(sd_varlink_idl_format_flags_t);
|
||||
enum ENUM_TYPE_S64(sd_varlink_reply_flags_t);
|
||||
enum ENUM_TYPE_S64(sd_varlink_server_flags_t);
|
||||
enum ENUM_TYPE_S64(sd_varlink_invocation_flags_t);
|
||||
|
||||
typedef enum sd_varlink_method_flags_t sd_varlink_method_flags_t;
|
||||
typedef enum sd_varlink_interface_flags_t sd_varlink_interface_flags_t;
|
||||
typedef enum sd_varlink_symbol_type_t sd_varlink_symbol_type_t;
|
||||
typedef enum sd_varlink_field_type_t sd_varlink_field_type_t;
|
||||
typedef enum sd_varlink_field_direction_t sd_varlink_field_direction_t;
|
||||
typedef enum sd_varlink_field_flags_t sd_varlink_field_flags_t;
|
||||
typedef enum sd_varlink_idl_format_flags_t sd_varlink_idl_format_flags_t;
|
||||
typedef enum sd_varlink_reply_flags_t sd_varlink_reply_flags_t;
|
||||
typedef enum sd_varlink_server_flags_t sd_varlink_server_flags_t;
|
||||
typedef enum sd_varlink_invocation_flags_t sd_varlink_invocation_flags_t;
|
||||
|
||||
typedef struct sd_varlink sd_varlink;
|
||||
typedef struct sd_varlink_server sd_varlink_server;
|
||||
typedef struct sd_varlink_field sd_varlink_field;
|
||||
typedef struct sd_varlink_symbol sd_varlink_symbol;
|
||||
typedef struct sd_varlink_interface sd_varlink_interface;
|
||||
|
||||
typedef struct sd_journal sd_journal;
|
||||
|
||||
typedef struct sd_resolve sd_resolve;
|
||||
typedef struct sd_resolve_query sd_resolve_query;
|
||||
|
||||
typedef struct sd_hwdb sd_hwdb;
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
typedef enum MatchInitializedType {
|
||||
MATCH_INITIALIZED_NO, /* only devices without a db entry */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
int update_match_strv(Hashmap **match_strv, const char *key, const char *value, bool clear_on_null);
|
||||
bool device_match_sysattr(sd_device *device, Hashmap *match_sysattr, Hashmap *nomatch_sysattr);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "sd-device.h"
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "iterator.h"
|
||||
|
||||
#define LATEST_UDEV_DATABASE_VERSION 1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
typedef enum MonitorNetlinkGroup {
|
||||
MONITOR_GROUP_NONE,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "sd-device.h" /* IWYU pragma: export */
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
int device_new_from_mode_and_devnum(sd_device **ret, mode_t mode, dev_t devnum);
|
||||
int device_new_from_nulstr(sd_device **ret, char *nulstr, size_t len);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "sd-device.h"
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "log.h"
|
||||
|
||||
#define device_unref_and_replace(a, b) \
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
#include "sd-event.h"
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "inotify-util.h"
|
||||
#include "list.h"
|
||||
#include "ratelimit.h"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "sd-event.h"
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
extern const struct hash_ops event_source_hash_ops;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "iterator.h"
|
||||
#include "sparse-endian.h"
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "sd-id128.h"
|
||||
|
||||
#include "errno-util.h"
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
bool id128_is_valid(const char *s) _pure_;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
const char* audit_type_to_string(int type);
|
||||
int audit_type_from_string(const char *s);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
int catalog_import_file(OrderedHashmap **h, int fd, const char *path);
|
||||
int catalog_update(const char *database, const char *root, const char* const *dirs);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* Contact: fsprg@point-at-infinity.org
|
||||
*/
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "journal-file.h"
|
||||
|
||||
int journal_file_append_tag(JournalFile *f);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "sd-id128.h"
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "sparse-endian.h"
|
||||
|
||||
/*
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include "compress.h"
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "gcrypt-util.h"
|
||||
#include "journal-def.h"
|
||||
#include "mmap-cache.h"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "journal-file.h"
|
||||
#include "list.h"
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "time-util.h"
|
||||
|
||||
#define JOURNAL_FILES_MAX 7168u
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
int journal_directory_vacuum(const char *directory, uint64_t max_use, uint64_t n_max_files, usec_t max_retention_usec, usec_t *oldest_usec, bool verbose);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LicenseRef-lookup3-public-domain */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
uint32_t jenkins_hashword(const uint32_t *k, size_t length, uint32_t initval) _pure_;
|
||||
void jenkins_hashword2(const uint32_t *k, size_t length, uint32_t *pc, uint32_t *pb);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "journal-def.h"
|
||||
|
||||
typedef struct MMapCache MMapCache;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
/* This header should include all prototypes only the JSON parser itself and
|
||||
* its tests need access to. Normal code consuming the JSON parser should not
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
#include "sd-json.h"
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "log.h"
|
||||
#include "string-util.h"
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
#define CTRL_GENL_NAME "nlctrl"
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <linux/netlink.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "list.h"
|
||||
#include "netlink-types.h"
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "netlink-internal.h"
|
||||
|
||||
int netlink_slot_allocate(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
typedef enum NLAType {
|
||||
NETLINK_TYPE_UNSPEC, /* NLA_UNSPEC */
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include <linux/rtnetlink.h>
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "in-addr-util.h"
|
||||
|
||||
#define RTA_FLAGS(rta) ((rta)->rta_type & ~NLA_TYPE_MASK)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include "constants.h"
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
#define NETWORK_DIRS ((const char* const*) CONF_PATHS_STRV("systemd/network"))
|
||||
#define NETWORK_DIRS_NULSTR CONF_PATHS_NULSTR("systemd/network")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "sd-path.h"
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
#include "runtime-scope.h"
|
||||
|
||||
typedef enum LookupPathsFlags {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "sd-varlink.h"
|
||||
#include "sd-varlink-idl.h"
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
bool varlink_idl_field_name_is_valid(const char *name);
|
||||
bool varlink_idl_symbol_name_is_valid(const char *name);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "sd-varlink.h"
|
||||
|
||||
#include "list.h"
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
typedef enum VarlinkState {
|
||||
/* Client side states */
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "sd-varlink.h"
|
||||
|
||||
#include "forward.h"
|
||||
#include "sd-forward.h"
|
||||
|
||||
int varlink_get_peer_pidref(sd_varlink *v, PidRef *ret);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user