From 999db06982c80bec25da63e95c47d5543c741c51 Mon Sep 17 00:00:00 2001 From: johannes Date: Fri, 9 Feb 2024 12:04:48 +0100 Subject: added read and write ctring from int --- inc/pack.h | 6 ++++++ src/pack.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/inc/pack.h b/inc/pack.h index 0979877..ca96749 100644 --- a/inc/pack.h +++ b/inc/pack.h @@ -17,4 +17,10 @@ int readint(char **cp); /* the given pointer is incremented */ void writeint(int in, char **cp); +/* reads a teworlds string from given ints */ +void intstostr(const int *ints, int num, char *str); + +/* writes a teeworlds string into ints */ +void strtoint(const char *str, int num, int *ints); + #endif // PACK_H diff --git a/src/pack.c b/src/pack.c index 561846d..9e1d4fe 100644 --- a/src/pack.c +++ b/src/pack.c @@ -106,3 +106,36 @@ void writeint(int i, char **cp) (*cp)++; } } + +void intstostr(const int *ints, int num, char *str) +{ + while (num) + { + str[0] = (((*ints) >> 24) & 0xff) - 128; + str[1] = (((*ints) >> 16) & 0xff) - 128; + str[2] = (((*ints) >> 8) & 0xff) - 128; + str[3] = ((*ints) & 0xff) - 128; + str += 4; + ints++; + num--; + } +} + +void strtoint(const char *str, int num, int *ints) +{ + int intloc = 3; + *ints = 0; + while (num) + { + if (intloc < 0) + { + ints++; + *ints = 0; + intloc = 3; + } + *ints |= (*str + 128) << (8 * intloc); + str++; + intloc--; + num--; + } +} -- cgit v1.2.3