ascii-chat 0.8.38
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
wasm/stubs/filesystem.c
Go to the documentation of this file.
1
7#include <ascii-chat/platform/abstraction.h>
8#include <ascii-chat/platform/filesystem.h>
9#include <ascii-chat/platform/wasm_console.h>
10#include <ascii-chat/asciichat_errno.h>
11#include <stdio.h>
12#include <stdbool.h>
13#include <unistd.h>
14#include <stdarg.h>
15#include <fcntl.h>
16
17// File operations - basic WASM stubs
18FILE *platform_fopen(const char *filename, const char *mode) {
19 return fopen(filename, mode); // Use standard fopen
20}
21
22FILE *platform_tmpfile(void) {
23 return tmpfile();
24}
25
26size_t platform_write_all(int fd, const void *buf, size_t count) {
27 (void)fd;
28 (void)buf;
29 (void)count;
30 return 0; // Not implemented for WASM
31}
32
33asciichat_error_t platform_mkdir_recursive(const char *path, int mode) {
34 (void)path;
35 (void)mode;
36 return ERROR_PLATFORM_INIT; // Not implemented for WASM
37}
38
39asciichat_error_t platform_find_config_file(const char *filename, config_file_list_t *list_out) {
40 (void)filename;
41 if (list_out) {
42 list_out->files = NULL;
43 list_out->count = 0;
44 list_out->capacity = 0;
45 }
46 return ASCIICHAT_OK; // No config files in WASM
47}
48
49void config_file_list_destroy(config_file_list_t *list) {
50 (void)list;
51 // No-op
52}
53
54// File descriptor operations
55ssize_t platform_write(int fd, const void *buf, size_t count) {
56 // For WASM, route stdout/stderr to browser console
57 if ((fd == 1 || fd == 2) && buf && count > 0) {
58 wasm_log_to_console(fd, (const uint8_t *)buf, count);
59 return (ssize_t)count; // Report all bytes as written
60 }
61
62 // Fallback: use standard write for other fds
63 return write(fd, buf, count);
64}
65
66ssize_t platform_read(int fd, void *buf, size_t count) {
67 return read(fd, buf, count);
68}
69
70int platform_open(const char *pathname, int flags, ...) {
71 // Handle optional mode parameter for O_CREAT
72 int mode = 0;
73 if (flags & 0x0200) { // O_CREAT flag value
74 va_list args;
75 va_start(args, flags);
76 mode = va_arg(args, int);
77 va_end(args);
78 return open(pathname, flags, mode);
79 }
80 return open(pathname, flags);
81}
82
83int platform_close(int fd) {
84 return close(fd);
85}
86
87int platform_access(const char *pathname, int mode) {
88 (void)pathname;
89 (void)mode;
90 return -1; // Not accessible in WASM
91}
92
94 return NULL; // No data directory in WASM
95}
void wasm_log_to_console(int fd, const uint8_t *buf, size_t count)
Definition console.c:99
action_args_t args
FILE * platform_fopen(const char *filename, const char *mode)
asciichat_error_t platform_find_config_file(const char *filename, config_file_list_t *list_out)
int platform_access(const char *pathname, int mode)
FILE * platform_tmpfile(void)
char * platform_get_data_dir(void)
size_t platform_write_all(int fd, const void *buf, size_t count)
asciichat_error_t platform_mkdir_recursive(const char *path, int mode)
int platform_close(int fd)
int platform_open(const char *pathname, int flags,...)
ssize_t platform_read(int fd, void *buf, size_t count)
ssize_t platform_write(int fd, const void *buf, size_t count)
void config_file_list_destroy(config_file_list_t *list)