diff options
Diffstat (limited to 'source/archived/v1/send.c')
-rw-r--r-- | source/archived/v1/send.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/source/archived/v1/send.c b/source/archived/v1/send.c new file mode 100644 index 0000000..27e9793 --- /dev/null +++ b/source/archived/v1/send.c @@ -0,0 +1,61 @@ +// minimal client implementation +#include "common.h" +#include <arpa/inet.h> +#include <errno.h> +#include <signal.h> +#include <time.h> +#include <unistd.h> + +u32 serverfd; + +// NOTE: Errno could be unset and contain an error for a previous command +void debug_panic(const char *msg) +{ + writef("%s errno: %d\n", msg, errno); + raise(SIGINT); +} + +// get current time in timestamp string +void timestamp(u8 timestamp[MESSAGE_TIMESTAMP_LEN]) +{ + time_t now; + struct tm *ltime; + time(&now); + ltime = localtime(&now); + strftime((char*)timestamp, MESSAGE_TIMESTAMP_LEN, "%H:%M:%S", ltime); +} + +int main(int argc, char **argv) +{ + + if (argc < 2) { + printf("usage: send <msg>\n"); + return 1; + } + + Message input = { + .author = "Friendship", + }; + input.text = argv[1]; + input.text_len = str_len(input.text); + + serverfd = socket(AF_INET, SOCK_STREAM, 0); + if (serverfd == -1) + debug_panic("Error while getting socket."); + + const struct sockaddr_in address = { + AF_INET, + htons(PORT), + {0}, + }; + + if (connect(serverfd, (struct sockaddr *)&address, sizeof(address))) + debug_panic("Error while connecting."); + + printf("input.len: %d\n", input.text_len); + timestamp(input.timestamp); + + message_send(&input, serverfd); + + return 0; +} |