summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
Diffstat (limited to 'daemon')
-rw-r--r--daemon/gvfsjobcloseread.c9
-rw-r--r--daemon/gvfsjobclosewrite.c7
-rw-r--r--daemon/gvfsjobenumerate.c7
-rw-r--r--daemon/gvfsjobgetfsinfo.c7
-rw-r--r--daemon/gvfsjobgetinfo.c8
-rw-r--r--daemon/gvfsjobmount.c7
-rw-r--r--daemon/gvfsjobmountmountable.c7
-rw-r--r--daemon/gvfsjobopenforread.c7
-rw-r--r--daemon/gvfsjobopenforwrite.c21
-rw-r--r--daemon/gvfsjobread.c7
-rw-r--r--daemon/gvfsjobseekread.c7
-rw-r--r--daemon/gvfsjobseekwrite.c7
-rw-r--r--daemon/gvfsjobwrite.c7
13 files changed, 107 insertions, 1 deletions
diff --git a/daemon/gvfsjobcloseread.c b/daemon/gvfsjobcloseread.c
index 22658a06..7ab8b206 100644
--- a/daemon/gvfsjobcloseread.c
+++ b/daemon/gvfsjobcloseread.c
@@ -83,7 +83,14 @@ run (GVfsJob *job)
{
GVfsJobCloseRead *op_job = G_VFS_JOB_CLOSE_READ (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
-
+
+ if (class->close_read == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->close_read (op_job->backend,
op_job,
op_job->handle);
diff --git a/daemon/gvfsjobclosewrite.c b/daemon/gvfsjobclosewrite.c
index c4c2c67b..94156179 100644
--- a/daemon/gvfsjobclosewrite.c
+++ b/daemon/gvfsjobclosewrite.c
@@ -83,6 +83,13 @@ run (GVfsJob *job)
{
GVfsJobCloseWrite *op_job = G_VFS_JOB_CLOSE_WRITE (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+
+ if (class->close_write == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
class->close_write (op_job->backend,
op_job,
diff --git a/daemon/gvfsjobenumerate.c b/daemon/gvfsjobenumerate.c
index f1dd6924..c36bd798 100644
--- a/daemon/gvfsjobenumerate.c
+++ b/daemon/gvfsjobenumerate.c
@@ -176,6 +176,13 @@ run (GVfsJob *job)
GVfsJobEnumerate *op_job = G_VFS_JOB_ENUMERATE (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+ if (class->enumerate == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->enumerate (op_job->backend,
op_job,
op_job->filename,
diff --git a/daemon/gvfsjobgetfsinfo.c b/daemon/gvfsjobgetfsinfo.c
index de17ba28..9cb17d7e 100644
--- a/daemon/gvfsjobgetfsinfo.c
+++ b/daemon/gvfsjobgetfsinfo.c
@@ -101,6 +101,13 @@ run (GVfsJob *job)
GVfsJobGetFsInfo *op_job = G_VFS_JOB_GET_FS_INFO (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+ if (class->get_fs_info == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->get_fs_info (op_job->backend,
op_job,
op_job->filename,
diff --git a/daemon/gvfsjobgetinfo.c b/daemon/gvfsjobgetinfo.c
index 64aae474..1f935de7 100644
--- a/daemon/gvfsjobgetinfo.c
+++ b/daemon/gvfsjobgetinfo.c
@@ -1,3 +1,4 @@
+
#include <config.h>
#include <unistd.h>
@@ -103,6 +104,13 @@ run (GVfsJob *job)
{
GVfsJobGetInfo *op_job = G_VFS_JOB_GET_INFO (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+
+ if (class->get_info == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
class->get_info (op_job->backend,
op_job,
diff --git a/daemon/gvfsjobmount.c b/daemon/gvfsjobmount.c
index 76b51e0e..beb67b48 100644
--- a/daemon/gvfsjobmount.c
+++ b/daemon/gvfsjobmount.c
@@ -76,6 +76,13 @@ run (GVfsJob *job)
{
GVfsJobMount *op_job = G_VFS_JOB_MOUNT (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+
+ if (class->mount == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
class->mount (op_job->backend,
op_job,
diff --git a/daemon/gvfsjobmountmountable.c b/daemon/gvfsjobmountmountable.c
index d0c9e8d1..9cb926c0 100644
--- a/daemon/gvfsjobmountmountable.c
+++ b/daemon/gvfsjobmountmountable.c
@@ -119,6 +119,13 @@ run (GVfsJob *job)
GVfsJobMountMountable *op_job = G_VFS_JOB_MOUNT_MOUNTABLE (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+ if (class->mount_mountable == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->mount_mountable (op_job->backend,
op_job,
op_job->filename,
diff --git a/daemon/gvfsjobopenforread.c b/daemon/gvfsjobopenforread.c
index 2fdcbdb7..e5ff6951 100644
--- a/daemon/gvfsjobopenforread.c
+++ b/daemon/gvfsjobopenforread.c
@@ -102,6 +102,13 @@ run (GVfsJob *job)
GVfsJobOpenForRead *op_job = G_VFS_JOB_OPEN_FOR_READ (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+ if (class->open_for_read == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->open_for_read (op_job->backend,
op_job,
op_job->filename);
diff --git a/daemon/gvfsjobopenforwrite.c b/daemon/gvfsjobopenforwrite.c
index eb7f56c4..b05566bc 100644
--- a/daemon/gvfsjobopenforwrite.c
+++ b/daemon/gvfsjobopenforwrite.c
@@ -115,18 +115,39 @@ run (GVfsJob *job)
if (op_job->mode == OPEN_FOR_WRITE_CREATE)
{
+ if (class->create == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->create (op_job->backend,
op_job,
op_job->filename);
}
else if (op_job->mode == OPEN_FOR_WRITE_APPEND)
{
+ if (class->append_to == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->append_to (op_job->backend,
op_job,
op_job->filename);
}
else if (op_job->mode == OPEN_FOR_WRITE_REPLACE)
{
+ if (class->replace == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->replace (op_job->backend,
op_job,
op_job->filename,
diff --git a/daemon/gvfsjobread.c b/daemon/gvfsjobread.c
index 015187b5..aed24f80 100644
--- a/daemon/gvfsjobread.c
+++ b/daemon/gvfsjobread.c
@@ -92,6 +92,13 @@ run (GVfsJob *job)
GVfsJobRead *op_job = G_VFS_JOB_READ (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+ if (class->read == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->read (op_job->backend,
op_job,
op_job->handle,
diff --git a/daemon/gvfsjobseekread.c b/daemon/gvfsjobseekread.c
index 74346f19..93a0e965 100644
--- a/daemon/gvfsjobseekread.c
+++ b/daemon/gvfsjobseekread.c
@@ -91,6 +91,13 @@ run (GVfsJob *job)
GVfsJobSeekRead *op_job = G_VFS_JOB_SEEK_READ (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+ if (class->seek_on_read == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->seek_on_read (op_job->backend,
op_job,
op_job->handle,
diff --git a/daemon/gvfsjobseekwrite.c b/daemon/gvfsjobseekwrite.c
index 835c76f2..75980af0 100644
--- a/daemon/gvfsjobseekwrite.c
+++ b/daemon/gvfsjobseekwrite.c
@@ -91,6 +91,13 @@ run (GVfsJob *job)
GVfsJobSeekWrite *op_job = G_VFS_JOB_SEEK_WRITE (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+ if (class->seek_on_write == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->seek_on_write (op_job->backend,
op_job,
op_job->handle,
diff --git a/daemon/gvfsjobwrite.c b/daemon/gvfsjobwrite.c
index 0b69d3e1..7ed4445e 100644
--- a/daemon/gvfsjobwrite.c
+++ b/daemon/gvfsjobwrite.c
@@ -92,6 +92,13 @@ run (GVfsJob *job)
GVfsJobWrite *op_job = G_VFS_JOB_WRITE (job);
GVfsBackendClass *class = G_VFS_BACKEND_GET_CLASS (op_job->backend);
+ if (class->write == NULL)
+ {
+ g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported by backend"));
+ return;
+ }
+
class->write (op_job->backend,
op_job,
op_job->handle,