libremail: Add shared try_mkdir() function

Signed-off-by: Chloe M. <chloe@mirocom.org>
This commit is contained in:
2026-05-02 15:22:27 -04:00
parent b44459df62
commit b4c14b82d9
7 changed files with 76 additions and 1 deletions
+5 -1
View File
@@ -4,12 +4,16 @@
# #
.PHONY: all .PHONY: all
all: bin endpoint all: bin libremail endpoint
.PHONY: bin .PHONY: bin
bin: bin:
mkdir -p $@ mkdir -p $@
.PHONY: libremail
libremail:
cd libremail/; make
.PHONY: endpoint .PHONY: endpoint
endpoint: endpoint:
cd endpoint/; make cd endpoint/; make
+1
View File
@@ -5,6 +5,7 @@
CFILES = $(shell find . -name "*.c") CFILES = $(shell find . -name "*.c")
OFILES = $(CFILES:.c=.o) OFILES = $(CFILES:.c=.o)
OFILES += $(shell find ../libremail/ -name "*.o")
DFILES = $(CFILES:.c=.d) DFILES = $(CFILES:.c=.d)
CC = gcc CC = gcc
+25
View File
@@ -0,0 +1,25 @@
# Copyright (c) 2026, Chloe Moffett
# Provided under the BSD-3 clause
#
CFILES = $(shell find . -name "*.c")
OFILES = $(CFILES:.c=.o)
DFILES = $(CFILES:.c=.d)
CC = gcc
CFLAGS = \
-Wall \
-pedantic \
-MMD \
-Iinc
.PHONY: all
all: $(OFILES)
-include $(DFILES)
%.o: %.c
$(CC) -c $< $(CFLAGS) -o $@
.PHONY: clean
clean:
rm -f $(OFILES) $(DFILES)
View File
+24
View File
@@ -0,0 +1,24 @@
/*
* Copyright (c) 2026, Chloe Moffett
* Provided under the BSD-3 clause
*/
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
#include "libremail/file.h"
int
try_mkdir(const char *path, mode_t mode)
{
if (path == NULL) {
errno = EINVAL;
return -1;
}
if (access(path, F_OK) != 0) {
return mkdir(path, mode);
}
return 0;
}
View File
+21
View File
@@ -0,0 +1,21 @@
/*
* Copyright (c) 2026, Chloe Moffett
* Provided under the BSD-3 clause
*/
#ifndef LIBREMAIL_FILE_H
#define LIBREMAIL_FILE_H 1
#include <sys/stat.h>
/*
* Attempt to create a directory if it doesn't exist
*
* @path: Path to directory to create
* @mode: Desired mode to assign
*
* Returns zeo on success
*/
int try_mkdir(const char *path, mode_t mode);
#endif /* !LIBREMAIL_FILE_H */