summaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
Diffstat (limited to 'src/app')
-rw-r--r--src/app/main.c43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/app/main.c b/src/app/main.c
index ce43b61..f73b314 100644
--- a/src/app/main.c
+++ b/src/app/main.c
@@ -1,43 +1,41 @@
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
#include <stdio.h>
#include <stdlib.h>
-#include <wchar.h>
+#include <string.h>
#include "mcp/server.h"
#include "storage/store.h"
+#include "sys/system.h"
+
+#include "base/allocator.h"
static void
usage(FILE *stream)
{
- fwprintf(stream, L"Usage: tiny-convmem-mcp --data-dir <path>\n");
+ fprintf(stream, "Usage: tiny-convmem-mcp --data-dir <path>\n");
}
-int
-wmain(int argc, wchar_t **argv)
+static int
+run(const tiny_sys_arguments_t *arguments)
{
- wchar_t *absolute = NULL;
- DWORD required;
+ char *absolute;
tiny_store_t *store = NULL;
tiny_store_status_t status;
int result;
- if (argc == 2 && wcscmp(argv[1], L"--help") == 0)
+ if (arguments->count == 2 && strcmp(arguments->values[1], "--help") == 0)
{
usage(stdout);
return 0;
}
- if (argc != 3 || wcscmp(argv[1], L"--data-dir") != 0 || argv[2][0] == L'\0')
+ if (arguments->count != 3 || strcmp(arguments->values[1], "--data-dir") != 0
+ || arguments->values[2][0] == '\0')
{
usage(stderr);
return 2;
}
- required = GetFullPathNameW(argv[2], 0, NULL, NULL);
- if (required == 0 || (absolute = malloc((size_t)required * sizeof(wchar_t))) == NULL
- || GetFullPathNameW(argv[2], required, absolute, NULL) == 0)
+ absolute = tiny_sys_path_absolute(arguments->values[2]);
+ if (absolute == NULL)
{
fprintf(stderr, "unable to resolve --data-dir\n");
- free(absolute);
return 2;
}
status = tiny_store_open(&store, absolute);
@@ -55,3 +53,18 @@ wmain(int argc, wchar_t **argv)
}
return result;
}
+
+int
+main(int argc, char **argv)
+{
+ tiny_sys_arguments_t arguments;
+ int result;
+ if (!tiny_sys_arguments_init(&arguments, argc, argv))
+ {
+ fprintf(stderr, "unable to read process arguments\n");
+ return 2;
+ }
+ result = run(&arguments);
+ tiny_sys_arguments_free(&arguments);
+ return result;
+}