summary refs log tree commit diff
path: root/compat.h
diff options
context:
space:
mode:
Diffstat (limited to 'compat.h')
-rw-r--r--compat.h102
1 files changed, 0 insertions, 102 deletions
diff --git a/compat.h b/compat.h
deleted file mode 100644
index a40b732..0000000
--- a/compat.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Copyright (C) 2019  C. McEnroe <june@causal.agency>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- *
- * Additional permission under GNU GPL version 3 section 7:
- *
- * If you modify this Program, or any covered work, by linking or
- * combining it with LibreSSL (or a modified version of that library),
- * containing parts covered by the terms of the OpenSSL License and the
- * original SSLeay license, the licensors of this Program grant you
- * additional permission to convey the resulting work. Corresponding
- * Source for a non-source form of such a combination shall include the
- * source code for the parts of LibreSSL used as well as that of the
- * covered work.
- */
-
-#ifdef __linux__
-
-#define _GNU_SOURCE
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#define NO_READPASSPHRASE_H
-#define RPP_STDIN 1
-static inline char *
-readpassphrase(const char *prompt, char *buf, size_t bufsiz, int flags) {
-	if (flags) {
-		if (!fgets(buf, bufsiz, stdin)) return NULL;
-		return strsep(&buf, "\n");
-	}
-	return getpass(prompt);
-}
-
-typedef int _readfn(void *, char *, int);
-typedef int _writefn(void *, const char *, int);
-typedef fpos_t _seekfn(void *, fpos_t, int);
-typedef int _closefn(void *);
-
-struct _funopen {
-	void *cookie;
-	_readfn *readfn;
-	_writefn *writefn;
-	_closefn *closefn;
-};
-
-static inline ssize_t
-_cookie_read(void *cookie, char *buf, size_t size) {
-	struct _funopen *funopen = cookie;
-	assert((size_t)(int)size == size);
-	return funopen->readfn(funopen->cookie, buf, size);
-}
-
-static inline ssize_t
-_cookie_write(void *cookie, const char *buf, size_t size) {
-	struct _funopen *funopen = cookie;
-	assert((size_t)(int)size == size);
-	return funopen->writefn(funopen->cookie, buf, size);
-}
-
-static inline int
-_cookie_close(void *cookie) {
-	struct _funopen *funopen = cookie;
-	int ret = (funopen->closefn ? funopen->closefn(funopen->cookie) : 0);
-	free(cookie);
-	return ret;
-}
-
-static const cookie_io_functions_t _cookie_fns = {
-	.read = _cookie_read,
-	.write = _cookie_write,
-	.close = _cookie_close,
-};
-
-static inline FILE *
-funopen(
-	const void *cookie,
-	_readfn *readfn, _writefn *writefn, _seekfn *seekfn, _closefn *closefn
-) {
-	struct _funopen *funopen = malloc(sizeof(*funopen));
-	if (!funopen) return NULL;
-	assert(!seekfn);
-	*funopen = (struct _funopen) { (void *)cookie, readfn, writefn, closefn };
-	const char *mode = (!readfn ? "w" : !writefn ? "r" : "r+");
-	return fopencookie(funopen, mode, _cookie_fns);
-}
-
-#endif /* __linux__ */