From 0e5db6544705c99732e8cade3abd9cb7b00ad930 Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Thu, 3 May 2018 19:49:43 +0200 Subject: [PATCH] Large file support added, bug fixes --- build/Debug/GNU-Linux/ftpCommandElaborate.o | Bin 59944 -> 59536 bytes build/Debug/GNU-Linux/ftpData.o | Bin 31128 -> 36304 bytes build/Debug/GNU-Linux/ftpServer.o | Bin 57144 -> 51392 bytes build/Debug/GNU-Linux/library/configRead.o | Bin 31936 -> 31936 bytes build/Debug/GNU-Linux/library/connection.o | Bin 33816 -> 33816 bytes build/Debug/GNU-Linux/library/daemon.o | Bin 14160 -> 14160 bytes .../Debug/GNU-Linux/library/dynamicVectors.o | Bin 15984 -> 15984 bytes .../Debug/GNU-Linux/library/fileManagement.o | Bin 29792 -> 29984 bytes build/Debug/GNU-Linux/library/logFunctions.o | Bin 7312 -> 7312 bytes build/Debug/GNU-Linux/library/signals.o | Bin 10944 -> 10944 bytes build/Debug/GNU-Linux/uFTP.o | Bin 6168 -> 6168 bytes dist/Debug/GNU-Linux/uftp | Bin 160008 -> 160136 bytes dist/Debug/GNU-Linux/uftpReleased | Bin 153776 -> 0 bytes ftpCommandElaborate.c | 18 +- ftpCommandsElaborate.h | 2 +- ftpData.c | 174 +++++++++- ftpData.h | 12 +- ftpServer.c | 123 ++----- library/configRead.c | 1 + library/connection.c | 1 + library/daemon.c | 1 + library/dynamicVectors.c | 1 + library/fileManagement.c | 327 +++++++++--------- library/fileManagement.h | 6 +- library/logFunctions.c | 1 + library/signals.c | 1 + nbproject/private/private.xml | 3 - uFTP.c | 4 +- 28 files changed, 387 insertions(+), 288 deletions(-) delete mode 100755 dist/Debug/GNU-Linux/uftpReleased diff --git a/build/Debug/GNU-Linux/ftpCommandElaborate.o b/build/Debug/GNU-Linux/ftpCommandElaborate.o index 6bb7a1722d0a4f379f746b510e692d43cc6b271a..557a7d92ff4ddfc0f536e89c0338b7f592b8b992 100644 GIT binary patch delta 6766 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 delta 7139 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 diff --git a/build/Debug/GNU-Linux/ftpData.o b/build/Debug/GNU-Linux/ftpData.o index 886821be85906c7162c50eaa3cbd2cb4887edf3e..7699e0f66e06b22b4569f9c0e03d3e5c15fddf71 100644 GIT binary patch literal 36304 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 UX@A%>So!s2{}w4NlT82pKiFptPyhe` literal 57144 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 diff --git a/build/Debug/GNU-Linux/library/configRead.o b/build/Debug/GNU-Linux/library/configRead.o index e2258e32eb960fa3beae97f29ca0220975c8134d..ba5323c037d2fc4a98efa375318cd1e569b7a661 100644 GIT binary patch delta 2183 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 delta 2285 zcmY*bUrbwN6hF5uw3Lo}mvEO(5L(M(X-gp?DAg?zvqc8mBnw;WwrJ<7D@qLhnF5=+ zEM~6G7*{{1H4?Wa6B$g!z~bgGI?)#&^vPIX7GHfrAB~!r-*?V!=zY1r-}&=9=R4=S zg>unTE_#-Rw>iB(H4p`fi0r;ycrm`Omxuz4?+3QpPK@Qr?*GL{6mB~XocYm5)Jh?p z{NR}eq6WZ8`;iBNuFh^i(Hw%l#hSyw%|UWdcn?UJ9eaUW8Sgu25Jeb23i||^cnt-K ztZ{?LE5%2CbBkN{{^@G*Q8X^a4k*$OHE?ehPTdVe&M#kdx4m>G~Ju~q12syorXqbA!?0O9g?HBTTv!7@{$l08q zs34?>ZIy+*feUg&$T_t+-r>Bt)16E?VZZg?CU-J#qYYWrd0?4L30NkhfMqi8qEl(~ zJ=iTdPZ^|H$OniD3;A#w_c<&{vwH7BKGKU9a#3$y$R&`hkjo$iAy;tECWU-F5hD6i z$R}ul5_H!-@@$U?AvHCAmlqTi7Y>R*6?A5 zg?x`+q`05Vj9N;xgnqctM05{!WF*wDiKvlKeuU$*o3R=x4N56S}+*IDbzNwv1EOSy!${e^Z>jYBHxW~$YxNJys+sc^_> z2N<4b7g_@`Q9r6zO5&Ey($>ULMFF{kcy#msqj4e&YUm6eW}SJ^hmwyWylbj;LWn5Q(t zwgvT4I%Y0%oJ?_1&81`JHMZqA?wYEk+uQXw=qVN0CTyH2rB6Jiwsc2^^lz`XwCeCw zrtsGdH;8jivg#gYr|{`ldwEB?6}haM>5lBq!U#FeI3zJOOw>BoCwag3W=4B*@?Ag&>ty92~E zf^+xO$rWU#FfjUCGK2JPsFN$oVPFiH%>v>bsFN#BWMB+zV+Zjr)G^32FfcGMYJ=>BoCw4g3W=4B*@?Ag&>ty92~E zf^+xO$rWU#FfjUAGK2JPsFN$oVPN#1%>v>bsFN#BWMB+vV+Zjr)G^32FfcGMYJuzl rgUMfc#AJ0qT&9U03LqgyT?o%dE~zw)fl+U>25%ZOqt@nrfrDxQJX5XNUNz91-<1mbHW=@bi7ooTJa!a`D6D5NnM5bckUEtL?#V^buU#zqh< z0twhyc-Ywa2Uu97u~0aO5UrHi**myvcAnpF?h9%`t=F_MsV?o@b`sAf0TNzYW&r>& ziMK#`OU_pTXH9l57j$cqO{UQ^~Yt2;v4ydpCwWHTB7o6Nf~SnU2qvM1Sk3Xg}LmegljR7$4E8YR{!oBN#5jKj!`(R66L y6QesXOlKX3`MXA^piVQQScsttUr6VcVMQC14^iil6D*bQ`*_yee{~lC delta 657 zcmY+AyGsK>5XNUNz6c7J1mbIBO2y);!?adnVPQH8g)|WZqIEQ6OARV`Y>GqE*a(6} z;0hay#LCV;z(Po6p%93~bjs}P9o#iL&+j+)^=tiF`_jgwy0UW{Njx40NO-=?0svqV z?}75BoUH&(o9t1}>Fx~v>TX-Y*c65Hx;#{UTZkbkS>DcK1#mP94= z!h|=fv$)UVKVkZ=fB3UbtQ+oK%A9814v;pl$qWkFj0V6O^Ue(xTYnL)K{R911)m<8 zR8=Qwv060)d`*?`mbXpx)A)E8#^2f6M4N>L?=$P7LLIBb{4Wbm{;A diff --git a/build/Debug/GNU-Linux/library/fileManagement.o b/build/Debug/GNU-Linux/library/fileManagement.o index 8a51513d601f6c33b5aa785c742ffef54ab03c64..d776919c26ff5649e425a05f99e9df5154c8f206 100644 GIT binary patch delta 5394 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 XJ8G~{T6P@TnjO{AF0Dg2)RFjq-e9yq diff --git a/build/Debug/GNU-Linux/library/logFunctions.o b/build/Debug/GNU-Linux/library/logFunctions.o index 41b67dd8dc62c6c2867ae189a9009e11e6e0c77b..cfcc46c7fbfd4499b08043251f12349150c47396 100644 GIT binary patch delta 76 zcmbPWIl*$nJ{Csx$@^JkjMVK}7#Nr)dWbSGFfcHx*D`>34q|!v3l{KVaV=0sv}(4=Vrw delta 76 zcmbPWIl*$nJ{Cr`$@^JkjMVH|7#Nr)dWbSGFfcHx)iQv14q|!vA_ZKVaV=0sv{64QdLVQIC#RbY0~DNs(u{MYK`cfMn8bXzgb6zXgG_NE1EWD58v_IL#0zx{vS78! Xll?g*7?n3?a0)OpDs8UhahC%Cp!^PZ delta 96 zcmX>QdLVQIC#Rb=0~DNs(u{MYK`cgfn8bXzgb6zXgG_NE1EYQ&8v_IL#0zx{vS77J Xll?g*7?n0>a0)OpDsHaiahC%Cpd1cy diff --git a/build/Debug/GNU-Linux/uFTP.o b/build/Debug/GNU-Linux/uFTP.o index 4fe0bf19252a141617ec609a00c5697803348197..a0074ac95e549e41581dbce52a3165ba2deae446 100644 GIT binary patch delta 49 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 delta 59697 zcmb5X30zdw`#=8N3&S$Zun#jZECT`}pn!;iilT{L6cx8L(?rFsTu56t;v<<{K2|A2mdV7A z)B2T5R^^gaImzJ0ME3F*(>{5;u=B(0 z?+zweLI$}fafDfJKsl*((~;BeI_?c7+r<8I>~9kB^U#uco;t3O;RgI`ot(+*xPeSC zn*D9h=u_GGH-z&{;@)IgO~$_@-&4o&EF+zpj+@J@67es|Qs~G&4;`88s^hYlypA!A zW9J9h-{+WRjZ(+$W1M^0-*fD5F#DU&xU;-;+#HsA68r1P{w9-6URv%wv?Fz1I<7ZM z(VOYEkQ7xCsdCqG-?BU^R60eu3qTY(&joNnfIEapIFRYxAV$PpBtqUnDEC|s zksoTJ#gh`L&&u+`Xwp8QC)bY54oFHFFB#*%rX+C)z+qvMle{`nl)D1}N5TTNz$-Z@@=4&d=RKo-*u9z zh+3m1*8){)Xxr?AH_6m!gMFMl^mWqul4%+(>8eqw4Ng*jvRi1f zCuul26r?3fgH-AYC#iwl4$_i?K`M2%lQfEiX|?25kV;+SB#kEhwOSIYRjF&8q_Lz} zt0lQwmAcMJ8b?0VYRN*aN?q?HjVIq~wd4b>N`2Q!nn=_-ExD#usi9qSoRdhVP8*!; z9A_tO3Yn(UlCC?A$Neou03!S9hh$UD{Mg^Tawu3!mIkZT6;9HgetDU61NLYxL+zM8yYn-ILN&gTn2@O%HYn`M5DGt$++z^$z&Pm#rd>Eo73qw@u zdM9Zv`8GsLJ_u2%?>b2b5Vc-Qu7#-7AoVruQ+Xs)uMHmL9A_u(U@}dwC0+F@wZTa` zl&sfl$yB{co$MrimVB<)l688OI?G8qg8Z%5lCyf1I?qWulC%xglE-?LI^Rh;ii{4` zlEhGzy3k4b0DtL;MwAP8~MN%B5CAncLW1W+9s*|-)ddovFE57xQ1fi_9h^KWz=?RbH z4hx$0qE95yn5jOI;1iJrGzRfx)Hl>qN@>hE#JGxSsAG5}VjgiV!-EkUaXr&e!vuX% zfJ1mgHN!m-<4UHXg5l1HaRhBBVYoeFtmTG6hT{?AP~4Eua1>%s#CZ&dAXXyIV%Xm& z5{#3*P>{?7N;FU*HZaU1RwMRh_@Q?sO!h_$4F8T82g`=L|6qxKL5verLp{Sc5c?sn zWB4j!f5f#6U+|7J!sGxH)G)zkXb_0Fn&D%JHHa%1K7cp~aS6ja5o-|_GQ1734skxi zZy^pwoX7B5#36{Y7+&FRjD*R06eKgj8)y)U*ud~ @ei8D4-m95FCF6LAFMyMJQ@ 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%0DgrrfFq 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 Q_U}0|I+8gRjlAIh0H~&u%K!iX diff --git a/dist/Debug/GNU-Linux/uftpReleased b/dist/Debug/GNU-Linux/uftpReleased deleted file mode 100755 index 4cf6276dbcb5c8caa47f5df5e6d7b16c1063b4c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153776 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 diff --git a/ftpCommandElaborate.c b/ftpCommandElaborate.c index 4436137..48cd941 100644 --- a/ftpCommandElaborate.c +++ b/ftpCommandElaborate.c @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#define _LARGEFILE64_SOURCE #include #include @@ -798,7 +799,7 @@ int parseCommandSize(clientDataType *theClientData) { int returnCode; int isSafePath; - unsigned long long int theSize; + long long int theSize; char *theFileName; dynamicStringDataType theResponse; dynamicStringDataType getSizeFromFileName; @@ -963,16 +964,15 @@ int parseCommandCdup(clientDataType *theClientData) return 1; } -int writeRetrFile(char * theFilename, int thePasvSocketConnection, int startFrom, FILE *retrFP) +long long int writeRetrFile(char * theFilename, int thePasvSocketConnection, long long int startFrom, FILE *retrFP) { - long int readen = 0; - long int toReturn = 0, writtenSize = 0; - long int currentPosition = 0; + long long int readen = 0; + long long int toReturn = 0, writtenSize = 0; + long long int currentPosition = 0; long long int theFileSize; char buffer[FTP_COMMAND_ELABORATE_CHAR_BUFFER]; - - retrFP = fopen(theFilename, "rb"); + retrFP = fopen64(theFilename, "rb"); if (retrFP == NULL) { return -1; @@ -983,7 +983,7 @@ int writeRetrFile(char * theFilename, int thePasvSocketConnection, int startFrom if (startFrom > 0) { //printf("\nSeek startFrom: %d", startFrom); - currentPosition = (long int) lseek(fileno(retrFP), startFrom, SEEK_SET); + currentPosition = (long long int) lseek64(fileno(retrFP), startFrom, SEEK_SET); // printf("\nSeek result: %ld", currentPosition); if (currentPosition == -1) { @@ -993,7 +993,7 @@ int writeRetrFile(char * theFilename, int thePasvSocketConnection, int startFrom } } - while ((readen = (long int) fread(buffer, sizeof(char), FTP_COMMAND_ELABORATE_CHAR_BUFFER, retrFP)) > 0) + while ((readen = (long long int) fread(buffer, sizeof(char), FTP_COMMAND_ELABORATE_CHAR_BUFFER, retrFP)) > 0) { writtenSize = write(thePasvSocketConnection, buffer, readen); diff --git a/ftpCommandsElaborate.h b/ftpCommandsElaborate.h index cd97ca2..2fcee3b 100644 --- a/ftpCommandsElaborate.h +++ b/ftpCommandsElaborate.h @@ -72,7 +72,7 @@ int parseCommandOpts(clientDataType *theClientData); int parseCommandRnfr(clientDataType *theClientData); int parseCommandRnto(clientDataType *theClientData); -int writeRetrFile(char * theFilename, int thePasvSocketConnection, int startFrom, FILE *retrFP); +long long int writeRetrFile(char * theFilename, int thePasvSocketConnection, long long int startFrom, FILE *retrFP); char *getFtpCommandArg(char * theCommand, char *theCommandString, int skipArgs); int getFtpCommandArgWithOptions(char * theCommand, char *theCommandString, ftpCommandDataType *ftpCommand); int setPermissions(char * permissionsCommand, char * basePath, ownerShip_DataType ownerShip); diff --git a/ftpData.c b/ftpData.c index 34c6401..b95b70f 100644 --- a/ftpData.c +++ b/ftpData.c @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#define _LARGEFILE64_SOURCE #include #include @@ -217,13 +218,172 @@ void setRandomicPort(ftpDataType *data, int socketPosition) printf("data->clients[%d].workerData.connectionPort = %d", socketPosition, data->clients[socketPosition].workerData.connectionPort); } + + +int writeListDataInfoToSocket(char * thePath, int theSocket, int *filesNumber, int commandType) +{ + int i, x, returnCode; + int fileAndFoldersCount = 0; + char **fileList = NULL; + FILE_GetDirectoryInodeList(thePath, &fileList, &fileAndFoldersCount, 0); + *filesNumber = fileAndFoldersCount; + + returnCode = dprintf(theSocket, "total %d\r\n", fileAndFoldersCount); + if (returnCode <= 0) + { + return -1; + } + + for (i = 0; i < fileAndFoldersCount; i++) + { + ftpListDataType data; + data.owner = NULL; + data.groupOwner = NULL; + data.inodePermissionString = NULL; + data.fileNameWithPath = NULL; + data.finalStringPath = NULL; + data.linkPath = NULL; + + data.numberOfSubDirectories = 1; /* to Do*/ + data.isFile = 0; + data.isDirectory = 0; + + + printf("\nPROCESSING: %s", fileList[i]); + fflush(0); + + if (FILE_IsDirectory(fileList[i]) == 1) + { + printf("\nis directory"); + fflush(0); + data.isDirectory = 1; + data.isFile = 0; + data.isLink = 0; + data.fileSize = 4096; + } + else if (FILE_IsFile(fileList[i]) == 1) + { + printf("\nis file"); + fflush(0); + data.isDirectory = 0; + data.isFile = 1; + data.isLink = 0; + data.fileSize = FILE_GetFileSizeFromPath(fileList[i]); + } + if (data.isDirectory == 0 && data.isFile == 0) + { + printf("\nNot a directory, not a file, broken link"); + continue; + } + + printf("\nFILE SIZE : %lld", data.fileSize); + + data.owner = FILE_GetOwner(fileList[i]); + data.groupOwner = FILE_GetGroupOwner(fileList[i]); + data.fileNameWithPath = fileList[i]; + data.fileNameNoPath = FILE_GetFilenameFromPath(fileList[i]); + data.inodePermissionString = FILE_GetListPermissionsString(fileList[i]); + data.lastModifiedData = FILE_GetLastModifiedData(fileList[i]); + + if (strlen(data.fileNameNoPath) > 0) + { + data.finalStringPath = (char *) malloc (strlen(data.fileNameNoPath)+1); + strcpy(data.finalStringPath, data.fileNameNoPath); + } + + if (data.inodePermissionString != NULL && + strlen(data.inodePermissionString) > 0 && + data.inodePermissionString[0] == 'l') + { + int len = 0; + data.isLink = 1; + data.linkPath = (char *) malloc (CLIENT_COMMAND_STRING_SIZE*sizeof(char)); + if ((len = readlink (fileList[i], data.linkPath, CLIENT_COMMAND_STRING_SIZE)) > 0) + { + data.linkPath[len] = 0; + FILE_AppendToString(&data.finalStringPath, " -> "); + FILE_AppendToString(&data.finalStringPath, data.linkPath); + } + } + + memset(data.lastModifiedDataString, 0, LIST_DATA_TYPE_MODIFIED_DATA_STR_SIZE); + strftime(data.lastModifiedDataString, LIST_DATA_TYPE_MODIFIED_DATA_STR_SIZE, "%b %d %Y", localtime(&data.lastModifiedData)); + + + switch (commandType) + { + case COMMAND_TYPE_LIST: + { + returnCode = dprintf(theSocket, "%s %d %s %s %lld %s %s\r\n", + data.inodePermissionString == NULL? "Uknown" : data.inodePermissionString + ,data.numberOfSubDirectories + ,data.owner == NULL? "Uknown" : data.owner + ,data.groupOwner == NULL? "Uknown" : data.groupOwner + ,data.fileSize + ,data.lastModifiedDataString == NULL? "Uknown" : data.lastModifiedDataString + ,data.finalStringPath == NULL? "Uknown" : data.finalStringPath); + } + break; + + case COMMAND_TYPE_NLIST: + { + returnCode = dprintf(theSocket, "%s\r\n",data.fileNameNoPath); + } + break; + + + default: + { + printf("\nWarning switch default in function writeListDataInfoToSocket (%d)", commandType); + } + break; + + } + + + if (data.fileNameWithPath != NULL) + free(data.fileNameWithPath); + + if (data.linkPath != NULL) + free(data.linkPath); + + if (data.finalStringPath != NULL) + free(data.finalStringPath); + + if (data.owner != NULL) + free(data.owner); + + if (data.groupOwner != NULL) + free(data.groupOwner); + + if (data.inodePermissionString != NULL) + free(data.inodePermissionString); + + if (returnCode <= 0) + { + for (x = i+1; x < fileAndFoldersCount; x++) + free (fileList[x]); + free (fileList); + return -1; + } + + } + free (fileList); + + return 1; + } + + void getListDataInfo(char * thePath, DYNV_VectorGenericDataType *directoryInfo) { int i; int fileAndFoldersCount = 0; ftpListDataType data; FILE_GetDirectoryInodeList(thePath, &data.fileList, &fileAndFoldersCount, 0); - + + printf("\nNUMBER OF FILES: %d", fileAndFoldersCount); + fflush(0); + for (i = 0; i < fileAndFoldersCount; i++) { data.owner = NULL; @@ -237,8 +397,14 @@ void getListDataInfo(char * thePath, DYNV_VectorGenericDataType *directoryInfo) data.isFile = 0; data.isDirectory = 0; + + printf("\nPROCESSING: %s", data.fileList[i]); + fflush(0); + if (FILE_IsDirectory(data.fileList[i]) == 1) { + printf("\nis file"); + fflush(0); data.isDirectory = 1; data.isFile = 0; data.isLink = 0; @@ -246,6 +412,8 @@ void getListDataInfo(char * thePath, DYNV_VectorGenericDataType *directoryInfo) } else if (FILE_IsFile(data.fileList[i]) == 1) { + printf("\nis file"); + fflush(0); data.isDirectory = 0; data.isFile = 1; data.isLink = 0; @@ -253,9 +421,11 @@ void getListDataInfo(char * thePath, DYNV_VectorGenericDataType *directoryInfo) } if (data.isDirectory == 0 && data.isFile == 0) { - //printf("\nNot a directory, not a file, broken link"); + printf("\nNot a directory, not a file, broken link"); continue; } + + printf("\nFILE SIZE : %lld", data.fileSize); data.owner = FILE_GetOwner(data.fileList[i]); data.groupOwner = FILE_GetGroupOwner(data.fileList[i]); diff --git a/ftpData.h b/ftpData.h index 1fc4fd3..266ee10 100644 --- a/ftpData.h +++ b/ftpData.h @@ -25,7 +25,7 @@ #ifndef FTPDATA_H #define FTPDATA_H - +#define _LARGEFILE64_SOURCE #include #include "library/dynamicVectors.h" @@ -33,7 +33,10 @@ #define CLIENT_COMMAND_STRING_SIZE 2048 #define CLIENT_BUFFER_STRING_SIZE 2048 -#define LIST_DATA_TYPE_MODIFIED_DATA_STR_SIZE 80 +#define LIST_DATA_TYPE_MODIFIED_DATA_STR_SIZE 1024 + +#define COMMAND_TYPE_LIST 0 +#define COMMAND_TYPE_NLIST 1 #ifdef __cplusplus @@ -128,7 +131,7 @@ struct workerData char theCommandReceived[CLIENT_COMMAND_STRING_SIZE]; int commandReceived; - unsigned long int retrRestartAtByte; + long long int retrRestartAtByte; /* The PASV thread will wait the signal before start */ pthread_mutex_t conditionMutex; @@ -208,7 +211,7 @@ struct ftpListData int isLink; char *owner; char *groupOwner; - int fileSize; + long long int fileSize; char *inodePermissionString; char **fileList; time_t lastModifiedData; @@ -222,6 +225,7 @@ int getSafePath(dynamicStringDataType *safePath, char *theDirectoryName, loginDa void appendToDynamicStringDataType(dynamicStringDataType *dynamicString, char *theString, int stringLen); void setRandomicPort(ftpDataType *data, int socketPosition); void getListDataInfo(char * thePath, DYNV_VectorGenericDataType *directoryInfo); +int writeListDataInfoToSocket(char * thePath, int theSocket, int *filesNumber, int commandType); void deleteListDataInfoVector(void *TheElementToDelete); void resetWorkerData(workerDataType *pasvData, int isInitialization); void resetClientData(clientDataType *clientData, int isInitialization); diff --git a/ftpServer.c b/ftpServer.c index ee4ae22..db03ca2 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -22,6 +22,8 @@ * THE SOFTWARE. */ +#define _LARGEFILE64_SOURCE + #include #include #include @@ -171,7 +173,7 @@ void *connectionWorkerHandle(void * socketId) { char theResponse[FTP_COMMAND_ELABORATE_CHAR_BUFFER]; memset(theResponse, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER); - ftpData.clients[theSocketId].workerData.theStorFile = fopen(ftpData.clients[theSocketId].fileToStor.text, "wb"); + ftpData.clients[theSocketId].workerData.theStorFile = fopen64(ftpData.clients[theSocketId].fileToStor.text, "wb"); if (ftpData.clients[theSocketId].workerData.theStorFile == NULL) { @@ -238,122 +240,45 @@ void *connectionWorkerHandle(void * socketId) break; } else if (ftpData.clients[theSocketId].workerData.commandReceived == 1 && - (compareStringCaseInsensitive(ftpData.clients[theSocketId].workerData.theCommandReceived, "LIST", strlen("LIST")) == 1)) + ( (compareStringCaseInsensitive(ftpData.clients[theSocketId].workerData.theCommandReceived, "LIST", strlen("LIST")) == 1) + || (compareStringCaseInsensitive(ftpData.clients[theSocketId].workerData.theCommandReceived, "NLST", strlen("NLST")) == 1)) + ) { - int i; - char theResponse[FTP_COMMAND_ELABORATE_CHAR_BUFFER]; - char theBufferWrite[FTP_COMMAND_ELABORATE_CHAR_BUFFER_BIG]; - memset(theResponse, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER); - getListDataInfo(ftpData.clients[theSocketId].listPath.text, &ftpData.clients[theSocketId].workerData.directoryInfo); - - printf("\nPasv (%d) ftpData.clients[theSocketId].listPath.text = %s", theSocketId, ftpData.clients[theSocketId].listPath.text); - strcpy(theResponse, "150 Accepted data connection\r\n"); - returnCode = write(ftpData.clients[theSocketId].socketDescriptor, theResponse, strlen(theResponse)); + int theFiles = 0, theCommandType; + + + if (compareStringCaseInsensitive(ftpData.clients[theSocketId].workerData.theCommandReceived, "LIST", strlen("LIST")) == 1) + theCommandType = COMMAND_TYPE_LIST; + else if (compareStringCaseInsensitive(ftpData.clients[theSocketId].workerData.theCommandReceived, "NLST", strlen("NLST")) == 1) + theCommandType = COMMAND_TYPE_NLIST; + + returnCode = dprintf(ftpData.clients[theSocketId].socketDescriptor, "150 Accepted data connection\r\n"); + if (returnCode <= 0) + { + ftpData.clients[theSocketId].closeTheClient = 1; + pthread_exit(NULL); + } + + returnCode = writeListDataInfoToSocket(ftpData.clients[theSocketId].listPath.text, ftpData.clients[theSocketId].workerData.socketConnection, &theFiles, theCommandType); if (returnCode <= 0) { ftpData.clients[theSocketId].closeTheClient = 1; pthread_exit(NULL); } - memset(theBufferWrite, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER_BIG); - sprintf(theBufferWrite, "total %d\r\n", ftpData.clients[theSocketId].workerData.directoryInfo.Size); - returnCode = write(ftpData.clients[theSocketId].workerData.socketConnection, theBufferWrite, strlen(theBufferWrite)); - if (returnCode <= 0) - { - pthread_exit(NULL); - } - - //printf("%s", theBufferWrite); - for (i = 0; i < ftpData.clients[theSocketId].workerData.directoryInfo.Size; i++) - { - memset(theBufferWrite, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER_BIG); - sprintf(theBufferWrite, "%s %d %s %s %d %s %s\r\n", - ((((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->inodePermissionString) == NULL? "Uknown" : (((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->inodePermissionString)) - ,((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->numberOfSubDirectories - ,((((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->owner) == NULL? "Uknown" : (((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->owner)) - ,((((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->groupOwner) == NULL? "Uknown" : (((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->groupOwner)) - ,((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->fileSize - ,((((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->lastModifiedDataString) == NULL? "Uknown" : (((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->lastModifiedDataString)) - ,((((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->finalStringPath) == NULL? "Uknown" : (((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->finalStringPath))); - printf("\n%s", theBufferWrite); - returnCode = write(ftpData.clients[theSocketId].workerData.socketConnection, theBufferWrite, strlen(theBufferWrite)); - - if (returnCode <= 0) - { - pthread_exit(NULL); - } - } - - memset(theResponse, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER); - sprintf(theResponse, "226 %d matches total\r\n", ftpData.clients[theSocketId].workerData.directoryInfo.Size); - returnCode = write(ftpData.clients[theSocketId].socketDescriptor, theResponse, strlen(theResponse)); + returnCode = dprintf(ftpData.clients[theSocketId].socketDescriptor, "226 %d matches total\r\n", theFiles); if (returnCode <= 0) { ftpData.clients[theSocketId].closeTheClient = 1; pthread_exit(NULL); } - printf("\nPasv (%d) List end", theSocketId); break; } - else if (ftpData.clients[theSocketId].workerData.commandReceived == 1 && - compareStringCaseInsensitive(ftpData.clients[theSocketId].workerData.theCommandReceived, "NLST", strlen("NLST")) == 1) - { - int i; - char theBufferWrite[FTP_COMMAND_ELABORATE_CHAR_BUFFER_BIG]; - char theResponse[FTP_COMMAND_ELABORATE_CHAR_BUFFER]; - - getListDataInfo(ftpData.clients[theSocketId].nlistPath.text, &ftpData.clients[theSocketId].workerData.directoryInfo); - printf("\nPasv (%d) ftpData.clients[theSocketId].login.absolutePath.text = %s",theSocketId, ftpData.clients[theSocketId].login.absolutePath.text); - - memset(theResponse, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER); - strcpy(theResponse, "150 Accepted data connection\r\n"); - returnCode = write(ftpData.clients[theSocketId].socketDescriptor, theResponse, strlen(theResponse)); - if (returnCode <= 0) - { - ftpData.clients[theSocketId].closeTheClient = 1; - pthread_exit(NULL); - } - - memset(theBufferWrite, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER_BIG); - sprintf(theBufferWrite, "total %d\r\n", ftpData.clients[theSocketId].workerData.directoryInfo.Size); - returnCode = write(ftpData.clients[theSocketId].workerData.socketConnection, theBufferWrite, strlen(theBufferWrite)); - - if (returnCode <= 0) - { - pthread_exit(NULL); - } - //printf("%s", theBufferWrite); - for (i = 0; i < ftpData.clients[theSocketId].workerData.directoryInfo.Size; i++) - { - memset(theBufferWrite, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER_BIG); - sprintf(theBufferWrite, "%s\r\n" - ,((ftpListDataType *) ftpData.clients[theSocketId].workerData.directoryInfo.Data[i])->fileNameNoPath); - //printf("%s", theBufferWrite); - returnCode = write(ftpData.clients[theSocketId].workerData.socketConnection, theBufferWrite, strlen(theBufferWrite)); - if (returnCode <= 0) - { - pthread_exit(NULL); - } - } - - memset(theResponse, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER); - - sprintf(theResponse, "226 %d matches total\r\n", ftpData.clients[theSocketId].workerData.directoryInfo.Size); - returnCode = write(ftpData.clients[theSocketId].socketDescriptor, theResponse, strlen(theResponse)); - if (returnCode <= 0) - { - ftpData.clients[theSocketId].closeTheClient = 1; - pthread_exit(NULL); - } - - printf("\nPasv (%d) List end", theSocketId); - break; - } else if (ftpData.clients[theSocketId].workerData.commandReceived == 1 && compareStringCaseInsensitive(ftpData.clients[theSocketId].workerData.theCommandReceived, "RETR", strlen("RETR")) == 1) { - int writenSize = 0, writeReturn = 0; + long long int writenSize = 0, writeReturn = 0; char theResponse[FTP_COMMAND_ELABORATE_CHAR_BUFFER]; memset(theResponse, 0, FTP_COMMAND_ELABORATE_CHAR_BUFFER); strcpy(theResponse, "150 Accepted data connection\r\n"); diff --git a/library/configRead.c b/library/configRead.c index ec2b431..bf2461e 100644 --- a/library/configRead.c +++ b/library/configRead.c @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#define _LARGEFILE64_SOURCE #include #include diff --git a/library/connection.c b/library/connection.c index 42a5986..8640f19 100644 --- a/library/connection.c +++ b/library/connection.c @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#define _LARGEFILE64_SOURCE #include #include diff --git a/library/daemon.c b/library/daemon.c index b9267d5..d35d1d4 100644 --- a/library/daemon.c +++ b/library/daemon.c @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#define _LARGEFILE64_SOURCE #include #include diff --git a/library/dynamicVectors.c b/library/dynamicVectors.c index c2ae937..ad06000 100644 --- a/library/dynamicVectors.c +++ b/library/dynamicVectors.c @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#define _LARGEFILE64_SOURCE #include #include diff --git a/library/fileManagement.c b/library/fileManagement.c index 49ebf38..1e62a7e 100644 --- a/library/fileManagement.c +++ b/library/fileManagement.c @@ -23,6 +23,8 @@ */ +#define _LARGEFILE64_SOURCE + #include #include @@ -65,13 +67,13 @@ int FILE_IsDirectory(char *DirectoryPath) { struct stat sb; if (stat(DirectoryPath, &sb) == 0 && S_ISDIR(sb.st_mode)) - { + { return 1; - } + } else - { + { return 0; - } + } return 0; } @@ -91,27 +93,29 @@ long int FILE_GetAvailableSpace(const char* path) } /* Get the file size */ -int FILE_GetFileSize(FILE *TheFilePointer) +long long int FILE_GetFileSize(FILE *TheFilePointer) { - int Prev = 0, TheFileSize = 0; - Prev = ftell(TheFilePointer); - fseek(TheFilePointer, 0L, SEEK_END); - TheFileSize = ftell(TheFilePointer); - fseek(TheFilePointer, Prev, SEEK_SET); + long long int Prev = 0, TheFileSize = 0; + Prev = ftello64(TheFilePointer); + fseeko64(TheFilePointer, 0, SEEK_END); + TheFileSize = ftello64(TheFilePointer); + fseeko64(TheFilePointer, Prev, SEEK_SET); return TheFileSize; } -int FILE_GetFileSizeFromPath(char *TheFileName) +long long int FILE_GetFileSizeFromPath(char *TheFileName) { if (FILE_IsFile(TheFileName) == 1) { FILE *TheFilePointer; - TheFilePointer = fopen(TheFileName, "rb"); - int Prev = 0, TheFileSize = 0; - Prev = ftell(TheFilePointer); - fseek(TheFilePointer, 0L, SEEK_END); - TheFileSize = ftell(TheFilePointer); - fseek(TheFilePointer, Prev, SEEK_SET); + TheFilePointer = fopen64(TheFileName, "rb"); + long long int Prev = 0, TheFileSize = 0; + Prev = ftello64(TheFilePointer); + fseeko64(TheFilePointer, 0L, SEEK_END); + TheFileSize = ftello64(TheFilePointer); + printf("ftello64(TheFilePointer) == %lli", ftello64(TheFilePointer)); + fseeko64(TheFilePointer, Prev, SEEK_SET); + fclose(TheFilePointer); return TheFileSize; } @@ -125,9 +129,9 @@ int FILE_GetFileSizeFromPath(char *TheFileName) int FILE_IsFile(const char *TheFileName) { FILE *TheFile; - TheFile = fopen(TheFileName, "rb"); + TheFile = fopen64(TheFileName, "rb"); - if (TheFile) + if (TheFile != NULL) { fclose(TheFile); return 1; @@ -188,7 +192,7 @@ void FILE_GetDirectoryInodeList(char * DirectoryInodeName, char *** InodeList, i int FILE_GetStringFromFile(char * filename, char **file_content) { - int file_size = 0; + long long int file_size = 0; int c, count; if (FILE_IsFile(filename) == 0) @@ -219,134 +223,134 @@ int FILE_GetStringFromFile(char * filename, char **file_content) } void FILE_ReadStringParameters(char * filename, DYNV_VectorGenericDataType *ParametersVector) - { - FILE *File; - char Line[FILE_MAX_LINE_LENGHT]; - int i; - int c; - char FirstChar = 0; - char SeparatorChar = 0; - char ParameterChar = 0; - int BufferNameCursor = 0; - int BufferValueCursor = 0; - FILE_StringParameter_DataType TheParameter; +{ + FILE *File; + char Line[FILE_MAX_LINE_LENGHT]; + int i; + int c; + char FirstChar = 0; + char SeparatorChar = 0; + char ParameterChar = 0; + int BufferNameCursor = 0; + int BufferValueCursor = 0; + FILE_StringParameter_DataType TheParameter; - memset (TheParameter.Name, 0, FILE_MAX_PAR_VAR_SIZE); - memset (TheParameter.Value, 0, FILE_MAX_PAR_VAR_SIZE); + memset (TheParameter.Name, 0, FILE_MAX_PAR_VAR_SIZE); + memset (TheParameter.Value, 0, FILE_MAX_PAR_VAR_SIZE); - File = fopen(filename, "r"); - if(File == NULL) - { - printf("error while opening file %s", filename); - } - else - { - printf("Parameter initializing from file %s", filename); + File = fopen(filename, "r"); + if(File == NULL) + { + printf("error while opening file %s", filename); + } + else + { + printf("Parameter initializing from file %s", filename); - while(fgets(Line, FILE_MAX_LINE_LENGHT, File) != NULL) - { - //printf("LINE: %s", Line); - i = 0; + while(fgets(Line, FILE_MAX_LINE_LENGHT, File) != NULL) + { + //printf("LINE: %s", Line); + i = 0; - while (iPushBack(ParametersVector, &TheParameter, sizeof(FILE_StringParameter_DataType)); - BufferNameCursor = 0; - BufferValueCursor = 0; - memset (TheParameter.Name, 0, FILE_MAX_PAR_VAR_SIZE); - memset (TheParameter.Value, 0, FILE_MAX_PAR_VAR_SIZE); - } + ParametersVector->PushBack(ParametersVector, &TheParameter, sizeof(FILE_StringParameter_DataType)); + BufferNameCursor = 0; + BufferValueCursor = 0; + memset (TheParameter.Name, 0, FILE_MAX_PAR_VAR_SIZE); + memset (TheParameter.Value, 0, FILE_MAX_PAR_VAR_SIZE); + } - FirstChar = 0; - SeparatorChar = 0; - ParameterChar = 0; + FirstChar = 0; + SeparatorChar = 0; + ParameterChar = 0; - if ((char) c == '\0') - { - break; - } - } - else - { - //printf("Checking chars"); + if ((char) c == '\0') + { + break; + } + } + else + { + //printf("Checking chars"); - //first char, parameter name - if (FirstChar == 0) - { - FirstChar = (char) c; - //printf("FirstChar = %c", FirstChar); - } - else if (FirstChar != 0 && SeparatorChar == 0 && (char) c == '=') - { - SeparatorChar = (char) c; - //printf("SeparatorChar = %c", SeparatorChar); - } - else if (FirstChar != 0 && SeparatorChar != 0 && ParameterChar == 0) - { - ParameterChar = (char) c; - //printf("ParameterChar = %c", ParameterChar); - } + //first char, parameter name + if (FirstChar == 0) + { + FirstChar = (char) c; + //printf("FirstChar = %c", FirstChar); + } + else if (FirstChar != 0 && SeparatorChar == 0 && (char) c == '=') + { + SeparatorChar = (char) c; + //printf("SeparatorChar = %c", SeparatorChar); + } + else if (FirstChar != 0 && SeparatorChar != 0 && ParameterChar == 0) + { + ParameterChar = (char) c; + //printf("ParameterChar = %c", ParameterChar); + } - //Get the parameter name - if ( FirstChar != '#' && FirstChar != 0 && SeparatorChar == 0 && BufferNameCursor < FILE_MAX_PAR_VAR_SIZE ) - if(BufferNameCursor < FILE_MAX_PAR_VAR_SIZE) - TheParameter.Name[BufferNameCursor++] = (char) c; + //Get the parameter name + if ( FirstChar != '#' && FirstChar != 0 && SeparatorChar == 0 && BufferNameCursor < FILE_MAX_PAR_VAR_SIZE ) + if(BufferNameCursor < FILE_MAX_PAR_VAR_SIZE) + TheParameter.Name[BufferNameCursor++] = (char) c; - //Get the parameter value - if ( FirstChar != '#' && FirstChar != 0 && SeparatorChar != 0 && ParameterChar != 0 && BufferValueCursor < FILE_MAX_PAR_VAR_SIZE ) - if(BufferValueCursor < FILE_MAX_PAR_VAR_SIZE) - TheParameter.Value[BufferValueCursor++] = (char) c; - } - } - } + //Get the parameter value + if ( FirstChar != '#' && FirstChar != 0 && SeparatorChar != 0 && ParameterChar != 0 && BufferValueCursor < FILE_MAX_PAR_VAR_SIZE ) + if(BufferValueCursor < FILE_MAX_PAR_VAR_SIZE) + TheParameter.Value[BufferValueCursor++] = (char) c; + } + } + } - fclose(File); - } + fclose(File); + } - printf("ParametersVector->Size %d", ParametersVector->Size); + printf("ParametersVector->Size %d", ParametersVector->Size); - for (i = 0; i < ParametersVector->Size; i++) - { - printf("ParametersVector->Data[%d])->Name = %s",i, ((FILE_StringParameter_DataType *)ParametersVector->Data[i])->Name); - } + for (i = 0; i < ParametersVector->Size; i++) + { + printf("ParametersVector->Data[%d])->Name = %s",i, ((FILE_StringParameter_DataType *)ParametersVector->Data[i])->Name); + } - qsort(ParametersVector->Data, ParametersVector->Size, sizeof(void *), FILE_CompareStringParameter); + qsort(ParametersVector->Data, ParametersVector->Size, sizeof(void *), FILE_CompareStringParameter); - printf("Sorted"); - for (i = 0; i < ParametersVector->Size; i++) - { - printf("ParametersVector->Data[%d])->Name = %s",i, ((FILE_StringParameter_DataType *)ParametersVector->Data[i])->Name); - } + printf("Sorted"); + for (i = 0; i < ParametersVector->Size; i++) + { + printf("ParametersVector->Data[%d])->Name = %s",i, ((FILE_StringParameter_DataType *)ParametersVector->Data[i])->Name); + } - } +} int FILE_StringParametersLinearySearch(DYNV_VectorGenericDataType *TheVectorGeneric, void * name) - { - int i; - for(i=0; iSize; i++) - { - if(strcmp(((FILE_StringParameter_DataType *)TheVectorGeneric->Data[i])->Name, (char *) name) == 0) - { - return i; - } - } - return -1; - } +{ + int i; + for(i=0; iSize; i++) + { + if(strcmp(((FILE_StringParameter_DataType *)TheVectorGeneric->Data[i])->Name, (char *) name) == 0) + { + return i; + } + } + return -1; +} int FILE_StringParametersBinarySearch(DYNV_VectorGenericDataType *TheVectorGeneric, void * Needle) { @@ -490,47 +494,40 @@ time_t FILE_GetLastModifiedData(char *path) void FILE_AppendToString(char ** sourceString, char *theString) { - //printf("\n sourcestring = %s", *sourceString); - //printf("\n theString = %s", theString); - - int theNewSize = strlen(*sourceString) + strlen(theString); - *sourceString = realloc(*sourceString, theNewSize + 10); - strcat(*sourceString, theString); - (*sourceString)[theNewSize] = '\0'; - - // printf("\n sourcestring = %s", *sourceString); - // printf("\n theString = %s", theString); - // printf("\n theNewSize = %d", theNewSize); + int theNewSize = strlen(*sourceString) + strlen(theString); + *sourceString = realloc(*sourceString, theNewSize + 10); + strcat(*sourceString, theString); + (*sourceString)[theNewSize] = '\0'; } void FILE_DirectoryToParent(char ** sourceString) { - //printf("\n"); - int i = 0, theLastSlash = -1, strLen = 0; - - strLen = strlen(*sourceString); - //printf("\nstrLen = %d", strLen); - - for (i = 0; i < strLen; i++) - { - //printf("%c", (*sourceString)[i]); - if ( (*sourceString)[i] == '/') - { - theLastSlash = i; - //printf("\n theLastSlash = %d", theLastSlash); - } - } + //printf("\n"); + int i = 0, theLastSlash = -1, strLen = 0; - if (theLastSlash > -1) - { - int theNewSize = theLastSlash; - if (theLastSlash == 0) - { - theNewSize = 1; - } - *sourceString = realloc(*sourceString, theNewSize+1); - (*sourceString)[theNewSize] = '\0'; - } + strLen = strlen(*sourceString); + //printf("\nstrLen = %d", strLen); + + for (i = 0; i < strLen; i++) + { + //printf("%c", (*sourceString)[i]); + if ( (*sourceString)[i] == '/') + { + theLastSlash = i; + //printf("\n theLastSlash = %d", theLastSlash); + } + } + + if (theLastSlash > -1) + { + int theNewSize = theLastSlash; + if (theLastSlash == 0) + { + theNewSize = 1; + } + *sourceString = realloc(*sourceString, theNewSize+1); + (*sourceString)[theNewSize] = '\0'; + } } diff --git a/library/fileManagement.h b/library/fileManagement.h index 0277ae6..a1c4915 100644 --- a/library/fileManagement.h +++ b/library/fileManagement.h @@ -23,7 +23,7 @@ */ #ifndef GEN_FILE_MANAGEMENT_TYPES - + #define _LARGEFILE64_SOURCE #include #include #include @@ -48,9 +48,9 @@ } FILE_fileInfo_DataType; - int FILE_GetFileSize(FILE *theFilePointer); + long long int FILE_GetFileSize(FILE *theFilePointer); long int FILE_GetAvailableSpace(const char* ThePath); - int FILE_GetFileSizeFromPath(char *TheFileName); + long long int FILE_GetFileSizeFromPath(char *TheFileName); int FILE_IsFile(const char *theFileName); int FILE_IsDirectory (char *directory_path); void FILE_GetDirectoryInodeList(char * DirectoryInodeName, char *** InodeList, int * filesandfolders, int recursive); diff --git a/library/logFunctions.c b/library/logFunctions.c index dd19bf6..0a7ffdd 100644 --- a/library/logFunctions.c +++ b/library/logFunctions.c @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#define _LARGEFILE64_SOURCE #include #include "logFunctions.h" diff --git a/library/signals.c b/library/signals.c index 65a4c47..0dc7efe 100644 --- a/library/signals.c +++ b/library/signals.c @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#define _LARGEFILE64_SOURCE #include #include diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index 752dd27..3fb12a8 100644 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -7,10 +7,7 @@ - file:/home/ugo/NetBeansProjects/uFTP/ftpData.c - file:/home/ugo/NetBeansProjects/uFTP/ftpCommandElaborate.c file:/home/ugo/NetBeansProjects/uFTP/ftpServer.c - file:/home/ugo/NetBeansProjects/uFTP/uFTP.c file:/home/ugo/NetBeansProjects/uFTP/library/configRead.c diff --git a/uFTP.c b/uFTP.c index 8895c92..b7d62d3 100644 --- a/uFTP.c +++ b/uFTP.c @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ +#define _LARGEFILE64_SOURCE #include #include @@ -30,5 +31,4 @@ int main(int argc, char** argv) { runFtpServer(); return (EXIT_SUCCESS); -} - +} \ No newline at end of file