#include <glib.h>
#include <glib/gstdio.h>
#include "gcancellable.h"
+#include "gfiledescriptorbased.h"
#include "gioerror.h"
#include "glocalfileinputstream.h"
#include "glocalfileinfo.h"
#include "gioalias.h"
+
+static void g_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface);
#define g_local_file_input_stream_get_type _g_local_file_input_stream_get_type
-G_DEFINE_TYPE (GLocalFileInputStream, g_local_file_input_stream, G_TYPE_FILE_INPUT_STREAM);
+G_DEFINE_TYPE_WITH_CODE (GLocalFileInputStream, g_local_file_input_stream, G_TYPE_FILE_INPUT_STREAM,
+ G_IMPLEMENT_INTERFACE (G_TYPE_FILE_DESCRIPTOR_BASED,
+ g_file_descriptor_based_iface_init));
struct _GLocalFileInputStreamPrivate {
int fd;
const char *attributes,
GCancellable *cancellable,
GError **error);
+static int g_local_file_input_stream_get_fd (GFileDescriptorBased *stream);
static void
g_local_file_input_stream_finalize (GObject *object)
}
static void
+g_file_descriptor_based_iface_init (GFileDescriptorBasedIface *iface)
+{
+ iface->get_fd = g_local_file_input_stream_get_fd;
+}
+
+static void
g_local_file_input_stream_init (GLocalFileInputStream *info)
{
info->priv = G_TYPE_INSTANCE_GET_PRIVATE (info,
attributes,
error);
}
+
+static int
+g_local_file_input_stream_get_fd (GFileDescriptorBased *fd_based)
+{
+ GLocalFileInputStream *stream = G_LOCAL_FILE_INPUT_STREAM (fd_based);
+ return stream->priv->fd;
+}
+