From a320ee672ccf52297dc509b25ed263f165709b31 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 24 Jun 2024 14:34:21 -0400 Subject: Add multiplex, a bunch of cleanup Signed-off-by: Andrew Opalach --- src/util/file/file_linux.c | 15 +++++---------- src/util/packet.c | 28 +++++++++++++++------------- src/util/packet.h | 7 +++++-- 3 files changed, 25 insertions(+), 25 deletions(-) (limited to 'src/util') diff --git a/src/util/file/file_linux.c b/src/util/file/file_linux.c index 403d685..ac78bd8 100644 --- a/src/util/file/file_linux.c +++ b/src/util/file/file_linux.c @@ -5,14 +5,9 @@ #include "file.h" -static bool lock_file_internal(s32 fd) -{ - struct flock l = { - .l_type = F_WRLCK, - .l_whence = SEEK_SET, - .l_start = 0, - .l_len = 0 - }; +static bool lock_file_internal(s32 fd, size_t size) +{ + struct flock l = { .l_type = F_WRLCK, .l_whence = SEEK_SET, .l_start = 0, .l_len = size }; if (fcntl(fd, F_SETLKW, &l) == -1) { al_log_error("file", "fcntl(F_SETLKW) failed (%s).", aki_strerror(errno)); close(fd); @@ -27,7 +22,7 @@ bool aki_file_open(struct aki_file *file, str *path, s32 flags) char *c_str = al_str_to_c_str(path); s32 oflags = (flags & AKI_FILE_READONLY) ? O_RDONLY : O_RDWR; if (flags & AKI_FILE_CREATE) oflags |= O_CREAT; - file->fd = open(c_str, oflags, 0666); + file->fd = open(c_str, oflags, 0644); al_free(c_str); if (file->fd == -1) { al_log_error("file", "open(%.*s) failed (%s).", AL_STR_PRINTF(path), aki_strerror(errno)); @@ -41,7 +36,7 @@ bool aki_file_open(struct aki_file *file, str *path, s32 flags) return false; } file->filesize = sb.st_size; - if (flags & AKI_FILE_LOCK) lock_file_internal(file->fd); + if (flags & AKI_FILE_LOCK) lock_file_internal(file->fd, file->filesize); return true; } diff --git a/src/util/packet.c b/src/util/packet.c index 2d8b440..373a3a3 100644 --- a/src/util/packet.c +++ b/src/util/packet.c @@ -58,12 +58,6 @@ void aki_packet_write_str(struct aki_packet *packet, str *s) AKI_PACKET_WRITE_DATA(packet, s->data, s->len); } -void aki_packet_write_wstr(struct aki_packet *packet, wstr *w) -{ - AKI_PACKET_WRITE_TYPE(packet, u32, w->len); - AKI_PACKET_WRITE_DATA(packet, w->data, w->len * sizeof(wchar_t)); -} - void aki_packet_write_buffer(struct aki_packet *packet, struct aki_buffer *buf) { AKI_PACKET_WRITE_TYPE(packet, size_t, buf->size); @@ -96,13 +90,6 @@ void aki_packet_read_str(struct aki_packet *packet, str *s) s->alloc = 0; } -void aki_packet_read_wstr(struct aki_packet *packet, wstr *w) -{ - AKI_PACKET_READ_TYPE(packet, u32, w->len); - AKI_PACKET_READ_DATA(packet, w->len * sizeof(wchar_t), w->data); - w->alloc = 0; -} - void aki_packet_read_buffer(struct aki_packet *packet, struct aki_buffer *buf) { AKI_PACKET_READ_TYPE(packet, size_t, buf->size); @@ -110,6 +97,21 @@ void aki_packet_read_buffer(struct aki_packet *packet, struct aki_buffer *buf) buf->alloc = 0; } +#ifdef AL_HAVE_WIDE_STRING +void aki_packet_write_wstr(struct aki_packet *packet, wstr *w) +{ + AKI_PACKET_WRITE_TYPE(packet, u32, w->len); + AKI_PACKET_WRITE_DATA(packet, w->data, w->len * sizeof(wchar_t)); +} + +void aki_packet_read_wstr(struct aki_packet *packet, wstr *w) +{ + AKI_PACKET_READ_TYPE(packet, u32, w->len); + AKI_PACKET_READ_DATA(packet, w->len * sizeof(wchar_t), w->data); + w->alloc = 0; +} +#endif + void aki_packet_free(struct aki_packet *packet) { aki_buffer_free(&packet->buffer); diff --git a/src/util/packet.h b/src/util/packet.h index f877c72..cacd82c 100644 --- a/src/util/packet.h +++ b/src/util/packet.h @@ -53,7 +53,6 @@ void aki_packet_write_u64(struct aki_packet *packet, u64 v); void aki_packet_write_f32(struct aki_packet *packet, f32 v); void aki_packet_write_f64(struct aki_packet *packet, f64 v); void aki_packet_write_str(struct aki_packet *packet, str *s); -void aki_packet_write_wstr(struct aki_packet *packet, wstr *w); void aki_packet_write_buffer(struct aki_packet *packet, struct aki_buffer *buf); s8 aki_packet_read_s8(struct aki_packet *packet); @@ -67,7 +66,11 @@ u64 aki_packet_read_u64(struct aki_packet *packet); f32 aki_packet_read_f32(struct aki_packet *packet); f64 aki_packet_read_f64(struct aki_packet *packet); void aki_packet_read_str(struct aki_packet *packet, str *s); -void aki_packet_read_wstr(struct aki_packet *packet, wstr *w); void aki_packet_read_buffer(struct aki_packet *packet, struct aki_buffer *buf); +#ifdef AL_HAVE_WIDE_STRING +void aki_packet_write_wstr(struct aki_packet *packet, wstr *w); +void aki_packet_read_wstr(struct aki_packet *packet, wstr *w); +#endif + void aki_packet_free(struct aki_packet *packet); -- cgit v1.2.3-101-g0448