From 018003ebd45981594513f33887c426fec0c8149c Mon Sep 17 00:00:00 2001 From: "Z. Charles Dziura" Date: Mon, 2 Jun 2025 20:36:04 -0400 Subject: [PATCH] Start making the code initialization logic --- Makefile.am | 6 ++++++ configure.ac | 1 - src/Makefile.am | 2 +- src/api_key.c | 0 src/api_key.h | 0 src/code.c | 24 ++++++++++++++++++++++++ src/code.h | 23 +++++++++++++++++++++++ src/errors.h | 1 + src/main.c | 12 ++++++++++-- 9 files changed, 65 insertions(+), 4 deletions(-) delete mode 100644 src/api_key.c delete mode 100644 src/api_key.h create mode 100644 src/code.c create mode 100644 src/code.h create mode 100644 src/errors.h diff --git a/Makefile.am b/Makefile.am index af437a6..27f019e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1 +1,7 @@ SUBDIRS = src +AM_CFLAGS = -std=c17 + +.PHONY: run + +run: + ./src/fckgw diff --git a/configure.ac b/configure.ac index bbadd53..6b2202c 100644 --- a/configure.ac +++ b/configure.ac @@ -2,6 +2,5 @@ AC_INIT([fckgw],[1.0]) AC_CONFIG_SRCDIR([src/main.c]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_PROG_CC -CFLAGS="$CFLAGS -std=c17" AC_CONFIG_FILES([Makefile src/Makefile]) AC_OUTPUT diff --git a/src/Makefile.am b/src/Makefile.am index cdb7bf8..06cae19 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,2 +1,2 @@ bin_PROGRAMS = fckgw -fckgw_SOURCES = main.c api_key.c +fckgw_SOURCES = main.c code.c diff --git a/src/api_key.c b/src/api_key.c deleted file mode 100644 index e69de29..0000000 diff --git a/src/api_key.h b/src/api_key.h deleted file mode 100644 index e69de29..0000000 diff --git a/src/code.c b/src/code.c new file mode 100644 index 0000000..02d4e9f --- /dev/null +++ b/src/code.c @@ -0,0 +1,24 @@ +#include +#include +#include +#include + +#include "code.h" +#include "errors.h" + +int code_init(struct code *key) { + struct timespec ts; + + if (clock_gettime(CLOCK_REALTIME, &ts) == -1) { + perror("Unable to read clock 'CLOCK_REALTIME'"); + return ERR_CLOCK_READ; + } + + + + key->unix_ts_sec = ts.tv_sec; + key->unix_ts_msec = ts.tv_nsec / 1000000; + key->purpose = ACCESS; + + return 0; +} diff --git a/src/code.h b/src/code.h new file mode 100644 index 0000000..21de243 --- /dev/null +++ b/src/code.h @@ -0,0 +1,23 @@ +#include +#include + +#ifdef __SIZEOF_INT128__ + typedef unsigned __int128 uint128_t; +#endif + +enum code_purpose { + ACCESS, + DISCOUNT, +}; + +struct code { + time_t unix_ts_sec; + long unix_ts_msec; + enum code_purpose purpose; + uint16_t rand_a; + uint64_t rand_b; +}; + +int code_init(struct code *key); + +uint128_t code_convert_to_num(struct code *key); diff --git a/src/errors.h b/src/errors.h new file mode 100644 index 0000000..8764d25 --- /dev/null +++ b/src/errors.h @@ -0,0 +1 @@ +#define ERR_CLOCK_READ 1 diff --git a/src/main.c b/src/main.c index 1d58f74..3cb0176 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,14 @@ #include -#include <./api_key.h> + +#include "code.h" int main(void) { - return 0; + struct code key; + + int key_init_err = code_init(&key); + if (key_init_err != 0) { + return key_init_err; + } + + printf("unix_ts_sec: %ld, unix_ts_nsec: %ld, purpose: %d\n", key.unix_ts_sec, key.unix_ts_msec, key.purpose); }