fix: groupID wrong type, function headers
This commit is contained in:
parent
a81b245852
commit
f372af3cc3
1 changed files with 132 additions and 132 deletions
|
@ -1,172 +1,172 @@
|
||||||
|
#include <dirent.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
|
||||||
#include <dirent.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/types.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
void displayMessagesFromSender(char *senderDir);
|
||||||
|
void displayMessage(char *senderDir, char *filename);
|
||||||
|
|
||||||
void displayHeader() {
|
void displayHeader() {
|
||||||
printf("╭━━━╮╱╱╱╱╱╱╭╮\n");
|
printf("╭━━━╮╱╱╱╱╱╱╭╮\n");
|
||||||
printf("╰╮╭╮┣╮╱╱╱╱╱┃┃\n");
|
printf("╰╮╭╮┣╮╱╱╱╱╱┃┃\n");
|
||||||
printf("╱┃┃┃┣╋╮╭┳╮╭┫╰━┳━━┳╮\n");
|
printf("╱┃┃┃┣╋╮╭┳╮╭┫╰━┳━━┳╮\n");
|
||||||
printf("╱┃┃┃┣┫┃┃┃╰╯┃╭╮┃╭╮┣┫\n");
|
printf("╱┃┃┃┣┫┃┃┃╰╯┃╭╮┃╭╮┣┫\n");
|
||||||
printf("╭╯╰╯┃┃╰╯┃┃┃┃╰╯┃╭╮┃┃\n");
|
printf("╭╯╰╯┃┃╰╯┃┃┃┃╰╯┃╭╮┃┃\n");
|
||||||
printf("╰━━━┫┣━━┻┻┻┻━━┻╯╰┻╯\n");
|
printf("╰━━━┫┣━━┻┻┻┻━━┻╯╰┻╯\n");
|
||||||
printf("╱╱╱╭╯┃\n");
|
printf("╱╱╱╭╯┃\n");
|
||||||
printf("╱╱╱╰━╯\n");
|
printf("╱╱╱╰━╯\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void displayAllMessages(uid_t userID) {
|
void displayAllMessages(uid_t userID) {
|
||||||
char userDir[256];
|
char userDir[256];
|
||||||
sprintf(userDir, "/djumbai/user/%d/mailbox", userID); // Construct user directory path
|
sprintf(userDir, "/djumbai/user/%d/mailbox", userID); // Construct user directory path
|
||||||
// sprintf(userDir, "/mnt/e/Desktop/CSI/djumbai/test/%d/mailbox", userID); // TODO MUDAR ESTE PATH
|
// sprintf(userDir, "/mnt/e/Desktop/CSI/djumbai/test/%d/mailbox", userID); // TODO MUDAR ESTE
|
||||||
DIR *dir;
|
// PATH
|
||||||
struct dirent *entry;
|
DIR *dir;
|
||||||
|
struct dirent *entry;
|
||||||
|
|
||||||
printf("Reading all messages for UserID %d...\n", userID);
|
printf("Reading all messages for UserID %d...\n", userID);
|
||||||
|
|
||||||
dir = opendir(userDir);
|
dir = opendir(userDir);
|
||||||
if (dir == NULL) {
|
if (dir == NULL) {
|
||||||
printf("Error opening directory\n");
|
printf("Error opening directory\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((entry = readdir(dir)) != NULL) {
|
while ((entry = readdir(dir)) != NULL) {
|
||||||
if (entry->d_type == DT_DIR && strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
|
if (entry->d_type == DT_DIR && strcmp(entry->d_name, ".") != 0 &&
|
||||||
char senderDir[256];
|
strcmp(entry->d_name, "..") != 0) {
|
||||||
sprintf(senderDir, "%s/%s", userDir, entry->d_name); // Construct sender directory path
|
char senderDir[256];
|
||||||
displayMessagesFromSender(senderDir);
|
sprintf(senderDir, "%s/%s", userDir, entry->d_name); // Construct sender directory path
|
||||||
}
|
displayMessagesFromSender(senderDir);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void displayGroupMessages(gid_t groupID) {
|
||||||
|
char groupDir[256];
|
||||||
|
sprintf(groupDir, "/djumbai/group/%d/mailbox", groupID);
|
||||||
|
DIR *dir;
|
||||||
|
struct dirent *entry;
|
||||||
|
|
||||||
|
printf("Reading all messages for GroupID %d...\n", groupID);
|
||||||
|
|
||||||
void displayGroupMessages(uid_t groupID) {
|
dir = opendir(groupDir);
|
||||||
char groupDir[256];
|
if (dir == NULL) {
|
||||||
sprintf(groupDir, "/djumbai/group/%d/mailbox", groupID);
|
printf("Error opening directory\n");
|
||||||
DIR *dir;
|
return;
|
||||||
struct dirent *entry;
|
}
|
||||||
|
|
||||||
printf("Reading all messages for GroupID %d...\n", groupID);
|
while ((entry = readdir(dir)) != NULL) {
|
||||||
|
if (entry->d_type == DT_DIR && strcmp(entry->d_name, ".") != 0 &&
|
||||||
|
strcmp(entry->d_name, "..") != 0) {
|
||||||
|
char senderDir[256];
|
||||||
|
sprintf(senderDir, "%s/%s", groupDir, entry->d_name); // Construct sender directory path
|
||||||
|
displayMessagesFromSender(senderDir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dir = opendir(groupDir);
|
closedir(dir);
|
||||||
if (dir == NULL) {
|
|
||||||
printf("Error opening directory\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((entry = readdir(dir)) != NULL) {
|
|
||||||
if (entry->d_type == DT_DIR && strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
|
|
||||||
char senderDir[256];
|
|
||||||
sprintf(senderDir, "%s/%s", groupDir, entry->d_name); // Construct sender directory path
|
|
||||||
displayMessagesFromSender(senderDir);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
closedir(dir);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void displayMessagesFromSender(char *senderDir) {
|
void displayMessagesFromSender(char *senderDir) {
|
||||||
char *senderName = strrchr(senderDir, '/'); // Find the last occurrence of '/'
|
char *senderName = strrchr(senderDir, '/'); // Find the last occurrence of '/'
|
||||||
if (senderName == NULL) {
|
if (senderName == NULL) {
|
||||||
printf("Error parsing sender directory\n");
|
printf("Error parsing sender directory\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
senderName++; // Move past the '/'
|
senderName++; // Move past the '/'
|
||||||
|
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
struct dirent *entry;
|
struct dirent *entry;
|
||||||
|
|
||||||
printf("Reading messages from sender %s...\n", senderName);
|
printf("Reading messages from sender %s...\n", senderName);
|
||||||
|
|
||||||
dir = opendir(senderDir);
|
dir = opendir(senderDir);
|
||||||
if (dir == NULL) {
|
if (dir == NULL) {
|
||||||
printf("Error opening directory\n");
|
printf("Error opening directory\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((entry = readdir(dir)) != NULL) {
|
while ((entry = readdir(dir)) != NULL) {
|
||||||
if (entry->d_type == DT_REG) { // If it's a regular file
|
if (entry->d_type == DT_REG) { // If it's a regular file
|
||||||
displayMessage(senderDir, entry->d_name);
|
displayMessage(senderDir, entry->d_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void displayMessage(char *senderDir, char *filename) {
|
void displayMessage(char *senderDir, char *filename) {
|
||||||
char filepath[256];
|
char filepath[256];
|
||||||
sprintf(filepath, "%s/%s", senderDir, filename);
|
sprintf(filepath, "%s/%s", senderDir, filename);
|
||||||
FILE *file = fopen(filepath, "r");
|
FILE *file = fopen(filepath, "r");
|
||||||
if (file == NULL) {
|
if (file == NULL) {
|
||||||
printf("Error opening file: %s\n", filename);
|
printf("Error opening file: %s\n", filename);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("----- %s -----\n", filename);
|
printf("----- %s -----\n", filename);
|
||||||
char buffer[256];
|
char buffer[256];
|
||||||
while (fgets(buffer, sizeof(buffer), file)) {
|
while (fgets(buffer, sizeof(buffer), file)) {
|
||||||
printf("%s", buffer);
|
printf("%s", buffer);
|
||||||
}
|
}
|
||||||
printf("----- End of %s -----\n", filename);
|
printf("----- End of %s -----\n", filename);
|
||||||
|
|
||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
int choice;
|
int choice;
|
||||||
char sender[20];
|
char sender[20];
|
||||||
char groupID[20];
|
char group[20];
|
||||||
|
|
||||||
displayHeader();
|
displayHeader();
|
||||||
|
|
||||||
while(1) {
|
while (1) {
|
||||||
printf("\nCurrent UserID: %d\n", getuid());
|
printf("\nCurrent UserID: %d\n", getuid());
|
||||||
printf("Options:\n");
|
printf("Options:\n");
|
||||||
printf("1. all (read all messages)\n");
|
printf("1. all (read all messages)\n");
|
||||||
printf("2. user -userID_here (read messages from given userID)\n");
|
printf("2. user -userID_here (read messages from given userID)\n");
|
||||||
printf("3. group -groupID_here\n");
|
printf("3. group -groupID_here\n");
|
||||||
printf("4. kill (exit the program)\n");
|
printf("4. kill (exit the program)\n");
|
||||||
printf("Enter your choice: ");
|
printf("Enter your choice: ");
|
||||||
scanf("%d", &choice);
|
scanf("%d", &choice);
|
||||||
|
|
||||||
switch(choice) {
|
switch (choice) {
|
||||||
case 1:
|
case 1:
|
||||||
displayAllMessages(getuid());
|
displayAllMessages(getuid());
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
printf("Enter sender userID: ");
|
printf("Enter sender userID: ");
|
||||||
scanf("%s", sender);
|
scanf("%s", sender);
|
||||||
|
|
||||||
uid_t senderID = atoi(sender);
|
uid_t senderID = atoi(sender);
|
||||||
char userDir[256];
|
char userDir[256];
|
||||||
sprintf(userDir, "/djumbai/user/%d/mailbox/%d", getuid(), senderID);
|
sprintf(userDir, "/djumbai/user/%d/mailbox/%d", getuid(), senderID);
|
||||||
displayMessagesFromSender(userDir);
|
displayMessagesFromSender(userDir);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
printf("Enter groupID: ");
|
printf("Enter groupID: ");
|
||||||
scanf("%s", groupID);
|
scanf("%s", group);
|
||||||
displayGroupMessages(groupID);
|
gid_t groupID = atoi(group);
|
||||||
printf("Group messages functionality is not implemented yet.\n");
|
displayGroupMessages(groupID);
|
||||||
break;
|
printf("Group messages functionality is not implemented yet.\n");
|
||||||
case 4:
|
break;
|
||||||
printf("Exiting program...\n");
|
case 4:
|
||||||
exit(0);
|
printf("Exiting program...\n");
|
||||||
default:
|
exit(0);
|
||||||
printf("Invalid choice. Please try again.\n");
|
default:
|
||||||
}
|
printf("Invalid choice. Please try again.\n");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue