From 58dc45b9105cda6cca852385d419023eb7616e44 Mon Sep 17 00:00:00 2001 From: Fredrik Robertsen Date: Sat, 7 Feb 2026 21:54:51 +0100 Subject: [PATCH] get port number from envvar --- src/main.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index f1c5a15..e318237 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,54 @@ #include +#include +#include +#include +#include +#include +#include + +const char *LOCALHOST = "127.0.0.1"; + +int read_env_int(const char *var) { + const char* port_str = getenv(var); + + if (port_str == NULL) { + fprintf(stderr, "error: %s environment variable not set.\n", var); + exit(EXIT_FAILURE); + } + + char* endptr; + long val = strtol(port_str, &endptr, 10); + if (endptr == port_str || *endptr != '\0') { + fprintf(stderr, "error: invalid number format for %s.\n", var); + exit(EXIT_FAILURE); + } + return (int)val; +} + +int rcon_connect(int port) { + int sockfd = socket(AF_INET, SOCK_STREAM, 0); + if (sockfd < 0) { + perror("socket creation failed"); + exit(EXIT_FAILURE); + } + + struct sockaddr_in server_addr; + memset(&server_addr, 0, sizeof(server_addr)); + server_addr.sin_family = AF_INET; + server_addr.sin_port = htons(port); + inet_pton(AF_INET, LOCALHOST, &server_addr.sin_addr); + + if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { + perror("connection failed"); + exit(EXIT_FAILURE); + } + printf("connected to rcon server\n"); + return sockfd; +} int main(int argc, char **argv) { - printf("hello"); + const int PORT_NUM = read_env_int("RCON_PORT_NUMBER"); + printf("port: %d\n", PORT_NUM); + + rcon_connect(PORT_NUM); }