diff --git a/myserver.c b/myserver.c index 2be6393..69679df 100755 --- a/myserver.c +++ b/myserver.c @@ -7,9 +7,12 @@ #include #include #include +#include #define BUF 1024 #define PORT 6543 +char *verzeichnis; + struct msgNumber { int index; @@ -23,9 +26,12 @@ struct msgNumberArr int writeUsersMessages(char username[1024], int *msgNumbs, int lenght) { FILE *filePointer; - printf("Start writeUsersMessages() username: %s", username); - strcat(username, ".bin"); - filePointer = fopen(username, "wb"); + char filename[1024]; + strcpy(filename, verzeichnis); + strcat(filename, username); + strcat(filename, ".bin"); + printf("Start writeUsersMessages() filename: %s\n", filename); + filePointer = fopen(filename, "wb"); /**/ if (!filePointer) { @@ -49,11 +55,14 @@ struct msgNumberArr getUserMessages(char username[1024]) { FILE *filePointer; char filename[1024]; - if('\n' == username[strlen(username) - 1]){ + if ('\n' == username[strlen(username) - 1]) + { username[strlen(username) - 1] = '\0'; } - strcpy(filename, username); + strcpy(filename, verzeichnis); + strcat(filename, username); strcat(filename, ".bin"); + printf("getUserMessages() Filename: %s\n", filename); filePointer = fopen(filename, "rb"); printf("\n\nstart getUserMessages() Filename: %s, Username: %s\n\n", filename, username); if (!filePointer) @@ -66,7 +75,6 @@ struct msgNumberArr getUserMessages(char username[1024]) int i = 0; struct msgNumberArr msgNumbersStruct; - //int msgNumberArr[1024]; //printf("Vorm while\n"); @@ -76,7 +84,6 @@ struct msgNumberArr getUserMessages(char username[1024]) //printf("Im while\n"); fread(&msgNumbersStruct, sizeof(struct msgNumberArr), 1, filePointer); - printf("\nmsgNumberSrtruct lenght: %d\n", msgNumbersStruct.lenght); //} //printf("Nach dem while\n"); fclose(filePointer); @@ -85,7 +92,8 @@ struct msgNumberArr getUserMessages(char username[1024]) int addUserMessage(char username[1024], int msgNumber) { - if('\n' == username[strlen(username) - 1]){ + if ('\n' == username[strlen(username) - 1]) + { username[strlen(username) - 1] = '\0'; } //username[strlen(username)-1] = "\0"; @@ -138,7 +146,10 @@ int addUserMessage(char username[1024], int msgNumber) int writeMessageNumber(int number) { FILE *filePointer; - filePointer = fopen("msgNumber.bin", "wb"); + char filename[1024]; + strcpy(filename, verzeichnis); + strcat(filename, "msgNumber.bin"); + filePointer = fopen(filename, "wb"); struct msgNumber my_record; my_record.index = number; printf("MSG NUMMBER IN writeMessageNumber(): %d\n", number); @@ -156,7 +167,10 @@ int writeMessageNumber(int number) int readLastMessageNumber() { FILE *filePointer; - filePointer = fopen("msgNumber.bin", "rb"); + char filename[1024]; + strcpy(filename, verzeichnis); + strcat(filename, "msgNumber.bin"); + filePointer = fopen(filename, "rb"); struct msgNumber my_record; if (!filePointer) { @@ -211,21 +225,34 @@ struct rec readFile(char filename[1024]) { FILE *filePointer; char fullfilename[1024]; + strcpy(fullfilename, verzeichnis); strcat(fullfilename, filename); strcat(fullfilename, ".bin"); filePointer = fopen(fullfilename, "rb"); - struct rec my_record; + printf("ReadFile Fullfilename: %s\n", fullfilename); if (!filePointer) { - printf("\x1B[31mFile konnte nicht gelesen werden!\x1B[37m\n"); - my_record.sender = "0"; - my_record.receiver = "0"; - my_record.betreff = "0"; - my_record.msg = "0"; - return my_record; + perror("\x1B[31mFile konnte nicht gelesen werden!\x1B[37m\n"); + //printf("\x1B[31mFile konnte nicht gelesen werden!\x1B[37m\n"); + //struct rec nullstruct; + //nullstruct.sender = "0"; + //nullstruct.receiver = "0"; + //nullstruct.betreff = "0"; + //nullstruct.msg = "0"; + //return &nullstruct; } - fread(&my_record, sizeof(struct msgNumber), 1, filePointer); + printf("A"); + struct rec my_record; + //struct rec *my_record_p = malloc(sizeof(struct rec)); + printf("B"); + fread(&my_record, sizeof(struct rec), 1, filePointer); + printf("C"); fclose(filePointer); + printf("\nBETREFF in readFile(): %s", my_record.betreff); + //my_record_p->betreff = my_record.betreff; + //my_record_p->sender = my_record.sender; + //my_record_p->receiver = my_record.receiver; + //my_record_p->msg = my_record.msg; return my_record; } @@ -242,8 +269,12 @@ int writeToFile(char sender[1024], char betreff[1024], char receiver[1024], char else { printf("MSG NUMMBER found, schreibe file mit msgNummber: %d!\n", msgNumber); - sprintf(filename, "%d", msgNumber); + strcpy(filename, verzeichnis); + char msgNumberStr[1024]; + sprintf(msgNumberStr, "%d", msgNumber); + strcat(filename, msgNumberStr); strcat(filename, ".bin"); + printf("\nwriteToFile() Filename: %s\n", filename); filePointer = fopen(filename, "wb"); struct rec my_record; if (!filePointer) @@ -258,9 +289,15 @@ int writeToFile(char sender[1024], char betreff[1024], char receiver[1024], char my_record.betreff = betreff; my_record.msg = message; printf("Vor useradd() in writeToFile()! sender: %s, msgnumber: %d, msg: %s, betrf: %s, empf: %s\n", sender, msgNumber, message, betreff, receiver); - int receiverresult = addUserMessage(receiver, msgNumber); + char receiverfile[1024]; + strcpy(receiverfile, "posteingang/"); + strcat(receiverfile, sender); + int receiverresult = addUserMessage(receiverfile, msgNumber); printf("receiverresult: %d", receiverresult); - int senderresult = addUserMessage(sender, msgNumber); + char senderfile[1024]; + strcpy(senderfile, "postausgang/"); + strcat(senderfile, sender); + int senderresult = addUserMessage(senderfile, msgNumber); printf("senderresult: %d", senderresult); if (senderresult == 0 || receiverresult == 0) { @@ -278,9 +315,33 @@ int writeToFile(char sender[1024], char betreff[1024], char receiver[1024], char } } +//struct rec *readFromFile(char msgNumber[1024]) +//{ +// FILE *filePointer; +// char filename[1024]; +// strcpy(filename, msgNumber); +// strcat(filename, ".bin"); +// filePointer = fopen(filename, "rb"); +// struct rec *my_record_pointer = malloc(sizeof(struct rec)); +// struct rec my_record; +// if (!filePointer) +// { +// perror("\x1B[31mWrite File konnte nicht geƶffnet werden!\x1B[37m\n"); +// } +// else +// { +// +// fread(&my_record, sizeof(struct rec), 1, filePointer); +// fclose(filePointer); +// printf("\n\nReadFile Number: %s Betreff: %s\n\n", msgNumber, my_record.betreff); +// my_record_pointer = &my_record; +// return my_record_pointer; +// } +//} + int main(int argc, char **argv) { - char *verzeichnis = argv[1]; + verzeichnis = strdup(argv[1]); char *meinport = argv[2]; printf("\x1B[35mMein server Verzeichniss: %s\n", verzeichnis); printf("Mein server Port: %s\n", meinport); @@ -423,17 +484,59 @@ int main(int argc, char **argv) printf("->LIST->Username wurde eingegeben:\x1B[33m %s\x1B[37m\n", bufferString); char *username; username = strdup(bufferString); - printf("USERNAME: %s ENDE", username); + char filename[1024]; + strcpy(filename, "posteingang/"); + strcat(filename, username); + printf("Filename: %s ENDE\n", filename); - struct msgNumberArr msgNumbersStruct = getUserMessages(username); - printf("msgnumberstruct lenght: %d", msgNumbersStruct.lenght); - int msgNumbers[1024]; + struct msgNumberArr msgNumbersStruct = getUserMessages(filename); + printf("msgnumberstruct lenght: %d\n", msgNumbersStruct.lenght); + printf("0\n"); + printf("0.1\n"); + struct rec userFilesStruct[1024]; + printf("1\n"); for (int i = 0; i < msgNumbersStruct.lenght; i++) { - msgNumbers[i] = msgNumbersStruct.index[i]; - printf("MSG NUMMBER IN addUserMessage(): %d\n", msgNumbers[i]); - } + printf("2.1&2.%d\n", i); + char filename[1024]; + printf("2.3.%d\n", i); + sprintf(filename, "%d", msgNumbersStruct.index[i]); + printf("2.4.%d\n", i); + struct rec my_record_p = readFile(filename); + printf("2.5.%d\n", i); + printf("\n\nNachricht: %d Betreff: %s\n\n", i, my_record_p.betreff); + userFilesStruct[i] = my_record_p; + printf("2.6.%d\n", i); + } + printf("3\n"); + + filename[1024]; + strcpy(filename, "postausgang/"); + strcat(filename, username); + printf("Filename: %s ENDE\n", filename); + + struct msgNumberArr msgNumbersStructAusgang = getUserMessages(filename); + printf("msgnumberstruct lenght: %d\n", msgNumbersStructAusgang.lenght); + printf("0\n"); + printf("0.1\n"); + struct rec userFilesStructAusgang[1024]; + printf("1\n"); + for (int i = 0; i < msgNumbersStructAusgang.lenght; i++) + { + + printf("2.1&2.%d\n", i); + char filename[1024]; + printf("2.3.%d\n", i); + sprintf(filename, "%d", msgNumbersStructAusgang.index[i]); + printf("2.4.%d\n", i); + struct rec my_record_p = readFile(filename); + printf("2.5.%d\n", i); + printf("\n\nNachricht: %d Betreff: %s\n\n", i, my_record_p.betreff); + userFilesStructAusgang[i] = my_record_p; + printf("2.6.%d\n", i); + } + printf("3\n"); bufferString[0] = '\0'; buffer[0] = '\0'; fflush(stdout);