refactor: split lib in multiple lib
This commit is contained in:
parent
b06aba1da8
commit
a98288b28c
4
Doxyfile
4
Doxyfile
|
@ -524,7 +524,7 @@ TIMESTAMP = NO
|
|||
# normally produced when WARNINGS is set to YES.
|
||||
# The default value is: NO.
|
||||
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_ALL = NO
|
||||
|
||||
# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
|
||||
# be included in the documentation.
|
||||
|
@ -949,7 +949,7 @@ WARN_LOGFILE =
|
|||
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
|
||||
# Note: If this tag is empty the current directory is searched.
|
||||
|
||||
INPUT = lib src module win32
|
||||
INPUT = libcrypto liblzp libstpdfs include module win32
|
||||
|
||||
# This tag can be used to specify the character encoding of the source files
|
||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
SUBDIRS = lib tools tests
|
||||
SUBDIRS = lib libcrypto liblzp tools
|
||||
|
||||
if BUILD_FUSE
|
||||
SUBDIRS += fuse
|
||||
|
|
|
@ -44,8 +44,12 @@ AC_CHECK_FUNCS(m4_normalize([
|
|||
|
||||
AC_CONFIG_FILES([Makefile
|
||||
lib/Makefile
|
||||
libcrypto/Makefile
|
||||
libcrypto/tests/Makefile
|
||||
liblzp/Makefile
|
||||
liblzp/tests/Makefile
|
||||
libstpdfs/Makefile
|
||||
tools/Makefile
|
||||
tests/Makefile
|
||||
linux/Makefile
|
||||
fuse/Makefile])
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
# define STPDFS_ZONES_PER_BLOCK (STPDFS_BLOCK_SIZE / sizeof(uint32_t))
|
||||
# define STPDFS_DIRENT_PER_BLOCK (STPDFS_BLOCK_SIZE / (sizeof(struct stpdfs_dirent)))
|
||||
|
||||
# define STPDFS_SB_BLOCK 1
|
||||
|
||||
# define STPDFS_SB_MAGIC 0x44505453 /**< Superblock magic number */
|
||||
# define STPDFS_SB_REV STPDFS_SB_REV_1 /**< current revision */
|
||||
# define STPDFS_SB_REV_1 1
|
||||
|
|
|
@ -4,7 +4,4 @@ libstpdfs_a_SOURCES = block.c \
|
|||
inode.c \
|
||||
dir.c \
|
||||
data.c \
|
||||
superblock.c \
|
||||
compression/lzp.c \
|
||||
crypto/hchacha.c \
|
||||
crypto/xchacha.c
|
||||
superblock.c
|
5
libcrypto/Makefile.am
Normal file
5
libcrypto/Makefile.am
Normal file
|
@ -0,0 +1,5 @@
|
|||
SUBDIRS = tests
|
||||
|
||||
noinst_LIBRARIES = libcrypto.a
|
||||
AM_CFLAGS = -I$(top_srcdir)
|
||||
libcrypto_a_SOURCES = hchacha.c xchacha.c
|
|
@ -1,5 +1,8 @@
|
|||
#ifndef STPDFS_CRYPTO_CHACHA_H
|
||||
# define STPDFS_CRYPTO_CHACHA_H 1
|
||||
/**
|
||||
* \file chacha.h
|
||||
*/
|
||||
#ifndef CHACHA_H
|
||||
# define CHACHA_H 1
|
||||
|
||||
# include <stdint.h>
|
||||
# include <stddef.h>
|
||||
|
@ -38,4 +41,4 @@ void
|
|||
xchacha12(uint8_t *out, uint8_t key[CHACHA_KEY_BYTES], uint8_t nonce[24],
|
||||
uint8_t *in, size_t inlen);
|
||||
|
||||
#endif /* STPDFS_CRYPTO_CHACHA_H */
|
||||
#endif /* CHACHA_H */
|
9
libcrypto/tests/Makefile.am
Normal file
9
libcrypto/tests/Makefile.am
Normal file
|
@ -0,0 +1,9 @@
|
|||
TESTS = test_hchacha test_xchacha
|
||||
check_PROGRAMS = test_hchacha test_xchacha
|
||||
|
||||
AM_CFLAGS = -I../
|
||||
LDADD = -lcmocka ../libcrypto.a
|
||||
|
||||
test_hchacha_SOURCES = test_hchacha.c
|
||||
|
||||
test_xchacha_SOURCES = test_xchacha.c
|
|
@ -4,7 +4,7 @@
|
|||
#include <setjmp.h>
|
||||
#include <cmocka.h>
|
||||
|
||||
#include <crypto/chacha.h>
|
||||
#include "chacha.h"
|
||||
|
||||
/* test from https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha-03#section-2.2 */
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
#include <cmocka.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <crypto/chacha.h>
|
||||
#include "chacha.h"
|
||||
|
||||
void xchacha(uint8_t *out, uint8_t key[CHACHA_KEY_BYTES], uint8_t nonce[24],
|
||||
uint8_t *in, size_t inlen, int round);
|
4
liblzp/Makefile.am
Normal file
4
liblzp/Makefile.am
Normal file
|
@ -0,0 +1,4 @@
|
|||
SUBDIRS = tests
|
||||
|
||||
noinst_LIBRARIES = liblzp.a
|
||||
liblzp_a_SOURCES = lzp.c
|
|
@ -1,5 +1,8 @@
|
|||
#ifndef STPDFS_COMPRESSION_LZP_H
|
||||
# define STPDFS_COMPRESSION_LZP_H 1
|
||||
/**
|
||||
* \file lzp.h
|
||||
*/
|
||||
#ifndef LZP_H
|
||||
# define LZP_H 1
|
||||
|
||||
# include <stddef.h>
|
||||
# include <stdint.h>
|
||||
|
@ -7,4 +10,4 @@
|
|||
void lzp_compress(uint8_t *out, size_t *outsz, const uint8_t *in, size_t insz);
|
||||
void lzp_decompress(uint8_t *out, size_t *outsz, const uint8_t *in, size_t insz);
|
||||
|
||||
#endif /* STPDF_COMPRESSION_LZP_H */
|
||||
#endif /* LZP_H */
|
9
liblzp/tests/Makefile.am
Normal file
9
liblzp/tests/Makefile.am
Normal file
|
@ -0,0 +1,9 @@
|
|||
AM_CPPFLAGS = -I$(srcdir)/..
|
||||
|
||||
TESTS = test_lzp
|
||||
check_PROGRAMS = test_lzp
|
||||
|
||||
LDADD = -lcmocka ../liblzp.a
|
||||
|
||||
test_lzp_SOURCES = test_lzp.c
|
||||
|
2
libstpdfs/Makefile.am
Normal file
2
libstpdfs/Makefile.am
Normal file
|
@ -0,0 +1,2 @@
|
|||
noinst_LIBRARIES = libstpdfs.a
|
||||
liblzp_a_SOURCES = super.c bio.c inode.c file.c dir.c
|
89
libstpdfs/bio.c
Normal file
89
libstpdfs/bio.c
Normal file
|
@ -0,0 +1,89 @@
|
|||
/**
|
||||
* file: block.c
|
||||
*/
|
||||
|
||||
#include <stupidfs.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
|
||||
size_t
|
||||
stpdfs_write(int fd, uint32_t blocknum, void *data, size_t size)
|
||||
{
|
||||
uint8_t buffer[STPDFS_BLOCK_SIZE];
|
||||
|
||||
if (size > STPDFS_BLOCK_SIZE) return (-1);
|
||||
|
||||
lseek(fd, blocknum * STPDFS_BLOCK_SIZE, SEEK_SET);
|
||||
if (size > 0)
|
||||
{
|
||||
memcpy(buffer, data, size);
|
||||
return (write(fd, buffer, STPDFS_BLOCK_SIZE));
|
||||
}
|
||||
|
||||
return (write(fd, data, size));
|
||||
}
|
||||
|
||||
size_t
|
||||
stpdfs_read(int fd, uint32_t blocknum, void *data, size_t size)
|
||||
{
|
||||
lseek(fd, blocknum * STPDFS_BLOCK_SIZE, SEEK_SET);
|
||||
|
||||
return (read(fd, data, size));
|
||||
}
|
||||
|
||||
uint32_t
|
||||
stpdfs_alloc_block(int fd, struct stpdfs_sb *sb)
|
||||
{
|
||||
uint32_t blocknum;
|
||||
struct stpdfs_free freelist;
|
||||
|
||||
sb->state = STPDFS_DIRTY; /* mark state dirty */
|
||||
redo:
|
||||
sb->freelist.nfree--;
|
||||
blocknum = sb->freelist.free[sb->freelist.nfree];
|
||||
if (sb->freelist.nfree == 0 && blocknum != 0)
|
||||
{
|
||||
stpdfs_read(fd, blocknum, &freelist, sizeof(struct stpdfs_free));
|
||||
memcpy(sb->freelist.free, &freelist, sizeof(uint32_t) * 100);
|
||||
sb->freelist.nfree = freelist.nfree;
|
||||
goto redo;
|
||||
}
|
||||
|
||||
sb->time = time(NULL);
|
||||
|
||||
return (blocknum);
|
||||
}
|
||||
|
||||
int
|
||||
stpdfs_free_block(int fd, struct stpdfs_sb *sb, uint32_t blocknum)
|
||||
{
|
||||
struct stpdfs_free copy;
|
||||
|
||||
if (blocknum == 0 || blocknum >= sb->fsize)
|
||||
{
|
||||
return (-1);
|
||||
}
|
||||
|
||||
sb->state = STPDFS_DIRTY; /* mark state dirty */
|
||||
|
||||
if (sb->freelist.nfree == 100)
|
||||
{
|
||||
memcpy(©, sb->freelist.free, sizeof(uint32_t) * 100);
|
||||
copy.nfree = sb->freelist.nfree;
|
||||
|
||||
stpdfs_write(fd, blocknum, ©, sizeof(struct stpdfs_free));
|
||||
|
||||
sb->freelist.nfree = 1;
|
||||
sb->freelist.free[0] = blocknum;
|
||||
}
|
||||
else
|
||||
{
|
||||
sb->freelist.free[sb->freelist.nfree++] = blocknum;
|
||||
}
|
||||
|
||||
sb->time = time(NULL);
|
||||
return (0);
|
||||
}
|
0
libstpdfs/dir.c
Normal file
0
libstpdfs/dir.c
Normal file
0
libstpdfs/file.c
Normal file
0
libstpdfs/file.c
Normal file
13
libstpdfs/inode.c
Normal file
13
libstpdfs/inode.c
Normal file
|
@ -0,0 +1,13 @@
|
|||
#include <stupidfs.h>
|
||||
|
||||
struct inode *
|
||||
stpdfs_inode_get(struct stpdfs_sb *sb, uint32_t ino)
|
||||
{
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
struct stpdfs_dirent *
|
||||
stpdfs_lookup(struct stpdfs_inode *dir, struct stpdfs_dirent *dentry, int flags)
|
||||
{
|
||||
return (NULL);
|
||||
}
|
18
libstpdfs/stpdfs.h
Normal file
18
libstpdfs/stpdfs.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
/**
|
||||
* \file stpdfs.h
|
||||
*/
|
||||
#ifndef STPDFS_H
|
||||
# define STPDFS_H 1
|
||||
|
||||
# include <stupidfs.h>
|
||||
|
||||
struct stpdfs_super_info {
|
||||
struct stpdfs_sb sb;
|
||||
int fd;
|
||||
};
|
||||
|
||||
int stpdfs_read_super(struct stpdfs_super_info *sbi, int fd);
|
||||
int stpdfs_super_validate(struct stpdfs_sb *sb);
|
||||
int stpdfs_kill_super(struct stpdfs_super_info *sbi);
|
||||
|
||||
#endif /* !STPDFS_H */
|
27
libstpdfs/super.c
Normal file
27
libstpdfs/super.c
Normal file
|
@ -0,0 +1,27 @@
|
|||
#include <stupidfs.h>
|
||||
|
||||
int
|
||||
stpdfs_super_validate(struct stpdfs_sb *sb)
|
||||
{
|
||||
if (sb->magic != STPDFS_SB_MAGIC)
|
||||
{
|
||||
return (-1);
|
||||
}
|
||||
|
||||
if (sb->revision != STPDFS_SB_REV)
|
||||
{
|
||||
return (-1);
|
||||
}
|
||||
|
||||
if (sb->fsize == 0 || sb->isize == 0)
|
||||
{
|
||||
return (-1);
|
||||
}
|
||||
|
||||
if (sb->isize > sb->fsize)
|
||||
{
|
||||
return (-1);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir)/include
|
||||
|
||||
TESTS = test_lzp test_hchacha test_xchacha
|
||||
check_PROGRAMS = test_lzp test_hchacha test_xchacha
|
||||
|
||||
LDADD = -lcmocka ../lib/libstpdfs.a
|
||||
|
||||
test_lzp_SOURCES = test_lzp.c
|
||||
|
||||
|
||||
test_hchacha_SOURCES = test_hchacha.c
|
||||
|
||||
test_xchacha_SOURCES = test_xchacha.c
|
Loading…
Reference in a new issue