aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jonas Gunz <himself@jonasgunz.de> 2020-10-03 01:14:53 +0200
committerGravatar Jonas Gunz <himself@jonasgunz.de> 2020-10-03 01:14:53 +0200
commit1eb0f638b031f220cf199251066f74a83c659b0c (patch)
tree808df6edaba570b20f327ce97e977e436ac2a0ea
parentace6ce28fbd880483a68c88c9bb63f915cd6e5d4 (diff)
downloadminecraft-rcon-1eb0f638b031f220cf199251066f74a83c659b0c.tar.gz
now accepts parameters
-rw-r--r--src/main.c38
-rw-r--r--src/rcon.c2
-rw-r--r--src/rcon.h1
3 files changed, 38 insertions, 3 deletions
diff --git a/src/main.c b/src/main.c
index 0a80bf6..fbbdd09 100644
--- a/src/main.c
+++ b/src/main.c
@@ -28,6 +28,8 @@ program_params_t parse_args ( int argc, char* argv[] );
int connect_socket ( char* _host, char* _port );
+void print_help ( char* _progname );
+
int main( int argc, char* argv[] ) {
program_params_t args = parse_args( argc, argv );
@@ -51,7 +53,33 @@ int main( int argc, char* argv[] ) {
}
program_params_t parse_args ( int argc, char* argv[] ) {
- program_params_t ret = { "127.0.0.1", "25575", "1234", "list" };
+ program_params_t ret;
+ memset(&ret, 0, sizeof ret);
+
+ if ( argc < 5 )
+ print_help ( argv[0] );
+
+ ret.host = argv[1];
+ ret.port = argv[2];
+ ret.password = argv[3];
+
+ unsigned int len = 0;
+ for ( int i = 4; i < argc; i++ ) {
+ len += strlen ( argv[i] ) + 1;
+ }
+
+ ret.command = malloc ( len + 1);
+ ret.command[len] = 0;
+
+ unsigned int cnt = 0;
+ for ( int i = 4; i < argc; i++ ) {
+ int arglen = strlen(argv[i]) + 1;
+ memcpy ( ret.command + cnt, argv[i], arglen);
+ (ret.command + cnt)[arglen - 1] = ' ';
+ cnt += arglen;
+ }
+ ret.command[len-1] = 0; // Hacky AF
+
return ret;
}
@@ -89,3 +117,11 @@ int connect_socket ( char* _host, char* _port ) {
return sock;
}
+void print_help ( char* _progname ) {
+ printf(
+ "Minecraft RCON client\n"
+ "Usage:\n"
+ " %s HOST PORT PASSWORD COMMAND",
+ _progname
+ );
+}
diff --git a/src/rcon.c b/src/rcon.c
index 2a79e64..1e876cf 100644
--- a/src/rcon.c
+++ b/src/rcon.c
@@ -58,7 +58,7 @@ int rcon_parse_packet ( rcon_packet_t* _packet, char* _buffer, uint32_t _len ) {
return -1;
int32_t bytecount = 0;
-
+
bytecount += rcon_read_int ( _buffer + bytecount, _len - bytecount, &_packet->length );
bytecount += rcon_read_int ( _buffer + bytecount, _len - bytecount, &_packet->id );
bytecount += rcon_read_int ( _buffer + bytecount, _len - bytecount, &_packet->type );
diff --git a/src/rcon.h b/src/rcon.h
index 8ca46c6..1c1e232 100644
--- a/src/rcon.h
+++ b/src/rcon.h
@@ -22,7 +22,6 @@
#include <sys/socket.h>
#define RCON_LOGIN 3
-#define RCON_LOLGINFAIL -1
#define RCON_COMMAND 2
#define RCON_RESPONSE 0