From 3dbe1e43db93269e557780878c946c7390e375b4 Mon Sep 17 00:00:00 2001 From: Dan Sheppard Date: Mon, 21 Apr 2025 14:04:24 +0100 Subject: [PATCH] Organise files. --- .gitignore | 4 +++- Makefile | 33 ++++++++++++++++++++----------- coquet | Bin 56704 -> 0 bytes TODO => doc/TODO | 0 design.txt => doc/design.txt | 0 constants.h => src/constants.h | 0 coquet.c => src/coquet.c | 0 coquet.h => src/coquet.h | 0 hmac.c => src/hmac.c | 0 main.c => src/main.c | 0 sha2.c => src/sha2.c | 0 sha2.h => src/sha2.h | 0 superblock.c => src/superblock.c | 4 ++++ superblock.h => src/superblock.h | 4 ++-- test_sha2.c => src/test_sha2.c | 0 unix.c => src/unix.c | 0 util.c => src/util.c | 0 util.h => src/util.h | 0 vfs.h => src/vfs.h | 0 19 files changed, 31 insertions(+), 14 deletions(-) delete mode 100755 coquet rename TODO => doc/TODO (100%) rename design.txt => doc/design.txt (100%) rename constants.h => src/constants.h (100%) rename coquet.c => src/coquet.c (100%) rename coquet.h => src/coquet.h (100%) rename hmac.c => src/hmac.c (100%) rename main.c => src/main.c (100%) rename sha2.c => src/sha2.c (100%) rename sha2.h => src/sha2.h (100%) rename superblock.c => src/superblock.c (98%) rename superblock.h => src/superblock.h (88%) rename test_sha2.c => src/test_sha2.c (100%) rename unix.c => src/unix.c (100%) rename util.c => src/util.c (100%) rename util.h => src/util.h (100%) rename vfs.h => src/vfs.h (100%) diff --git a/.gitignore b/.gitignore index 93b9aff..497c041 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ *.o -*.coquet.* +*.coquet* a.out +obj/* +bin/* diff --git a/Makefile b/Makefile index cf2674c..dc3a9e1 100644 --- a/Makefile +++ b/Makefile @@ -1,25 +1,36 @@ -TARGET = coquet +SRCDIR := src +BINDIR := bin +OBJDIR := obj + +TARGET := $(BINDIR)/coquet +SRCFILES := main.c unix.c util.c coquet.c superblock.c sha2.c +SRC := $(addprefix $(SRCDIR)/,$(SRCFILES)) +OBJ := $(SRC:$(SRCDIR)/%.c=$(OBJDIR)/%.o) +DEPS := $(SRCFILES:%.c=$(OBJDIR)/%.d) + +# TARGET = coquet LIBS = CC = gcc CFLAGS = -g -Wall --std=c99 -FILES = main.c unix.c util.c coquet.c superblock.c sha2.c .PHONY: default all clean default: $(TARGET) all: default -OBJECTS = $(patsubst %.c, %.o, $(FILES)) -HEADERS = $(wildcard *.h) - -%.o: %.c $(HEADERS) +$(OBJDIR)/%.o: $(SRCDIR)/%.c $(CC) $(CFLAGS) -c $< -o $@ -.PRECIOUS: $(TARGET) $(OBJECTS) +$(OBJDIR)/%.d: $(SRCDIR)/%.c + $(CC) -MM -MP -MT $(@:.d=.o) $< > $@ -$(TARGET): $(OBJECTS) - $(CC) $(OBJECTS) -Wall $(LIBS) -o $@ +$(TARGET): $(OBJ) + $(CC) $(OBJ) -Wall $(LIBS) -o $@ + +# .PRECIOUS: $(TARGET) $(OBJECTS) clean: - -rm -f *.o - -rm -f $(TARGET) \ No newline at end of file + -rm -f $(OBJDIR)/* + -rm -f $(TARGET) + +-include $(SRC:$(SRCDIR)/%.c=$(OBJDIR)/%.d) diff --git a/coquet b/coquet deleted file mode 100755 index e1cd0bb4be760199edf70c9d93b183e16cd65089..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56704 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 bi{6bByQQ<{fD73hzr%?I;hzkUC5!(7qyOtl diff --git a/TODO b/doc/TODO similarity index 100% rename from TODO rename to doc/TODO diff --git a/design.txt b/doc/design.txt similarity index 100% rename from design.txt rename to doc/design.txt diff --git a/constants.h b/src/constants.h similarity index 100% rename from constants.h rename to src/constants.h diff --git a/coquet.c b/src/coquet.c similarity index 100% rename from coquet.c rename to src/coquet.c diff --git a/coquet.h b/src/coquet.h similarity index 100% rename from coquet.h rename to src/coquet.h diff --git a/hmac.c b/src/hmac.c similarity index 100% rename from hmac.c rename to src/hmac.c diff --git a/main.c b/src/main.c similarity index 100% rename from main.c rename to src/main.c diff --git a/sha2.c b/src/sha2.c similarity index 100% rename from sha2.c rename to src/sha2.c diff --git a/sha2.h b/src/sha2.h similarity index 100% rename from sha2.h rename to src/sha2.h diff --git a/superblock.c b/src/superblock.c similarity index 98% rename from superblock.c rename to src/superblock.c index 1c9a146..ad95312 100644 --- a/superblock.c +++ b/src/superblock.c @@ -209,9 +209,13 @@ int cq_super_save(coquet_t *cq, struct cq_super *super, bool_t wait) { ret = super_write(cq,super,!old.from_b,old.sb_serial+1); } else if(ret == COQUET_RET_CORRUPT) { // XXX log + /* save */ ret = super_write(cq,super,0,1); } + /* sync */ + ret = (cq->vfs_funcs.sync)(cq->vfs_data,COQUET_FILE_MAIN,1); + /* unlock */ r = lock_super(cq,COQUET_LMODE_UN,wait); if(r != COQUET_RET_OK) { diff --git a/superblock.h b/src/superblock.h similarity index 88% rename from superblock.h rename to src/superblock.h index e95008f..b9426c4 100644 --- a/superblock.h +++ b/src/superblock.h @@ -10,8 +10,8 @@ struct cq_super_config { uint8_t global_iv[GLOBAL_IV_LEN]; - uint8_t block_size; /* log bits */ - uint8_t nursery_size; /* log blocks */ + uint8_t block_size; /* log2 bytes */ + uint8_t nursery_size; /* log2 blocks */ }; struct cq_super { diff --git a/test_sha2.c b/src/test_sha2.c similarity index 100% rename from test_sha2.c rename to src/test_sha2.c diff --git a/unix.c b/src/unix.c similarity index 100% rename from unix.c rename to src/unix.c diff --git a/util.c b/src/util.c similarity index 100% rename from util.c rename to src/util.c diff --git a/util.h b/src/util.h similarity index 100% rename from util.h rename to src/util.h diff --git a/vfs.h b/src/vfs.h similarity index 100% rename from vfs.h rename to src/vfs.h -- 2.30.2