initial commit

Signed-off-by: Ian Moffett <ian@mirocom.org>
This commit is contained in:
2026-05-23 01:28:05 -04:00
commit c5f8f95059
6 changed files with 176 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
cescal
*.o
*.d
+25
View File
@@ -0,0 +1,25 @@
#
# Copyright (c) 2026, Chloe M.
# Provided under the BSD-3 clause
#
CFILES = $(shell find core/ -name "*.c")
OFILES = $(CFILES:.c=.o)
DFILES = $(CFILES:.c=.d)
CC = gcc
CFLAGS = \
-Wall \
-pedantic \
-Iinclude
.PHONY: all
all: cescal
.PHONY: cescal
cescal: $(OFILES)
$(CC) $^ -o $@
-include $(DFILES)
%.o: %.c
$(CC) -c $< $(CFLAGS) -o $@
+60
View File
@@ -0,0 +1,60 @@
/*
* Copyright (c) 2026, Chloe M.
* Provided under the BSD-3 clause
*/
#include <stdio.h>
#include <unistd.h>
#include "cescal/state.h"
static void
help(void)
{
printf("usage: ./cescal [flags]\n");
printf("[-h] Display this help menu\n");
}
static int
compile(const char *pathname)
{
struct cescal_state st;
if (pathname == NULL) {
return -1;
}
if (state_init(&st, pathname) < 0) {
return -1;
}
state_close(&st);
return 0;
}
int
main(int argc, char **argv)
{
int opt;
if (argc < 2) {
printf("fatal: too few arguments\n");
help();
return -1;
}
while ((opt = getopt(argc, argv, "h")) != -1) {
switch (opt) {
case 'h':
help();
return -1;
}
}
while (optind < argc) {
if (compile(argv[optind++]) < 0) {
break;
}
}
return 0;
}
+46
View File
@@ -0,0 +1,46 @@
/*
* Copyright (c) 2026, Chloe M.
* Provided under the BSD-3 clause
*/
#include <stdint.h>
#include <stddef.h>
#include <errno.h>
#include <unistd.h>
#include "cescal/readbuf.h"
int
readbuf_init(struct readbuf *rb)
{
if (rb == NULL) {
errno = EINVAL;
return -1;
}
rb->size = 0;
rb->tail = 0;
return 0;
}
char
readbuf_read(struct readbuf *rb, int fd)
{
ssize_t nread = -1;
if (rb == NULL || fd < 0) {
errno = EINVAL;
return '\0';
}
#define N_RESIDUAL(rb) ((rb)->size - (rb)->tail)
if (N_RESIDUAL(rb) == 0 || rb->size == 0) {
if ((nread = read(fd, rb->buf, READBUF_CAP)) <= 0)
return nread;
rb->size = nread;
rb->tail = 0;
}
#undef N_RESIDUAL
return rb->buf[rb->tail++];
}
+34
View File
@@ -0,0 +1,34 @@
#include <stdint.h>
#include <stddef.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include "cescal/state.h"
int
state_init(struct cescal_state *state, const char *pathname)
{
if (state == NULL || pathname == NULL) {
errno = EINVAL;
return -1;
}
state->in_fd = open(pathname, O_RDONLY);
if (state->in_fd < 0) {
return -1;
}
if (readbuf_init(&state->rb) < 0) {
close(state->in_fd);
return -1;
}
return 0;
}
void
state_close(struct cescal_state *state)
{
close(state->in_fd);
state->in_fd = -1;
}
+8
View File
@@ -0,0 +1,8 @@
//
// Copyright (c) 2026, Chloe M.
// Provided under the BSD-3 clause
//
pub proc main() -> u32 begin
return 0;
end