aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCara Salter <cara@devcara.com>2022-01-22 11:18:04 -0500
committerCara Salter <cara@devcara.com>2022-01-22 11:18:04 -0500
commitc4ef63fa6f0b2e84772ff7071221312d32ed3f4d (patch)
treedf2ef817f1586c4bdfa48c8ab9c1f3a3f8dbea5a
parentc2352ee043546b518f69c615a1ece778e942e650 (diff)
downloadcmud-c4ef63fa6f0b2e84772ff7071221312d32ed3f4d.tar.gz
cmud-c4ef63fa6f0b2e84772ff7071221312d32ed3f4d.zip
push for ced
-rw-r--r--src/data.c19
-rw-r--r--src/data.h4
-rw-r--r--src/login.c14
-rw-r--r--src/server.c3
4 files changed, 30 insertions, 10 deletions
diff --git a/src/data.c b/src/data.c
index 15617e0..40de076 100644
--- a/src/data.c
+++ b/src/data.c
@@ -17,29 +17,36 @@ int try_make_data_dirs() {
int try_load_plr(char *player_name, playerc_t *plr) {
int err = 0;
+ printf("Trying to make data directories...\n");
err = try_make_data_dirs();
if (err) {
switch (err) {
- // Now the errors that continue will be from I/O, which we can use to figure out if the file exists in login
+ // Now the errors that continue will be from I/O, which we can use to
+ // figure out if the file exists in login
case EACCES: /* No permissions***************************************/
- printf("No permissions to create directories\n");
- return -1;
- default:/* Do nothing because this is fine****************************/
- break;
+ printf("No permissions to create directories\n");
+ return -1;
+ default: /* Do nothing because this is fine****************************/
+ break;
}
}
+ printf("Done, opening file.\n");
+
char *fname;
asprintf(&fname, "data/players/%s.plr", player_name);
FILE *fp = fopen(fname, "rb");
+ printf("Got fp\n");
fread(&plr, sizeof(playerc_t), 1, fp);
+ printf("Read file into plr\n");
+
return err;
}
-int try_write_file(player_t *plr) {
+int try_write_plr(player_t *plr) {
int err = 0;
err = try_make_data_dirs();
diff --git a/src/data.h b/src/data.h
index a030d50..94bc033 100644
--- a/src/data.h
+++ b/src/data.h
@@ -2,8 +2,8 @@
#define DATA_H
#include "login.h"
-int try_load_file(char *player_name);
+int try_load_plr(char *player_name, playerc_t *conn);
-int try_write_file(player_t *plr);
+int try_write_plr(player_t *plr);
#endif
diff --git a/src/login.c b/src/login.c
index c6ab408..c94ad42 100644
--- a/src/login.c
+++ b/src/login.c
@@ -5,16 +5,20 @@
#include "server.h"
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <sys/socket.h>
#include <unistd.h>
void handle_player(int conn_fd) {
+ printf("Let's make a new player object\n");
playerc_t plrc = {0};
plrc.state = LoggedOut;
plrc.conn = conn_fd;
player_t plr = {0};
plrc.plr = plr;
+ printf("No sense in having a player if they can't log in!\n");
+
int err = step_login(&plrc, conn_fd);
if (err) {
err = send_to_fd(conn_fd, "Error in login process, exiting");
@@ -35,11 +39,15 @@ int step_login(playerc_t *player, int conn_fd) {
switch (player->state) {
case LoggedOut: /* the player has yet to log in, this is a fresh connection!
*/
+ printf("The player is logged out\n");
send_to_fd(player->conn,
"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);
- err = try_load_file(buf);
+ 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!
strcpy(player->plr.name, buf);
@@ -60,7 +68,9 @@ int step_login(playerc_t *player, int conn_fd) {
case WantMakeAccount:
asprintf(&buf,
"Welcome aboard %s! Why don't you start us off by giving me a "
- "password.\n", ) send_to_fd(player->conn, "Welcome aboard! ")
+ "password.\n",
+ *player->plr.name);
+ send_to_fd(player->conn, buf);
}
}
diff --git a/src/server.c b/src/server.c
index bee6153..68fec90 100644
--- a/src/server.c
+++ b/src/server.c
@@ -45,6 +45,7 @@ int server_listen(server_t *server) {
printf("Failed to listen on socket\n");
return err;
}
+ printf("Bound to port 8000\n");
return 0;
}
@@ -61,6 +62,7 @@ int server_accept(server_t *server) {
for (;;) {
err = (conn_fd = accept(server->listen_fd, (struct sockaddr *)&client_addr,
&client_len));
+ printf("Accepting a new connection\n");
if (err == -1) {
perror("Accept");
printf("failed accepting connection\n");
@@ -68,6 +70,7 @@ int server_accept(server_t *server) {
}
if (!fork()) {
+ printf("Forking, let's go handle them!\n");
handle_player(conn_fd);
}
}