Constructor

GioUnixSocketAddressnew_with_type

since: 2.26

Declaration

GSocketAddress*
g_unix_socket_address_new_with_type (
  const gchar* path,
  gint path_len,
  GUnixSocketAddressType type
)

Description

Creates a new GUnixSocketAddress of type type with name path.

If type is G_UNIX_SOCKET_ADDRESS_PATH, this is equivalent to calling g_unix_socket_address_new().

If type is G_UNIX_SOCKET_ADDRESS_ANONYMOUS, path and path_len will be ignored.

If path_type is G_UNIX_SOCKET_ADDRESS_ABSTRACT, then path_len bytes of path will be copied to the socket’s path, and only those bytes will be considered part of the name. (If path_len is -1, then path is assumed to be NUL-terminated.) For example, if path was “test”, then calling g_socket_address_get_native_size() on the returned socket would return 7 (2 bytes of overhead, 1 byte for the abstract-socket indicator byte, and 4 bytes for the name “test”).

If path_type is G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED, then path_len bytes of path will be copied to the socket’s path, the rest of the path will be padded with 0 bytes, and the entire zero-padded buffer will be considered the name. (As above, if path_len is -1, then path is assumed to be NUL-terminated.) In this case, g_socket_address_get_native_size() will always return the full size of a struct sockaddr_un, although g_unix_socket_address_get_path_len() will still return just the length of path.

G_UNIX_SOCKET_ADDRESS_ABSTRACT is preferred over G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED for new programs. Of course, when connecting to a server created by another process, you must use the appropriate type corresponding to how that process created its listening socket.

Available since: 2.26

Parameters

path

Type: An array of char

The name.

The length of the array is specified in the path_len argument.
The data is owned by the caller of the function.
path_len

Type: gint

The length of path, or -1

type

Type: GUnixSocketAddressType

A GUnixSocketAddressType.

Return value

Type: GSocketAddress

A new GUnixSocketAddress.

The caller of the function takes ownership of the data, and is responsible for freeing it.