summaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/util')
-rw-r--r--src/util/file/file_linux.c13
-rw-r--r--src/util/packet.c28
-rw-r--r--src/util/packet.h7
3 files changed, 24 insertions, 24 deletions
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)
+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 = 0
- };
+ 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);