diff options
author | Jonas Gunz <himself@jonasgunz.de> | 2020-10-03 01:14:53 +0200 |
---|---|---|
committer | Jonas Gunz <himself@jonasgunz.de> | 2020-10-03 01:14:53 +0200 |
commit | 1eb0f638b031f220cf199251066f74a83c659b0c (patch) | |
tree | 808df6edaba570b20f327ce97e977e436ac2a0ea /src | |
parent | ace6ce28fbd880483a68c88c9bb63f915cd6e5d4 (diff) | |
download | minecraft-rcon-1eb0f638b031f220cf199251066f74a83c659b0c.tar.gz |
now accepts parameters
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 38 | ||||
-rw-r--r-- | src/rcon.c | 2 | ||||
-rw-r--r-- | src/rcon.h | 1 |
3 files changed, 38 insertions, 3 deletions
@@ -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 + ); +} @@ -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 ); @@ -22,7 +22,6 @@ #include <sys/socket.h> #define RCON_LOGIN 3 -#define RCON_LOLGINFAIL -1 #define RCON_COMMAND 2 #define RCON_RESPONSE 0 |