### Constructor

# Gio UnixSocketAddress new_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.