aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCara Salter <cara@devcara.com>2022-01-27 10:55:32 -0500
committerCara Salter <cara@devcara.com>2022-01-27 10:55:32 -0500
commitaa80bc22117d385474c8593560368adf6b57f074 (patch)
treebc8675806434e8f700b19fae9a127a4860c26376
parentae68415af5c333d2c7a7f701ba99df6224e925a9 (diff)
downloadcmud-aa80bc22117d385474c8593560368adf6b57f074.tar.gz
cmud-aa80bc22117d385474c8593560368adf6b57f074.zip
login: Update memory management
name is now char* instead of char*[] because why would that be a thing? now also allocates 32 bytes for name *before* trying to strcpy Signed-off-by: Cara Salter <cara@devcara.com>
-rw-r--r--src/login.c17
-rw-r--r--src/login.h2
2 files changed, 10 insertions, 9 deletions
diff --git a/src/login.c b/src/login.c
index c94ad42..96f2615 100644
--- a/src/login.c
+++ b/src/login.c
@@ -1,7 +1,6 @@
-#include <string.h>
#define _GNU_SOURCE
-#include "data.h"
#include "login.h"
+#include "data.h"
#include "server.h"
#include <stdio.h>
#include <stdlib.h>
@@ -44,13 +43,17 @@ int step_login(playerc_t *player, int conn_fd) {
"Welcome! Please enter your **username** below\n");
char *buf = (char *)malloc(1 << 10);
printf("Waiting to receive...\n");
- recv(player->conn, buf, sizeof(buf), 0);
+ recv(player->conn, buf, 1024, 0);
printf("Received!\n");
err = try_load_plr(buf, player);
printf("Finished trying to load the player\n");
if (err) {
// File doesn't exist, let's create a player!
+ printf("test inner\n");
+ send_to_fd(player->conn, "Test");
+ player->plr.name = (char *)malloc(32);
strcpy(player->plr.name, buf);
+ printf("test copy\n");
send_to_fd(player->conn, "Howdy! Want to introduce yourself? [y|n]\n");
recv(player->conn, buf, sizeof(buf), 0);
if (buf[0] == 'y') {
@@ -62,16 +65,14 @@ int step_login(playerc_t *player, int conn_fd) {
}
continue;
} else {
- player->state = EnterPassword;
+ player->state = LoggedOut;
continue;
}
case WantMakeAccount:
- asprintf(&buf,
- "Welcome aboard %s! Why don't you start us off by giving me a "
- "password.\n",
- *player->plr.name);
+ asprintf(buf, "Welcome aboard %s! Why don't you start us off by giving me a password.\n", player->plr.name);
send_to_fd(player->conn, buf);
}
+ printf("test\n");
}
return err;
diff --git a/src/login.h b/src/login.h
index 6d4cc3d..50a5b23 100644
--- a/src/login.h
+++ b/src/login.h
@@ -16,7 +16,7 @@ typedef struct player {
int level;
int location_id;
- char *name[];
+ char *name;
} player_t;
typedef struct player_conn {