From 6fcf9f58f1c96153f40786480f1fe3ece39be6f5 Mon Sep 17 00:00:00 2001 From: Avril Date: Tue, 24 Nov 2020 00:50:11 +0000 Subject: [PATCH] sskel --- lean/include/shuffle3.h | 30 ++++++++++++++++++++++++++++++ lean/src/main.c | 17 +++++++++++++++++ lean/src/panic.c | 16 ++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 lean/include/shuffle3.h create mode 100644 lean/src/main.c create mode 100644 lean/src/panic.c diff --git a/lean/include/shuffle3.h b/lean/include/shuffle3.h new file mode 100644 index 0000000..085719a --- /dev/null +++ b/lean/include/shuffle3.h @@ -0,0 +1,30 @@ +#ifndef _SHUFFLE3_H +#define _SHUFFLE3_H + +#ifdef __cplusplus +#define _UNIQUE __restrict +extern "C" { +#else +#define _UNIQUE restrict +#endif + +#ifdef DEBUG +#define _FORCE_INLINE __attribute__((gnu_inline)) static inline +#else +#define _FORCE_INLINE __attribute__((gnu_inline)) extern inline +#endif + +struct panicinfo { + const char* file; + const char* function; + int line; +}; + +void _do_panic(struct panicinfo pi, const char* fmt, ...) __attribute__((noreturn, cold)); +#define panic(fmt, ...) _do_panic( (struct panicinfo){.file = __FILE__, .function = __func__, .line = __LINE__}, fmt __VA_OPT__(,) __VA_ARGS__) + +#ifdef __cplusplus +} +#endif + +#endif /* _SHUFFLE3_H */ diff --git a/lean/src/main.c b/lean/src/main.c new file mode 100644 index 0000000..0372a6d --- /dev/null +++ b/lean/src/main.c @@ -0,0 +1,17 @@ + +#include + +static void shuffle_file(const char* filename) +{ + panic("unimplemented"); +} + +static void unshuffle_file(const char* filename) +{ + panic("unimplemented"); +} + +int main(int argc, char** argv) +{ + return 0; +} diff --git a/lean/src/panic.c b/lean/src/panic.c new file mode 100644 index 0000000..b6f4b0d --- /dev/null +++ b/lean/src/panic.c @@ -0,0 +1,16 @@ +#include +#include +#include + +#include + +__attribute__((noreturn, cold)) void _do_panic(struct panicinfo info, const char* fmt, ...) +{ + va_list li; + va_start(li, fmt); + fprintf(stderr, "[!] (%s->%s:%d) fatal error: ", info.file, info.function, info.line); + vfprintf(stderr, fmt, li); + fprintf(stderr, "\n"); + va_end(li); + abort(); +}