aboutsummaryrefslogtreecommitdiff
path: root/utilities.h
diff options
context:
space:
mode:
authorWojtek Kosior <wk@koszkonutek-tmp.pl.eu.org>2021-04-30 00:33:56 +0200
committerWojtek Kosior <wk@koszkonutek-tmp.pl.eu.org>2021-04-30 00:33:56 +0200
commitaa4d426b4d3527d7e166df1a05058c9a4a0f6683 (patch)
tree4ff17ce8b89a2321b9d0ed4bcfc37c447bcb6820 /utilities.h
downloadsmtps-and-pop3s-console-program-master.tar.gz
smtps-and-pop3s-console-program-master.zip
initial/final commitHEADmaster
Diffstat (limited to 'utilities.h')
-rw-r--r--utilities.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/utilities.h b/utilities.h
new file mode 100644
index 0000000..23044ca
--- /dev/null
+++ b/utilities.h
@@ -0,0 +1,83 @@
+#ifndef UTILITIES_H
+#define UTILITIES_H
+
+#include <stdbool.h>
+#include <stdio.h>
+
+#ifdef __cplusplus
+#include "vmime/vmime.hpp"
+
+vmime::shared_ptr<vmime::security::cert::defaultCertificateVerifier>
+windows_root_certs_verifier(void);
+
+extern "C" {
+#endif
+
+enum bool_param {
+ PARAM_NO,
+ PARAM_YES,
+ PARAM_NOT_GIVEN
+};
+
+struct config {
+ const char *host;
+ const char *login;
+ const char *password;
+ const char *subject;
+ const char *reply_to;
+ const char *from;
+ const char *dest_dir;
+ const char **files;
+ size_t nfiles;
+ const char *msg_body;
+ size_t msg_size;
+ const char **to;
+ size_t nto;
+ int port_POP3;
+ int port_SMTP;
+ enum bool_param use_SSL;
+ enum bool_param use_AUTH;
+ int timeout;
+ enum bool_param del_msgs;
+ enum bool_param save_body;
+ enum bool_param save_subj;
+};
+
+void _finish(bool ok);
+#define PRINT_ERROR(message...) \
+ ((fprintf(stderr, message) && false) || fprintf(stderr, "\r\n"))
+#define FAIL(message...) _finish(PRINT_ERROR(message) && false)
+#define FAIL_NOMSG() _finish(false)
+#define SUCCEED() _finish(true)
+
+void *dirtyalloc(size_t size);
+
+void read_config(const char *filename, struct config *config);
+
+void get_config(int argc, const char **argv, struct config *config);
+
+int dummy_errback(const char *fmt, ...);
+
+int provisional_wide_char_fgetc(FILE *stream);
+
+bool is_valid_port_number(int port);
+
+void free_config(struct config *config);
+
+void validate_config(struct config *config);
+
+void perform_work(const struct config *config);
+
+inline static bool is_empty_string(const char *string)
+{
+ return string == NULL || *string == '\0';
+}
+
+#define MESSAGES_EXTERN
+#include "messages.c"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* UTILITIES_H */