#include void openFile(char *filepath, int flags, queueT *q, long fd_c, logT *logFileT); void readFile(char *filepath, queueT *q, long fd_c, logT *logFileT); void readNFiles(char *numStr, queueT *q, long fd_c, logT *logFileT); void writeFile(char *filepath, size_t size, queueT *q, long fd_c, logT *logFileT, int append); void lockFile(char *filepath, queueT *q, long fd_c, logT *logFileT, pthread_mutex_t *lock, waitingT **waiting); void unlockFile(char *filepath, queueT *q, long fd_c, logT *logFileT, pthread_mutex_t *lock, waitingT **waiting); void closeFile(char *filepath, queueT *q, long fd_c, logT *logFileT, pthread_mutex_t *lock, waitingT **waiting); void removeFile(char *filepath, queueT *q, long fd_c, logT *logFileT, pthread_mutex_t *lock, waitingT **waiting); int sendFile(fileT *f, long fd_c, logT *logFileT); int addWaiting(waitingT **waiting, char *file, int fd); int removeFirstWaiting(waitingT **waiting, char *file); void clearWaiting(waitingT **waiting);