summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYusuke Sato <yusuke-sato@apn.alpine.co.jp>2016-02-29 14:42:13 +0100
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2016-09-23 15:37:24 +0200
commit66e3ce5057467d3c1e2fcad3f590676c2721e957 (patch)
tree04889d0b09a98042cc32f3b747992ce3094a8228
parent6d61faad56471f5b86ac167e403d30ae2514c1a5 (diff)
downloadDLT-daemon-66e3ce5057467d3c1e2fcad3f590676c2721e957.tar.gz
Fix: File name is broken when file is transferred on 64 bit OS.
When file transfer feature of dlt-system is used on the 64 bit OS, file name is overwritten at the unique name creation phase. File serial number should be maximum 10-digit decimal number. Signed-off-by: Yusuke Sato <yusuke-sato@apn.alpine.co.jp> Change-Id: I18fac363a103b6806ed9eb003ebbb305af7e7f58
-rw-r--r--src/lib/dlt_filetransfer.c36
-rw-r--r--src/system/dlt-system-filetransfer.c4
2 files changed, 20 insertions, 20 deletions
diff --git a/src/lib/dlt_filetransfer.c b/src/lib/dlt_filetransfer.c
index 13de07c..1038e0a 100644
--- a/src/lib/dlt_filetransfer.c
+++ b/src/lib/dlt_filetransfer.c
@@ -78,7 +78,7 @@ unsigned char buffer[BUFFER_SIZE];
* @param file Absolute file path
* @return Returns the size of the file (if it is a regular file or a symbolic link) in bytes.
*/
-unsigned long getFilesize(const char* file, int *ok){
+uint32_t getFilesize(const char* file, int *ok){
struct stat st;
if ( -1 == stat(file, &st))
@@ -88,7 +88,7 @@ unsigned long getFilesize(const char* file, int *ok){
return 0;
}
*ok = 1;
- return (unsigned long)st.st_size;
+ return (uint32_t)st.st_size;
}
/** A simple Hash function for C-strings
@@ -96,7 +96,7 @@ unsigned long getFilesize(const char* file, int *ok){
* @param hash start and result value for hash computation
*
*/
-void stringHash(const char* str, unsigned long *hash )
+void stringHash(const char* str, uint32_t *hash )
{
if (!str || !hash)
return;
@@ -121,9 +121,9 @@ void stringHash(const char* str, unsigned long *hash )
* @param value *ok == 0 -> error; *ok == 1 -> ok
* @return Returns a unique number associated with each filename
*/
-unsigned long getFileSerialNumber(const char* file, int *ok){
+uint32_t getFileSerialNumber(const char* file, int *ok){
struct stat st;
- unsigned long ret;
+ uint32_t ret;
if ( -1 == stat(file, &st))
{
*ok = 0;
@@ -224,10 +224,10 @@ void dlt_user_log_file_errorMessage(DltContext *fileContext, const char *filenam
if(errno != ENOENT)
{
int ok = 0;
- unsigned long fserial = getFileSerialNumber(filename,&ok);
+ uint32_t fserial = getFileSerialNumber(filename,&ok);
if (!ok)
DLT_LOG(*fileContext,DLT_LOG_ERROR,DLT_STRING("dlt_user_log_file_errorMessage, error in getFileSerialNumber for: "),DLT_STRING(filename));
- unsigned long fsize = getFilesize(filename,&ok);
+ uint32_t fsize = getFilesize(filename,&ok);
if (!ok)
DLT_LOG(*fileContext,DLT_LOG_ERROR,DLT_STRING("dlt_user_log_file_errorMessage, error in getFilesize for: "),DLT_STRING(filename));
char *fcreationdate = getFileCreationDate2(filename,&ok);
@@ -273,11 +273,11 @@ int dlt_user_log_file_infoAbout(DltContext *fileContext, const char *filename){
{
int ok;
- unsigned long fsize = getFilesize(filename,&ok);
+ uint32_t fsize = getFilesize(filename,&ok);
if (!ok)
DLT_LOG(*fileContext,DLT_LOG_ERROR,DLT_STRING("dlt_user_log_file_infoAbout, Error getting size of file:"),DLT_STRING(filename));
- unsigned long fserialnumber = getFileSerialNumber(filename,&ok);
+ uint32_t fserialnumber = getFileSerialNumber(filename,&ok);
if (!ok)
DLT_LOG(*fileContext,DLT_LOG_ERROR,DLT_STRING("dlt_user_log_file_infoAbout, Error getting serial number of file:"),DLT_STRING(filename));
@@ -351,7 +351,7 @@ int dlt_user_log_file_complete(DltContext *fileContext, const char *filename, in
*/
int dlt_user_log_file_packagesCount(DltContext *fileContext, const char *filename){
int packages;
- long filesize;
+ uint32_t filesize;
if(isFile(filename))
{
@@ -401,11 +401,11 @@ int dlt_user_log_file_header_alias(DltContext *fileContext,const char *filename,
{
int ok;
- unsigned long fserialnumber = getFileSerialNumber(filename,&ok);
+ uint32_t fserialnumber = getFileSerialNumber(filename,&ok);
if (!ok)
DLT_LOG(*fileContext,DLT_LOG_ERROR,DLT_STRING("dlt_user_log_file_header_alias, Error getting serial number of file:"),DLT_STRING(filename));
- unsigned long fsize = getFilesize(filename,&ok);
+ uint32_t fsize = getFilesize(filename,&ok);
if (!ok)
DLT_LOG(*fileContext,DLT_LOG_ERROR,DLT_STRING("dlt_user_log_file_header_alias, Error getting size of file:"),DLT_STRING(filename));
@@ -450,11 +450,11 @@ int dlt_user_log_file_header(DltContext *fileContext,const char *filename){
{
int ok;
- unsigned long fserialnumber = getFileSerialNumber(filename,&ok);
+ uint32_t fserialnumber = getFileSerialNumber(filename,&ok);
if (!ok)
DLT_LOG(*fileContext,DLT_LOG_ERROR,DLT_STRING("dlt_user_log_file_header, Error getting serial number of file:"),DLT_STRING(filename));
- unsigned long fsize = getFilesize(filename,&ok);
+ uint32_t fsize = getFilesize(filename,&ok);
if (!ok)
DLT_LOG(*fileContext,DLT_LOG_ERROR,DLT_STRING("dlt_user_log_file_header, Error getting size of file:"),DLT_STRING(filename));
@@ -496,7 +496,7 @@ int dlt_user_log_file_header(DltContext *fileContext,const char *filename){
int dlt_user_log_file_data(DltContext *fileContext,const char *filename, int packageToTransfer, int timeout){
FILE *file;
int pkgNumber;
- long readBytes;
+ uint32_t readBytes;
if(isFile(filename))
{
@@ -547,7 +547,7 @@ int dlt_user_log_file_data(DltContext *fileContext,const char *filename, int pac
readBytes = fread(buffer, sizeof(char), BUFFER_SIZE, file);
int ok;
- unsigned long fserial = getFileSerialNumber(filename,&ok);
+ uint32_t fserial = getFileSerialNumber(filename,&ok);
if (1 != ok)
{
@@ -578,7 +578,7 @@ int dlt_user_log_file_data(DltContext *fileContext,const char *filename, int pac
readBytes = fread(buffer, sizeof(char), BUFFER_SIZE, file);
int ok;
- unsigned long fserial = getFileSerialNumber(filename,&ok);
+ uint32_t fserial = getFileSerialNumber(filename,&ok);
if (1 != ok)
{
@@ -624,7 +624,7 @@ int dlt_user_log_file_end(DltContext *fileContext,const char *filename,int delet
{
int ok;
- unsigned long fserial = getFileSerialNumber(filename,&ok);
+ uint32_t fserial = getFileSerialNumber(filename,&ok);
if (1 != ok)
{
diff --git a/src/system/dlt-system-filetransfer.c b/src/system/dlt-system-filetransfer.c
index 7e141f5..b02d0f4 100644
--- a/src/system/dlt-system-filetransfer.c
+++ b/src/system/dlt-system-filetransfer.c
@@ -80,7 +80,7 @@
extern DltSystemThreads threads;
// From dlt_filetransfer
-extern unsigned long getFileSerialNumber(const char* file, int *ok);
+extern uint32_t getFileSerialNumber(const char* file, int *ok);
DLT_IMPORT_CONTEXT(dltsystem)
DLT_DECLARE_CONTEXT(filetransferContext)
@@ -112,7 +112,7 @@ char *unique_name(char *src)
DLT_STRING("dlt-system-filetransfer, creating unique temporary file name."));
time_t t = time(NULL);
int ok;
- unsigned long l = getFileSerialNumber(src, &ok) ^ t;
+ uint32_t l = getFileSerialNumber(src, &ok) ^ t;
if (!ok){
return (char*) NULL;
}