From 8ffade37b19e9d5b5019b517f33c47faf0392b15 Mon Sep 17 00:00:00 2001 From: Jordan Bancino Date: Wed, 1 Nov 2023 11:26:27 -0400 Subject: [PATCH] Add a meta header. This allows programs to print the name and version of the library that is currently in use. --- src/Cytoplasm.c | 35 ++++++++++++++++++++++++ src/include/Cytoplasm.h | 60 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 src/Cytoplasm.c create mode 100644 src/include/Cytoplasm.h diff --git a/src/Cytoplasm.c b/src/Cytoplasm.c new file mode 100644 index 0000000..43ff294 --- /dev/null +++ b/src/Cytoplasm.c @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2022-2023 Jordan Bancino <@jordan:bancino.net> + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include + +char *CytoplasmGetName() +{ + return LIB_NAME; +} + +char *CytoplasmGetVersion() +{ + return LIB_VERSION; +} \ No newline at end of file diff --git a/src/include/Cytoplasm.h b/src/include/Cytoplasm.h new file mode 100644 index 0000000..f965f2f --- /dev/null +++ b/src/include/Cytoplasm.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2022-2023 Jordan Bancino <@jordan:bancino.net> + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation files + * (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef CYTOPLASM_CYTOPLASM_H +#define CYTOPLASM_CYTOPLASM_H + +/*** + * @Nm Cytoplasm + * @Nd A simple API that provides metadata on the library itself. + * @Dd September 30 2022 + * @Xr Sha2 + * + * This API simply provides name and versioning information for the + * currently loaded library. + */ + + +/** + * Get the name that this library was compiled with. In most cases, + * this will be hard-coded to "Cytoplasm", but it may differ if, for + * some reason, there exists another ABI-compatible library that + * wishes to report its name. + * + * This function really only exists because the information is + * available along side of the version information so for + * consistency, it made sense to include both. + */ +extern char * CytoplasmGetName(void); + +/** + * Get the library version. This will be useful mostly for printing + * to log files, but it may also be used by a program to verify that + * the version is new enough. + * + * This function returns a string, which should usually be able to be + * parsed using sscanf() if absolutely necessary. + */ +extern char * CytoplasmGetVersion(void); + +#endif /* CYTOPLASM_CYTOPLASM_H */ \ No newline at end of file