aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaymaekers Luca <luca@spacehb.net>2025-04-29 13:41:20 +0200
committerRaymaekers Luca <luca@spacehb.net>2025-04-29 13:48:55 +0200
commit5242ba4f54326dec76a49eedcb4866dee64db33c (patch)
treea15d0748a9f193b3dd5e4da773b55f86031bb8b7
parentf87f7b4f0aaccc65d03ccee5bb11915ead6fb0e1 (diff)
Use our Assert macro; Added screenshotmain
-rw-r--r--README.md12
-rwxr-xr-xbuild/chattybin139016 -> 134384 bytes
-rwxr-xr-xbuild/serverbin44688 -> 40176 bytes
-rw-r--r--screenshot.pngbin0 -> 95088 bytes
-rw-r--r--source/protocol.h36
5 files changed, 26 insertions, 22 deletions
diff --git a/README.md b/README.md
index c69eb45..a3ea199 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,10 @@
## Overview
`chatty` is a terminal chat application.
Included is also a server.
+<br>
+<br>
+<img src="https://git.spacehb.net/chatty/plain/screenshot.png?h=main">
+
### Client features
- users are saved
@@ -41,13 +45,13 @@ In another prompt, start a client with
```
# Resources
-- terminal library: [Termbox2](https://github.com/termbox/termbox2)
-- source code I looked at:
+- Terminal library: [Termbox2](https://github.com/termbox/termbox2)
+- Source code I looked at:
- https://github.com/git-bruh/matrix-tui
- https://github.com/NikitaIvanovV/ictree
- *mmap & gdb*: [Tsoding - "Why linux has this syscall?" ](https://youtu.be/sFYFuBzu9Ow?si=CX32IzFVA8OPDZvS)
- *pthreads*: [C for dummies](https://c-for-dummies.com/blog/?p=5365)
- *unicode and wide characters*: [C for dummies](https://c-for-dummies.com/blog/?p=2578)
- *sockets*: [Nir Lichtman - Making Minimalist Chat Server in C on Linux](https://www.youtube.com/watch?v=gGfTjKwLQxY)
-- syscall manpages `man`
-- UTF8 Comprssion: [Casey Muratori - Simple RLE Compressor](https://www.youtube.com/watch?v=kikLEdc3C1c&t=6312s)
+- Syscall manpages `man`
+- Compression: [Casey Muratori - Simple RLE Compressor](https://www.youtube.com/watch?v=kikLEdc3C1c&t=6312s)
diff --git a/build/chatty b/build/chatty
index 06f4379..824eff9 100755
--- a/build/chatty
+++ b/build/chatty
Binary files differ
diff --git a/build/server b/build/server
index 90d2d33..3a11bc7 100755
--- a/build/server
+++ b/build/server
Binary files differ
diff --git a/screenshot.png b/screenshot.png
new file mode 100644
index 0000000..db6d5d9
--- /dev/null
+++ b/screenshot.png
Binary files differ
diff --git a/source/protocol.h b/source/protocol.h
index f863f0a..5d330d7 100644
--- a/source/protocol.h
+++ b/source/protocol.h
@@ -204,16 +204,16 @@ recvTextMessage(Arena* msgsArena, u32 fd)
// Receive everything but the text so we can know the text's size and act accordingly
s32 nrecv = recv(fd, message, TEXTMESSAGE_SIZE, 0);
- assert(nrecv != -1);
- assert(nrecv == TEXTMESSAGE_SIZE);
+ Assert(nrecv != -1);
+ Assert(nrecv == TEXTMESSAGE_SIZE);
// Allocate memory for text and receive in that memory
u32 text_size = message->len * sizeof(*message->text);
ArenaPush(msgsArena, text_size);
nrecv = recv(fd, (u8*)&message->text, text_size, 0);
- assert(nrecv != -1);
- assert(nrecv == (s32)(message->len * sizeof(*message->text)));
+ Assert(nrecv != -1);
+ Assert(nrecv == (s32)(message->len * sizeof(*message->text)));
return message;
}
@@ -234,7 +234,7 @@ getMessageSize(HeaderType type)
case HEADER_TYPE_INTRODUCTION: size = sizeof(IntroductionMessage); break;
case HEADER_TYPE_PRESENCE: size = sizeof(PresenceMessage); break;
case HEADER_TYPE_ID: size = sizeof(IDMessage); break;
- default: assert(0);
+ default: Assert(0);
}
return size;
}
@@ -245,7 +245,7 @@ recvAnyMessageType(s32 fd, HeaderMessage* header, void *anyMessage, HeaderType t
s32 nrecv = recv(fd, header, sizeof(*header), 0);
if (nrecv == -1 || nrecv == 0)
return nrecv;
- assert(nrecv == sizeof(*header));
+ Assert(nrecv == sizeof(*header));
s32 size = 0;
switch (type)
@@ -262,13 +262,13 @@ recvAnyMessageType(s32 fd, HeaderMessage* header, void *anyMessage, HeaderType t
TextMessage* message = anyMessage;
size = TEXTMESSAGE_SIZE + message->len * sizeof(*message->text);
} break;
- default: assert(0); break;
+ default: Assert(0); break;
}
- assert(header->type == type);
+ Assert(header->type == type);
nrecv = recv(fd, anyMessage, size, 0);
- assert(nrecv != -1);
- assert(nrecv == size);
+ Assert(nrecv != -1);
+ Assert(nrecv == size);
return size;
}
@@ -279,8 +279,8 @@ recvAnyMessage(Arena* arena, s32 fd)
{
HeaderMessage* header = ArenaPush(arena, sizeof(*header));
s32 nrecv = recv(fd, header, sizeof(*header), 0);
- assert(nrecv != -1);
- assert(nrecv == sizeof(*header));
+ Assert(nrecv != -1);
+ Assert(nrecv == sizeof(*header));
s32 size = 0;
switch (header->type)
@@ -300,8 +300,8 @@ recvAnyMessage(Arena* arena, s32 fd)
void* message = ArenaPush(arena, size);
nrecv = recv(fd, message, size, 0);
- assert(nrecv != -1);
- assert(nrecv == size);
+ Assert(nrecv != -1);
+ Assert(nrecv == size);
Message result;
result.header = header;
@@ -333,7 +333,7 @@ sendAnyMessage(u32 fd, HeaderMessage header, void* anyMessage)
s32 nsend = send(fd, &header, sizeof(header), 0);
if (nsend == -1) return nsend;
LoggingF("sendAnyMessage (%d)|sending "HEADER_FMT"\n", fd, HEADER_ARG(header));
- assert(nsend == sizeof(header));
+ Assert(nsend == sizeof(header));
nsend_total = nsend;
s32 size = 0;
@@ -349,8 +349,8 @@ sendAnyMessage(u32 fd, HeaderMessage header, void* anyMessage)
case HEADER_TYPE_TEXT:
{
nsend = send(fd, anyMessage, TEXTMESSAGE_SIZE, 0);
- assert(nsend != -1);
- assert(nsend == TEXTMESSAGE_SIZE);
+ Assert(nsend != -1);
+ Assert(nsend == TEXTMESSAGE_SIZE);
nsend_total += nsend;
// set size to remaning text size that should be sent
TextMessage* message = (TextMessage*)anyMessage;
@@ -366,7 +366,7 @@ sendAnyMessage(u32 fd, HeaderMessage header, void* anyMessage)
nsend = send(fd, anyMessage, size, 0);
if (nsend == -1) return nsend;
- assert(nsend == size);
+ Assert(nsend == size);
nsend_total += nsend;
return nsend_total;