From d937614705989b9e71c366e5fe61751ba0d1a2eb Mon Sep 17 00:00:00 2001 From: Plex Date: Sun, 24 Oct 2021 23:33:48 +0200 Subject: readValInt --- mcping | Bin 17840 -> 18008 bytes mcping.c | 12 ++++++------ mctypes.c | 15 +++++++++++++-- mctypes.h | 4 ++-- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/mcping b/mcping index 6ab6d49..b598bc6 100755 Binary files a/mcping and b/mcping differ diff --git a/mcping.c b/mcping.c index a228114..084b481 100644 --- a/mcping.c +++ b/mcping.c @@ -22,11 +22,11 @@ int main(int argc, char *argv[]) } varint n; n = writeVarInt(atoi(argv[1])); - while((*n & 0b10000000) != 0) { - printf("%02X ", *n); - n++; - } - printf("%02X ", *n); - printf("\n"); + // while((*n & 0b10000000) != 0) { + // printf("%02X ", *n); + // n++; + // } + // printf("%02X\n", *n); + printf("%d\n", readVarInt(n)); return 0; } diff --git a/mctypes.c b/mctypes.c index ad855e4..10d083d 100644 --- a/mctypes.c +++ b/mctypes.c @@ -5,7 +5,6 @@ varint writeVarInt(unsigned int x) { - // unsigned int v = x; varint n = malloc(sizeof(u_int8_t)); unsigned int size = 1; while(1) { @@ -14,7 +13,7 @@ varint writeVarInt(unsigned int x) x >>= 7; if(x == 0) return n; - n[size-1] |= 0b10000000; + n[size-1] |= 0x80; size++; } return n; @@ -34,3 +33,15 @@ writeVarInt(varint x, int s) x >>= 7; } } */ + +int readVarInt(varint x) +{ + unsigned int offset = 0; + unsigned int res = 0; + do { + if(offset == 5) exit(EXIT_FAILURE); + res |= x[offset] << offset*7; + offset++; + } while ((x[offset-1] & 0b10000000) != 0); + return (int) res; +} diff --git a/mctypes.h b/mctypes.h index 3fe4a7f..7dad6db 100644 --- a/mctypes.h +++ b/mctypes.h @@ -10,9 +10,9 @@ typedef struct { typedef struct { varint length; varint id; - char *data;; + char *data; } packet; -int writeVarInt(varint x); +int readVarInt(varint x); varint writeVarInt(unsigned int x); -- cgit v1.2.3