From 4ca3e0cc18945ad20061ae02651f1c407d736f15 Mon Sep 17 00:00:00 2001 From: Matt Strapp Date: Mon, 2 Nov 2020 18:54:06 -0600 Subject: please help --- P2/lib/utils.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/P2/lib/utils.c b/P2/lib/utils.c index 8abac72..ac35243 100644 --- a/P2/lib/utils.c +++ b/P2/lib/utils.c @@ -35,9 +35,9 @@ void sendChunkData(char *inputFile, int nMappers) { // open message queue int msgid = openQueue("map"); int map = 1; - int fd = open(inputFile, O_RDONLY); + FILE* file = fopen(inputFile, "r"); // construct chunks of 1024 bytes - while(read(fd, message.msgText, chunkSize) != 0) { + while(fgets(message.msgText, chunkSize + 1, file) != NULL) { /* Go to the end of the chunk, check if final character is a space if character is a space, do nothing else cut off before that word and put back file. @@ -45,18 +45,14 @@ void sendChunkData(char *inputFile, int nMappers) { Maybe copy message.msgText into a new array, do the backwards iteration, and then replace message.msgText with the temp array? Or something? */ - //lseek()?? (LOW LEVEL) - //http://crasseux.com/books/ctutorial/Finding-file-positions-at-a-low-level.html - // TODO! help - - // int i = 1023; - // while(message.msgText[i] != ' ') { - // i--; - // message.msgText[i] == '\0'; - // printf("%d\n", i); - // } - // lseek(fd, (i - 1023), SEEK_CUR); + int i = 1023; + while(message.msgText[i] != ' ' || message.msgText[i] != '.') { + i--; + message.msgText[i] == '\0'; + printf("%d\n", i); + } + fseek(file, (i - 1023), SEEK_CUR); printf("%s\n", message.msgText); message.msgType = (map++ % nMappers) + 1 ; //THIS IS DEBUG, NOT ACTUALLY FUNCTIONAL (like at all) @@ -67,7 +63,7 @@ void sendChunkData(char *inputFile, int nMappers) { struct msgBuffer END = {i, "END"}; msgsnd(msgid, &END, MSGSIZE, 0); } - + fclose(file); } // hash function to divide the list of word.txt files across reducers -- cgit v1.2.3