This file is indexed.

/usr/include/d/gtkd-3/gio/UnixSocketAddress.d is in libgtkd-3-dev 3.7.5-2build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
/*
 * This file is part of gtkD.
 *
 * gtkD is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either version 3
 * of the License, or (at your option) any later version, with
 * some exceptions, please read the COPYING file.
 *
 * gtkD is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with gtkD; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
 */

// generated automatically - do not change
// find conversion definition on APILookup.txt
// implement new conversion functionalities on the wrap.utils pakage


module gio.UnixSocketAddress;

private import gio.SocketAddress;
private import gio.c.functions;
public  import gio.c.types;
private import glib.ConstructionException;
private import glib.Str;
private import gobject.ObjectG;
public  import gtkc.giotypes;


/**
 * Support for UNIX-domain (also known as local) sockets.
 * 
 * UNIX domain sockets are generally visible in the filesystem.
 * However, some systems support abstract socket names which are not
 * visible in the filesystem and not affected by the filesystem
 * permissions, visibility, etc. Currently this is only supported
 * under Linux. If you attempt to use abstract sockets on other
 * systems, function calls may return %G_IO_ERROR_NOT_SUPPORTED
 * errors. You can use g_unix_socket_address_abstract_names_supported()
 * to see if abstract names are supported.
 * 
 * Note that `<gio/gunixsocketaddress.h>` belongs to the UNIX-specific GIO
 * interfaces, thus you have to use the `gio-unix-2.0.pc` pkg-config file
 * when using it.
 */
public class UnixSocketAddress : SocketAddress
{
	/** the main Gtk struct */
	protected GUnixSocketAddress* gUnixSocketAddress;

	/** Get the main Gtk struct */
	public GUnixSocketAddress* getUnixSocketAddressStruct(bool transferOwnership = false)
	{
		if (transferOwnership)
			ownedRef = false;
		return gUnixSocketAddress;
	}

	/** the main Gtk struct as a void* */
	protected override void* getStruct()
	{
		return cast(void*)gUnixSocketAddress;
	}

	protected override void setStruct(GObject* obj)
	{
		gUnixSocketAddress = cast(GUnixSocketAddress*)obj;
		super.setStruct(obj);
	}

	/**
	 * Sets our main struct and passes it to the parent class.
	 */
	public this (GUnixSocketAddress* gUnixSocketAddress, bool ownedRef = false)
	{
		this.gUnixSocketAddress = gUnixSocketAddress;
		super(cast(GSocketAddress*)gUnixSocketAddress, ownedRef);
	}


	/** */
	public static GType getType()
	{
		return g_unix_socket_address_get_type();
	}

	/**
	 * Creates a new #GUnixSocketAddress for @path.
	 *
	 * To create abstract socket addresses, on systems that support that,
	 * use g_unix_socket_address_new_abstract().
	 *
	 * Params:
	 *     path = the socket path
	 *
	 * Returns: a new #GUnixSocketAddress
	 *
	 * Since: 2.22
	 *
	 * Throws: ConstructionException GTK+ fails to create the object.
	 */
	public this(string path)
	{
		auto p = g_unix_socket_address_new(Str.toStringz(path));

		if(p is null)
		{
			throw new ConstructionException("null returned by new");
		}

		this(cast(GUnixSocketAddress*) p, true);
	}

	/**
	 * 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.
	 *
	 * Params:
	 *     path = the name
	 *     type = a #GUnixSocketAddressType
	 *
	 * Returns: a new #GUnixSocketAddress
	 *
	 * Since: 2.26
	 *
	 * Throws: ConstructionException GTK+ fails to create the object.
	 */
	public this(string path, GUnixSocketAddressType type)
	{
		auto p = g_unix_socket_address_new_with_type(Str.toStringz(path), cast(int)path.length, type);

		if(p is null)
		{
			throw new ConstructionException("null returned by new_with_type");
		}

		this(cast(GUnixSocketAddress*) p, true);
	}

	/**
	 * Checks if abstract UNIX domain socket names are supported.
	 *
	 * Returns: %TRUE if supported, %FALSE otherwise
	 *
	 * Since: 2.22
	 */
	public static bool abstractNamesSupported()
	{
		return g_unix_socket_address_abstract_names_supported() != 0;
	}

	/**
	 * Gets @address's type.
	 *
	 * Returns: a #GUnixSocketAddressType
	 *
	 * Since: 2.26
	 */
	public GUnixSocketAddressType getAddressType()
	{
		return g_unix_socket_address_get_address_type(gUnixSocketAddress);
	}

	/**
	 * Tests if @address is abstract.
	 *
	 * Deprecated: Use g_unix_socket_address_get_address_type()
	 *
	 * Returns: %TRUE if the address is abstract, %FALSE otherwise
	 *
	 * Since: 2.22
	 */
	public bool getIsAbstract()
	{
		return g_unix_socket_address_get_is_abstract(gUnixSocketAddress) != 0;
	}

	/**
	 * Gets @address's path, or for abstract sockets the "name".
	 *
	 * Guaranteed to be zero-terminated, but an abstract socket
	 * may contain embedded zeros, and thus you should use
	 * g_unix_socket_address_get_path_len() to get the true length
	 * of this string.
	 *
	 * Returns: the path for @address
	 *
	 * Since: 2.22
	 */
	public string getPath()
	{
		return Str.toString(g_unix_socket_address_get_path(gUnixSocketAddress));
	}

	/**
	 * Gets the length of @address's path.
	 *
	 * For details, see g_unix_socket_address_get_path().
	 *
	 * Returns: the length of the path
	 *
	 * Since: 2.22
	 */
	public size_t getPathLen()
	{
		return g_unix_socket_address_get_path_len(gUnixSocketAddress);
	}
}