summaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-06-29 21:43:54 +0900
committertanaka takashi <isazaka@gmail.com>2026-06-30 01:23:51 +0900
commit4bc721c3bf7589b519c5730d093f704ce56e3f09 (patch)
tree38da055ab15fd70f5c92584560ea73486e5ddce0 /src/app
parent4c6a831aa2a57e2bcc20aa3fc2f1b7172f5be285 (diff)
refactor: MCP層をmcpc APIベースに刷新
- 独自JSON-RPC処理をmcpcへ置き換え - 各MCPツールを個別ソースへ分離 - 共通コンテキストと登録処理を整理 - mcpc互換修正と統合テストを更新
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;
+}