1
0
mirror of https://github.com/falk-werner/webfuse-provider synced 2026-03-02 04:09:18 +00:00

added implementation of readdir

This commit is contained in:
Falk Werner
2019-03-03 13:34:43 +01:00
parent bc38b5d9b1
commit 5f9096914e
6 changed files with 106 additions and 21 deletions

View File

@@ -0,0 +1,45 @@
#include "wsfs/provider/dirbuffer_intern.h"
#include <stdlib.h>
struct wsfsp_dirbuffer * wsfsp_dirbuffer_create(void)
{
struct wsfsp_dirbuffer * buffer = malloc(sizeof(struct wsfsp_dirbuffer));
if (NULL != buffer)
{
buffer->entries = json_array();
}
return buffer;
}
void wsfsp_dirbuffer_dispose(
struct wsfsp_dirbuffer * buffer)
{
if (NULL != buffer->entries)
{
json_decref(buffer->entries);
}
free(buffer);
}
void wsfsp_dirbuffer_add(
struct wsfsp_dirbuffer * buffer,
char const * name,
ino_t inode)
{
json_t * entry = json_object();
json_object_set_new(entry, "name", json_string(name));
json_object_set_new(entry, "inode", json_integer(inode));
json_array_append(buffer->entries, entry);
}
json_t * wsfsp_dirbuffer_take(
struct wsfsp_dirbuffer * buffer)
{
json_t * entries = buffer->entries;
buffer->entries = NULL;
return entries;
}

View File

@@ -0,0 +1,15 @@
#ifndef WSFS_PROVIDER_DIRBUFFER_INTERN_H
#define WSFS_PROVIDER_DIRBUFFER_INTERN_H
#include "wsfs/provider/dirbuffer.h"
#include <jansson.h>
struct wsfsp_dirbuffer
{
json_t * entries;
};
extern json_t * wsfsp_dirbuffer_take(
struct wsfsp_dirbuffer * buffer);
#endif

View File

@@ -3,6 +3,8 @@
#include <stdio.h>
#include "wsfs/provider/operation/error.h"
#include "wsfs/provider/dirbuffer_intern.h"
#include "wsfs/provider/request.h"
#include "wsfs/util.h"
void wsfsp_readdir(
@@ -37,10 +39,7 @@ void wsfsp_respond_readdir(
struct wsfsp_request * request,
struct wsfsp_dirbuffer * dirbuffer)
{
(void) request;
(void) dirbuffer;
// ToDo: implement me
wsfsp_respond_error(request, -1);
json_t * result = wsfsp_dirbuffer_take(dirbuffer);
wsfsp_respond(request, result);
}