From d2fb6a8aac6abe5bfe4b4ea7f2528d119afbc8c6 Mon Sep 17 00:00:00 2001 From: Tristan Riehs Date: Sun, 26 Apr 2026 11:51:56 +0200 Subject: Create a "system" module Also unify makefiles, otherwise dependencies are not properly resolved. --- src/system.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/system.h (limited to 'src/system.h') diff --git a/src/system.h b/src/system.h new file mode 100644 index 0000000..950a82a --- /dev/null +++ b/src/system.h @@ -0,0 +1,30 @@ +#ifndef SYSTEM_H +#define SYSTEM_H + +/* Routines for interacting with the system, mainly executing processes and + * dealing with the file system. */ + +/* Used when encrypting or decrypting a file, see the copy_file_with_encryption + * function. */ +enum encrypt { + ENCRYPT, + DECRYPT +}; + +/* Return whether PATH exists in the file system. Exit if any non-"file not + * fount" error occurs. */ +int file_exists(const char *path); + +/* Copy the file whose path is IN at path OUT. OUT is created or overwritten if + * needed. */ +void copy_file(const char *in, const char *out); + +/* Like copy_file but with encryption, which is managed using GPG. */ +void copy_file_with_encryption(const char *in, const char *out, enum encrypt encrypt); + +/* Execute command in a child process, then wait for the child to exit before + * returning. If any error occurs, including in the child process, then if EXIT + * is non-zero, exit, else return -1. Return 0 on success. */ +int ftag_execvp(char *const *cmd, int can_exit); + +#endif -- cgit v1.2.3