Compare commits
No commits in common. "v0.1.0" and "master" have entirely different histories.
@ -25,8 +25,8 @@ string(TOLOWER ${BUILD_PLATFORM} PLATFORM_FILE)
|
|||||||
|
|
||||||
add_library(miniffs STATIC)
|
add_library(miniffs STATIC)
|
||||||
target_sources(miniffs PRIVATE platform/${PLATFORM_FILE}.c miniffs.c)
|
target_sources(miniffs PRIVATE platform/${PLATFORM_FILE}.c miniffs.c)
|
||||||
target_include_directories(miniffs PRIVATE includes/)
|
target_include_directories(miniffs PUBLIC includes/)
|
||||||
target_compile_definitions(miniffs PRIVATE BUILD_PLATFORM_${BUILD_PLATFORM})
|
target_compile_definitions(miniffs PUBLIC BUILD_PLATFORM_${BUILD_PLATFORM})
|
||||||
|
|
||||||
if (BUILD_HOST_TOOLS)
|
if (BUILD_HOST_TOOLS)
|
||||||
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
|
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
|
||||||
|
|||||||
@ -28,6 +28,7 @@ typedef struct miniffs_t
|
|||||||
{
|
{
|
||||||
miniffs_header_t *header;
|
miniffs_header_t *header;
|
||||||
|
|
||||||
|
void *memoryOffset;
|
||||||
#ifdef BUILD_HOST_TOOLS
|
#ifdef BUILD_HOST_TOOLS
|
||||||
uint32_t file_count; /***< Number of valid files in the list */
|
uint32_t file_count; /***< Number of valid files in the list */
|
||||||
uint32_t file_list_count; /***< Number of items in the list */
|
uint32_t file_list_count; /***< Number of items in the list */
|
||||||
|
|||||||
@ -10,8 +10,10 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#else
|
#else
|
||||||
|
#include <stdlib.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#endif
|
#endif
|
||||||
@ -19,20 +21,7 @@
|
|||||||
#define __miniffs_internal
|
#define __miniffs_internal
|
||||||
#include <miniffs.h>
|
#include <miniffs.h>
|
||||||
|
|
||||||
/* Exported API */
|
/* Internal functions */
|
||||||
miniffs_t *miniffs_openfs(char *host_file)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Some internal functions */
|
|
||||||
void *miniffs_getfileaddr(miniffs_t *fs, fileentry_t *fent)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
size_t host_map_file(char *filename, char **dest)
|
size_t host_map_file(char *filename, char **dest)
|
||||||
{
|
{
|
||||||
char *ret_ptr;
|
char *ret_ptr;
|
||||||
@ -55,7 +44,7 @@ size_t host_map_file(char *filename, char **dest)
|
|||||||
|
|
||||||
fd = open(filename, O_RDWR);
|
fd = open(filename, O_RDWR);
|
||||||
fstat(fd, &FileStat);
|
fstat(fd, &FileStat);
|
||||||
ret_ptr = (char *)mmap(NULL, FileStat.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
|
ret_ptr = (char *)mmap(NULL, FileStat.st_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
|
||||||
close(fd);
|
close(fd);
|
||||||
fileSize = FileStat.st_size;
|
fileSize = FileStat.st_size;
|
||||||
if (ret_ptr == MAP_FAILED)
|
if (ret_ptr == MAP_FAILED)
|
||||||
@ -77,4 +66,43 @@ void host_unmap_file(char **dest, size_t length)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
*dest = NULL;
|
*dest = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Exported API */
|
||||||
|
miniffs_t *miniffs_openfs(char *host_file)
|
||||||
|
{
|
||||||
|
miniffs_t *fs = NULL;
|
||||||
|
|
||||||
|
fs = (miniffs_t *)calloc(1, sizeof(miniffs_t));
|
||||||
|
if (fs == NULL)
|
||||||
|
{
|
||||||
|
miniffs_seterror(MINIFFS_ALLOCATION_ERROR);
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
host_map_file(host_file, (char **)&fs->memoryOffset);
|
||||||
|
|
||||||
|
fs->header = (miniffs_header_t *)fs->memoryOffset;
|
||||||
|
|
||||||
|
if (!miniffs_isvalidfs(fs))
|
||||||
|
{
|
||||||
|
miniffs_seterror(MINIFFS_INVALID_FS);
|
||||||
|
goto free_and_exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
free_and_exit:
|
||||||
|
free(fs);
|
||||||
|
fs = NULL;
|
||||||
|
|
||||||
|
exit:
|
||||||
|
return fs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Some internal functions */
|
||||||
|
void *miniffs_getfileaddr(miniffs_t *fs, fileentry_t *fent)
|
||||||
|
{
|
||||||
|
return fs->memoryOffset + fent->offset;
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user