From f1e2c85e3a78b8a2a5bf60d165bcc48929e5c0dc Mon Sep 17 00:00:00 2001 From: Lexi Quinn Date: Tue, 25 Jul 2023 19:48:27 +1000 Subject: [PATCH] made the communication between the server and cmdline client more direct --- src2/client.c | 74 ++++++------------------------------------------- src2/server.c | 77 +++++++++++++++++++++++++++------------------------ src2/tui.c | 6 ++-- 3 files changed, 53 insertions(+), 104 deletions(-) diff --git a/src2/client.c b/src2/client.c index e4fb933..c8107ef 100644 --- a/src2/client.c +++ b/src2/client.c @@ -47,51 +47,10 @@ int main(int argc, char *argv[]) { exit(1); } - if (!strcmp(argv[1], "time")) { - strcpy(buffer, "current_time"); - } else if (!strcmp(argv[1], "start")) { - strcpy(buffer, "start"); - } else if (!strcmp(argv[1], "stop")) { - strcpy(buffer, "stop"); - } else if (!strcmp(argv[1], "kill")) { - strcpy(buffer, "kill"); - } else if (!strcmp(argv[1], "split")) { - strcpy(buffer, "split"); - } else if (!strcmp(argv[1], "skip")) { - strcpy(buffer, "skip"); - } else if (!strcmp(argv[1], "pause")) { - strcpy(buffer, "pause"); - } else if (!strcmp(argv[1], "resume")) { - strcpy(buffer, "resume"); - } else if (!strcmp(argv[1], "undo")) { - strcpy(buffer, "undo"); - } else if (!strcmp(argv[1], "redo")) { - strcpy(buffer, "redo"); - } else if (!strcmp(argv[1], "foreground")) { - strcpy(buffer, "Foreground-Color"); - } else if (!strcmp(argv[1], "background")) { - strcpy(buffer, "Background-Color"); - } else if (!strcmp(argv[1], "save")) { - strcpy(buffer, "save"); - } else if (!strcmp(argv[1], "runs")) { - strcpy(buffer, "run_count"); - } else if (!strcmp(argv[1], "segments")) { - strcpy(buffer, "segment_count"); - } else if (!strcmp(argv[1], "start-split-stop")) { - strcpy(buffer, "start-split-stop"); - } else if (!strcmp(argv[1], "pause-resume")) { - strcpy(buffer, "pause-resume"); - } else if (!strcmp(argv[1], "start-stop")) { - strcpy(buffer, "start-stop"); - } else if (!strcmp(argv[1], "start-split")) { - strcpy(buffer, "start-split"); - } else if (!strcmp(argv[1], "split-stop")) { - strcpy(buffer, "split-stop"); - } else if (!strcmp(argv[1], "undo-redo")) { - strcpy(buffer, "undo-redo"); - } else { - perror("No valid command given"); - exit(1); + bzero(buffer, 256); + for (int i = 1; i < argc; i++) { + strcat(buffer, argv[i]); + strcat(buffer, " "); } /* Send message to the server */ @@ -104,26 +63,11 @@ int main(int argc, char *argv[]) { /* Now read server response */ bzero(buffer,256); n = read(sockfd, &buffer, 256); - - //read an int response - if (!strcmp(argv[1], "time") || !strcmp(argv[1], "runs") || !strcmp(argv[1], "segments")) { - int x = -1; - x = *(int*)&buffer; - if (n < 0) { - perror("ERROR reading from socket"); - exit(1); - } - if (x != -1) - printf("%d\n",x); - } - //read a string response - else { - if (n < 0) { - perror("ERROR reading from socket"); - exit(1); - } - if (buffer != NULL) - printf("%s", buffer); + if (n < 0) { + perror("ERROR reading from socket"); + exit(1); } + if (buffer != NULL) + printf("%s\n", buffer); return 0; } diff --git a/src2/server.c b/src2/server.c index 89820f7..ec1fbbf 100644 --- a/src2/server.c +++ b/src2/server.c @@ -72,8 +72,9 @@ void timespecToRFC3339(struct timespec t, char buf[]); void loadFiles(); void add_segment(char *sname, char *lname, char *desc); void addFile(char *path); -void sendValue(int sock, char* name); void sendInt(int sock, int value); +void sendValue(int sock, char* name); +void sendString(int sock, char* str); void doprocessing (int sock); void addPauseTime(); void subtractPauseTime(); @@ -397,7 +398,6 @@ void loadFiles() char buff2[255]; for (int i = 0; i < files; i++) { - printf("loading file: \"%s\"\n", filePaths[i]); fp = fopen(filePaths[i], "r+"); while(1) { if (!fgets(buff, 255, fp)) @@ -459,17 +459,6 @@ void loadFiles() fclose(fp); } - - //Print metadata arrays - for (int i = 0; i < valuecount; i++) { - printf("%s | %s", names[i], values[i]); - } - //Print segments - for (int i = 0; i < segment_count; i++) { - printf("Segment %d: %s\n", i, segments[i].shortname); - } - //Print run count - printf("%d\n", run_count); } void add_segment(char *sname, char *lname, char *desc) @@ -505,7 +494,7 @@ int current_ms() void sendInt(int sock, int value) { char buffer[256]; - strncpy(buffer, (char*)&value, sizeof(int)); + sprintf(buffer, "%d", value); int n = write(sock, &buffer, 256); if (n < 0) { perror("ERROR writing to socket"); @@ -535,79 +524,95 @@ void sendValue(int sock, char* name) } } +void sendString(int sock, char* str) +{ + char buffer[256]; + strcpy(buffer, str); + int n = write(sock, &buffer, 256); + if (n < 0) { + perror("ERROR writing to socket"); + exit(1); + } +} + void doprocessing (int sock) { int n; char buffer[256]; n = read(sock, &buffer, 256); - + char *token = strtok(buffer, " "); if (n < 0) { perror("ERROR reading from socket"); exit(1); } - if (!strcmp(buffer, "current_time")) { + if (!strcmp(token, "current_time")) { //printf("Recieved time command\n"); sendInt(sock, current_ms()); - } else if (!strcmp(buffer, "start")) { + } else if (!strcmp(token, "start")) { printf("Recieved start command\n"); start(); - } else if (!strcmp(buffer, "stop")) { + } else if (!strcmp(token, "stop")) { printf("Recieved stop command\n"); stop(); - } else if (!strcmp(buffer, "kill")) { + } else if (!strcmp(token, "kill")) { printf("Recieved kill command\n"); alive = false; - } else if (!strcmp(buffer, "split")) { + } else if (!strcmp(token, "split")) { printf("Recieved split command\n"); split(); - } else if (!strcmp(buffer, "skip")) { + } else if (!strcmp(token, "skip")) { printf("Recieved skip command\n"); skip(); - } else if (!strcmp(buffer, "pause")) { + } else if (!strcmp(token, "pause")) { printf("Recieved pause command\n"); pause_timer(); - } else if (!strcmp(buffer, "resume")) { + } else if (!strcmp(token, "resume")) { printf("Recieved resume command\n"); resume(); - } else if (!strcmp(buffer, "undo")) { + } else if (!strcmp(token, "undo")) { printf("Recieved undo command\n"); undo(); - } else if (!strcmp(buffer, "redo")) { + } else if (!strcmp(token, "redo")) { printf("Recieved redo command\n"); redo(); - } else if (!strcmp(buffer, "Foreground-Color")) { + } else if (!strcmp(token, "Foreground-Color")) { printf("Recieved request for foreground color\n"); sendValue(sock, "Foreground-Color"); - } else if (!strcmp(buffer, "Background-Color")) { + } else if (!strcmp(token, "Background-Color")) { printf("Recieved request for background color\n"); sendValue(sock, "Background-Color"); - } else if (!strcmp(buffer, "save")) { + } else if (!strcmp(token, "save")) { printf("Recieved save command\n"); appendRunToFile(); - } else if (!strcmp(buffer, "run_count")) { + } else if (!strcmp(token, "run_count")) { printf("Recieved request for run count\n"); sendInt(sock, run_count); - } else if (!strcmp(buffer, "segment_count")) { + } else if (!strcmp(token, "segment_count")) { printf("Recieved request for segment count\n"); sendInt(sock, segment_count); - } else if (!strcmp(buffer, "start_split_stop")) { + } else if (!strcmp(token, "start_split_stop")) { printf("Recieved start_split_stop command\n"); start_split_stop(); - } else if (!strcmp(buffer, "pause_resume")) { + } else if (!strcmp(token, "pause_resume")) { printf("Recieved pause_resume command\n"); pause_resume(); - } else if (!strcmp(buffer, "start-stop")) { + } else if (!strcmp(token, "start-stop")) { printf("Recieved start-stop command\n"); start_stop(); - } else if (!strcmp(buffer, "start-split")) { + } else if (!strcmp(token, "start-split")) { printf("Recieved start-split command\n"); start_split(); - } else if (!strcmp(buffer, "split-stop")) { + } else if (!strcmp(token, "split-stop")) { printf("Recieved split-stop command\n"); split_stop(); - } else if (!strcmp(buffer, "undo-redo")) { + } else if (!strcmp(token, "undo-redo")) { printf("Recieved undo-redo command\n"); undo_redo(); + } else if (!strcmp(token, "segment_name")) { + token = strtok(NULL, " "); + int x = atoi(token); + printf("Recieved request for segment %s's name: %s\n", token, segments[x].shortname); + sendString(sock, segments[x].shortname); } else { printf("Recieved invalid command, ignoring...\n"); } diff --git a/src2/tui.c b/src2/tui.c index 4a86830..c9f64c3 100644 --- a/src2/tui.c +++ b/src2/tui.c @@ -193,7 +193,7 @@ int main (int argc, char *argv[]) char ti[13]; //Request foreground color from config file - fp = popen("./result/bin/quest-log foreground", "r"); + fp = popen("./result/bin/quest-log Foreground-Color", "r"); if (fgets(path, sizeof(path), fp)) { if (strcmp(path, "DATA NOT PRESENT")) processColorString(&f, path); @@ -202,7 +202,7 @@ int main (int argc, char *argv[]) pclose(fp); //Request background color from config file - fp = popen("./result/bin/quest-log background", "r"); + fp = popen("./result/bin/quest-log Background-Color", "r"); if (fgets(path, sizeof(path), fp)) { if (strcmp(path, "DATA NOT PRESENT")) processColorString(&b, path); @@ -217,7 +217,7 @@ int main (int argc, char *argv[]) } while (1) { int time = 0; - fp = popen("./result/bin/quest-log time", "r"); + fp = popen("./result/bin/quest-log current_time", "r"); if (fp == NULL) { printf("Failed to run command\n"); exit(1);