diff options
| author | Syndamia <kamen@syndamia.com> | 2024-01-01 19:04:17 +0200 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2024-01-01 19:04:17 +0200 |
| commit | f3ab0863404a8eb723ad09756a5aa53d054a0160 (patch) | |
| tree | ba15b831e729cf97e183a5af8cc1c1028f7dbf93 | |
| parent | 7eb898a6f4ca429416ba2ab07d93564f137dd8e2 (diff) | |
| download | pico-web-f3ab0863404a8eb723ad09756a5aa53d054a0160.tar pico-web-f3ab0863404a8eb723ad09756a5aa53d054a0160.tar.gz pico-web-f3ab0863404a8eb723ad09756a5aa53d054a0160.zip | |
[server] Implemented ability to change host and port with arguments
| -rw-r--r-- | server.c | 25 | ||||
| -rw-r--r-- | util.c | 9 | ||||
| -rw-r--r-- | util.h | 1 |
3 files changed, 31 insertions, 4 deletions
@@ -60,21 +60,38 @@ void handler_refuseConnections(int signum) { int main(int argc, char* argv[]) { /* + * Get server parameters + */ + + sds host = sdsnew("127.0.0.1"); + sds port = sdsnew("8080"); + + int argvOffset = 1; + if (charCount(argv[1], ',') == 1) { + argvOffset++; + char* sep = strchr(argv[1], ','); + sdsfree(host); + host = sdsnewlen(argv[1], sep - argv[1]); + sdsfree(port); + port = sdsnew(sep + 1); + } + + /* * Get hosts */ - int vhostsc = argc - 1; + int vhostsc = argc - argvOffset; sds **vhosts = malloc(vhostsc * sizeof(sds*)); for (int i = 0, temp = 0; i < vhostsc; i++) { - vhosts[i] = sdssplitlen(argv[i+1], strlen(argv[i+1]), ",", 1, &temp); + vhosts[i] = sdssplitlen(argv[i+argvOffset], strlen(argv[i+argvOffset]), ",", 1, &temp); } /* * Create socket for accepting connections */ - int fd_socket = createCommunicationSocket("127.0.0.1", "8080"); - printf("Listening on %s:%s\n", "127.0.0.1", "8080"); + int fd_socket = createCommunicationSocket(host, port); + printf("Listening on %s:%s\n", host, port); /* * Server command-line interface @@ -169,3 +169,12 @@ int isNumber(char* str) { } return 1; } + +int charCount(char* str, char cmp) { + int count = 0; + while (*str != '\0') { + count += *str == cmp; + str++; + } + return count; +} @@ -24,5 +24,6 @@ int digits(int num); int streq(const char* first, const char* second); void shiftLeft(char* str, size_t size, size_t shift); int isNumber(char* str); +int charCount(char* str, char cmp); #endif |
