-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
2006-09-27 Alexander Larsson <[email protected]>
* Makefile: * gfileinputstream.[ch]: * gfileoutputstream.[ch]: Add new classes. * gfileinfo.[ch]: Add flags, symlink_target and edit_name * ginputstream.[ch] * goutputstream.[ch]: Export close/pending state a bit * gvfserror.h: Add NOT_SUPPORTED Original git commit by alex <alex> at 1159368724 +0000 git-svn-id: svn+ssh://svn.gnome.org/svn/gvfs/trunk@8 0feb0166-6c39-0410-8ede-fcc449a06167
- Loading branch information
alexl
committed
Sep 13, 2007
1 parent
5ed6bbd
commit 5a498aa
Showing
14 changed files
with
405 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
#include <config.h> | ||
|
||
#include <glib.h> | ||
#include <glib/gi18n-lib.h> | ||
#include <gfileinputstream.h> | ||
|
||
G_DEFINE_TYPE (GFileInputStream, g_file_input_stream, G_TYPE_INPUT_STREAM); | ||
|
||
static GInputStreamClass *parent_class = NULL; | ||
|
||
struct _GFileInputStreamPrivate { | ||
int dummy; | ||
}; | ||
|
||
static void | ||
g_file_input_stream_class_init (GFileInputStreamClass *klass) | ||
{ | ||
parent_class = g_type_class_peek_parent (klass); | ||
|
||
g_type_class_add_private (klass, sizeof (GFileInputStreamPrivate)); | ||
} | ||
|
||
static void | ||
g_file_input_stream_init (GFileInputStream *stream) | ||
{ | ||
stream->priv = G_TYPE_INSTANCE_GET_PRIVATE (stream, | ||
G_TYPE_FILE_INPUT_STREAM, | ||
GFileInputStreamPrivate); | ||
} | ||
|
||
GFileInfo * | ||
g_file_input_stream_get_file_info (GFileInputStream *stream, | ||
GError **error) | ||
{ | ||
GFileInputStreamClass *class; | ||
GInputStream *input_stream; | ||
GFileInfo *info; | ||
|
||
g_return_val_if_fail (G_IS_FILE_INPUT_STREAM (stream), NULL); | ||
g_return_val_if_fail (stream != NULL, NULL); | ||
|
||
input_stream = G_INPUT_STREAM (stream); | ||
|
||
if (g_input_stream_is_closed (input_stream)) | ||
{ | ||
g_set_error (error, G_VFS_ERROR, G_VFS_ERROR_CLOSED, | ||
_("Stream is already closed")); | ||
return NULL; | ||
} | ||
|
||
if (g_input_stream_has_pending (input_stream)) | ||
{ | ||
g_set_error (error, G_VFS_ERROR, G_VFS_ERROR_PENDING, | ||
_("Stream has outstanding operation")); | ||
return NULL; | ||
} | ||
|
||
info = NULL; | ||
|
||
g_input_stream_set_pending (input_stream, TRUE); | ||
|
||
class = G_FILE_INPUT_STREAM_GET_CLASS (stream); | ||
if (class->get_file_info) | ||
info = class->get_file_info (stream, error); | ||
else | ||
g_set_error (error, G_VFS_ERROR, G_VFS_ERROR_NOT_SUPPORTED, | ||
_("Stream doesn't support get_file_info")); | ||
|
||
g_input_stream_set_pending (input_stream, FALSE); | ||
|
||
return info; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#ifndef __G_FILE_INPUT_STREAM_H__ | ||
#define __G_FILE_INPUT_STREAM_H__ | ||
|
||
#include <ginputstream.h> | ||
#include <gfileinfo.h> | ||
|
||
G_BEGIN_DECLS | ||
|
||
#define G_TYPE_FILE_INPUT_STREAM (g_input_stream_get_type ()) | ||
#define G_FILE_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_INPUT_STREAM, GFileInputStream)) | ||
#define G_FILE_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_INPUT_STREAM, GFileInputStreamClass)) | ||
#define G_IS_FILE_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_INPUT_STREAM)) | ||
#define G_IS_FILE_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_INPUT_STREAM)) | ||
#define G_FILE_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_INPUT_STREAM, GFileInputStreamClass)) | ||
|
||
typedef struct _GFileInputStream GFileInputStream; | ||
typedef struct _GFileInputStreamClass GFileInputStreamClass; | ||
typedef struct _GFileInputStreamPrivate GFileInputStreamPrivate; | ||
|
||
struct _GFileInputStream | ||
{ | ||
GInputStream parent; | ||
|
||
/*< private >*/ | ||
GFileInputStreamPrivate *priv; | ||
}; | ||
|
||
struct _GFileInputStreamClass | ||
{ | ||
GInputStreamClass parent_class; | ||
|
||
GFileInfo *(*get_file_info) (GFileInputStream *stream, | ||
GError **error); | ||
|
||
/* Padding for future expansion */ | ||
void (*_g_reserved1) (void); | ||
void (*_g_reserved2) (void); | ||
void (*_g_reserved3) (void); | ||
void (*_g_reserved4) (void); | ||
void (*_g_reserved5) (void); | ||
}; | ||
|
||
GType g_file_input_stream_get_type (void) G_GNUC_CONST; | ||
|
||
GFileInfo *g_file_input_stream_get_file_info (GFileInputStream *stream, | ||
GError **error); | ||
|
||
G_END_DECLS | ||
|
||
#endif /* __G_FILE_FILE_INPUT_STREAM_H__ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
#include <config.h> | ||
|
||
#include <glib.h> | ||
#include <glib/gi18n-lib.h> | ||
#include <gfileoutputstream.h> | ||
|
||
G_DEFINE_TYPE (GFileOutputStream, g_file_output_stream, G_TYPE_OUTPUT_STREAM); | ||
|
||
static GOutputStreamClass *parent_class = NULL; | ||
|
||
struct _GFileOutputStreamPrivate { | ||
guint get_final_mtime : 1; | ||
time_t final_mtime; | ||
}; | ||
|
||
static void | ||
g_file_output_stream_class_init (GFileOutputStreamClass *klass) | ||
{ | ||
parent_class = g_type_class_peek_parent (klass); | ||
|
||
g_type_class_add_private (klass, sizeof (GFileOutputStreamPrivate)); | ||
} | ||
|
||
static void | ||
g_file_output_stream_init (GFileOutputStream *stream) | ||
{ | ||
stream->priv = G_TYPE_INSTANCE_GET_PRIVATE (stream, | ||
G_TYPE_FILE_OUTPUT_STREAM, | ||
GFileOutputStreamPrivate); | ||
} | ||
|
||
GFileInfo * | ||
g_file_output_stream_get_file_info (GFileOutputStream *stream, | ||
GError **error) | ||
{ | ||
GFileOutputStreamClass *class; | ||
GOutputStream *output_stream; | ||
GFileInfo *info; | ||
|
||
g_return_val_if_fail (G_IS_FILE_OUTPUT_STREAM (stream), NULL); | ||
g_return_val_if_fail (stream != NULL, NULL); | ||
|
||
output_stream = G_OUTPUT_STREAM (stream); | ||
|
||
if (g_output_stream_is_closed (output_stream)) | ||
{ | ||
g_set_error (error, G_VFS_ERROR, G_VFS_ERROR_CLOSED, | ||
_("Stream is already closed")); | ||
return NULL; | ||
} | ||
|
||
if (g_output_stream_has_pending (output_stream)) | ||
{ | ||
g_set_error (error, G_VFS_ERROR, G_VFS_ERROR_PENDING, | ||
_("Stream has outstanding operation")); | ||
return NULL; | ||
} | ||
|
||
info = NULL; | ||
|
||
g_output_stream_set_pending (output_stream, TRUE); | ||
|
||
class = G_FILE_OUTPUT_STREAM_GET_CLASS (stream); | ||
if (class->get_file_info) | ||
info = class->get_file_info (stream, error); | ||
else | ||
g_set_error (error, G_VFS_ERROR, G_VFS_ERROR_NOT_SUPPORTED, | ||
_("Stream doesn't support get_file_info")); | ||
|
||
g_output_stream_set_pending (output_stream, FALSE); | ||
|
||
return info; | ||
} | ||
|
||
void | ||
g_file_output_stream_set_should_get_final_mtime (GFileOutputStream *stream, | ||
gboolean get_final_mtime) | ||
{ | ||
g_return_if_fail (G_IS_FILE_OUTPUT_STREAM (stream)); | ||
g_return_if_fail (stream != NULL); | ||
|
||
stream->priv->get_final_mtime = get_final_mtime; | ||
} | ||
|
||
gboolean | ||
g_file_output_stream_get_should_get_final_mtime (GFileOutputStream *stream) | ||
{ | ||
g_return_val_if_fail (G_IS_FILE_OUTPUT_STREAM (stream), FALSE); | ||
g_return_val_if_fail (stream != NULL, FALSE); | ||
|
||
return stream->priv->get_final_mtime; | ||
} | ||
|
||
time_t | ||
g_file_output_stream_get_final_mtime (GFileOutputStream *stream) | ||
{ | ||
g_return_val_if_fail (G_IS_FILE_OUTPUT_STREAM (stream), FALSE); | ||
g_return_val_if_fail (stream != NULL, FALSE); | ||
|
||
return stream->priv->final_mtime; | ||
} | ||
|
||
void | ||
g_file_output_stream_set_final_mtime (GFileOutputStream *stream, | ||
time_t final_mtime) | ||
{ | ||
g_return_if_fail (G_IS_FILE_OUTPUT_STREAM (stream)); | ||
g_return_if_fail (stream != NULL); | ||
|
||
stream->priv->final_mtime = final_mtime; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
#ifndef __G_FILE_OUTPUT_STREAM_H__ | ||
#define __G_FILE_OUTPUT_STREAM_H__ | ||
|
||
#include <goutputstream.h> | ||
#include <gfileinfo.h> | ||
|
||
G_BEGIN_DECLS | ||
|
||
#define G_TYPE_FILE_OUTPUT_STREAM (g_output_stream_get_type ()) | ||
#define G_FILE_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FILE_OUTPUT_STREAM, GFileOutputStream)) | ||
#define G_FILE_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_FILE_OUTPUT_STREAM, GFileOutputStreamClass)) | ||
#define G_IS_FILE_OUTPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FILE_OUTPUT_STREAM)) | ||
#define G_IS_FILE_OUTPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FILE_OUTPUT_STREAM)) | ||
#define G_FILE_OUTPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_FILE_OUTPUT_STREAM, GFileOutputStreamClass)) | ||
|
||
typedef struct _GFileOutputStream GFileOutputStream; | ||
typedef struct _GFileOutputStreamClass GFileOutputStreamClass; | ||
typedef struct _GFileOutputStreamPrivate GFileOutputStreamPrivate; | ||
|
||
struct _GFileOutputStream | ||
{ | ||
GOutputStream parent; | ||
|
||
/*< private >*/ | ||
GFileOutputStreamPrivate *priv; | ||
}; | ||
|
||
struct _GFileOutputStreamClass | ||
{ | ||
GOutputStreamClass parent_class; | ||
|
||
GFileInfo *(*get_file_info) (GFileOutputStream *stream, | ||
GError **error); | ||
|
||
/* Padding for future expansion */ | ||
void (*_g_reserved1) (void); | ||
void (*_g_reserved2) (void); | ||
void (*_g_reserved3) (void); | ||
void (*_g_reserved4) (void); | ||
void (*_g_reserved5) (void); | ||
}; | ||
|
||
GType g_file_output_stream_get_type (void) G_GNUC_CONST; | ||
|
||
|
||
GFileInfo *g_file_output_stream_get_file_info (GFileOutputStream *stream, | ||
GError **error); | ||
void g_file_output_stream_set_should_get_final_mtime (GFileOutputStream *stream, | ||
gboolean get_final_mtime); | ||
time_t g_file_output_stream_get_final_mtime (GFileOutputStream *stream); | ||
|
||
gboolean g_file_output_stream_get_should_get_final_mtime (GFileOutputStream *stream); | ||
void g_file_output_stream_set_final_mtime (GFileOutputStream *stream, | ||
time_t final_mtime); | ||
|
||
|
||
G_END_DECLS | ||
|
||
#endif /* __G_FILE_FILE_OUTPUT_STREAM_H__ */ |
Oops, something went wrong.