summaryrefslogtreecommitdiff
path: root/src/shared/dlt_offline_trace.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/dlt_offline_trace.c')
-rw-r--r--src/shared/dlt_offline_trace.c266
1 files changed, 133 insertions, 133 deletions
diff --git a/src/shared/dlt_offline_trace.c b/src/shared/dlt_offline_trace.c
index 9925a7a..c4d3f6b 100644
--- a/src/shared/dlt_offline_trace.c
+++ b/src/shared/dlt_offline_trace.c
@@ -65,43 +65,43 @@
#include <dlt_offline_trace.h>
-int dlt_offline_trace_create_new_file(DltOfflineTrace *trace) {
+DltReturnValue dlt_offline_trace_create_new_file(DltOfflineTrace *trace) {
time_t t;
struct tm *tmp;
char outstr[200];
- /* set filename */
+ /* set filename */
t = time(NULL);
tmp = localtime(&t);
if (NULL == tmp) {
printf("dlt_offline_trace_create_new_file: pointer to tmp is NULL!");
- return -1;
+ return DLT_RETURN_ERROR;
}
if (strftime(outstr, sizeof(outstr),"%Y%m%d_%H%M%S", tmp) == 0) {
}
- snprintf(trace->filename,NAME_MAX + 1,"%s/dlt_offlinetrace_%s.dlt",trace->directory,outstr);
+ snprintf(trace->filename,NAME_MAX + 1,"%s/dlt_offlinetrace_%s.dlt",trace->directory,outstr);
/* open DLT output file */
- trace->ohandle = open(trace->filename,O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); /* mode: wb */
- if (trace->ohandle == -1)
- {
- /* trace file cannot be opened */
- printf("Offline trace file %s cannot be created\n",trace->filename);
- return -1;
- } /* if */
-
- return 0; /* OK */
+ trace->ohandle = open(trace->filename,O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); /* mode: wb */
+ if (trace->ohandle == -1)
+ {
+ /* trace file cannot be opened */
+ printf("Offline trace file %s cannot be created\n",trace->filename);
+ return DLT_RETURN_ERROR;
+ } /* if */
+
+ return DLT_RETURN_OK; /* OK */
}
unsigned long dlt_offline_trace_get_total_size(DltOfflineTrace *trace) {
- struct dirent *dp;
- char filename[256];
- unsigned long size = 0;
- struct stat status;
-
- /* go through all dlt files in directory */
- DIR *dir = opendir(trace->directory);
- while ((dp=readdir(dir)) != NULL) {
+ struct dirent *dp;
+ char filename[256];
+ unsigned long size = 0;
+ struct stat status;
+
+ /* go through all dlt files in directory */
+ DIR *dir = opendir(trace->directory);
+ while ((dp=readdir(dir)) != NULL) {
if(strstr(dp->d_name,".dlt"))
{
int res = snprintf(filename, sizeof(filename), "%s/%s",trace->directory,dp->d_name);
@@ -110,12 +110,12 @@ unsigned long dlt_offline_trace_get_total_size(DltOfflineTrace *trace) {
// if an output error is encountered, a negative value is returned.
if( (unsigned int)res<sizeof(filename) && res>0 )
{
- if(0 == stat(filename,&status))
- {
- size += status.st_size;
- }
- else
- printf("Offline trace file %s cannot be stat-ed",filename);
+ if(0 == stat(filename,&status))
+ {
+ size += status.st_size;
+ }
+ else
+ printf("Offline trace file %s cannot be stat-ed",filename);
}
//else
//{
@@ -124,142 +124,142 @@ unsigned long dlt_offline_trace_get_total_size(DltOfflineTrace *trace) {
}
}
- closedir(dir);
+ closedir(dir);
- /* return size */
- return size;
+ /* return size */
+ return size;
}
int dlt_offline_trace_delete_oldest_file(DltOfflineTrace *trace) {
- struct dirent *dp;
- char filename[PATH_MAX+1];
- char filename_oldest[PATH_MAX+1];
- unsigned long size_oldest = 0;
- struct stat status;
- time_t time_oldest = 0;
-
- filename[0] = 0;
- filename_oldest[0] = 0;
-
- /* go through all dlt files in directory */
- DIR *dir = opendir(trace->directory);
- while ((dp=readdir(dir)) != NULL) {
- if(strstr(dp->d_name,".dlt")) {
- int res = snprintf(filename, sizeof(filename), "%s/%s",trace->directory,dp->d_name);
- // if the total length of the string is greater than the buffer, silently forget it.
- // snprintf: a return value of size or more means that the output was truncated
- // if an output error is encountered, a negative value is returned.
- if( (unsigned int)res<sizeof(filename) && res>0 )
- {
- if(0 == stat(filename,&status))
- {
- if(time_oldest == 0 || status.st_mtime < time_oldest) {
- time_oldest = status.st_mtime;
- size_oldest = status.st_size;
- strncpy(filename_oldest,filename,PATH_MAX);
- filename_oldest[PATH_MAX]=0;
- }
- }
- else
- printf("Old offline trace file %s cannot be stat-ed",filename);
- }
- }
- }
- closedir(dir);
-
- /* delete file */
- if(filename_oldest[0]) {
- if(remove(filename_oldest)) {
- printf("Remove file %s failed!\n",filename_oldest);
- return -1; /* ERROR */
- }
- }
- else {
- printf("No file to be removed!\n");
- return -1; /* ERROR */
- }
-
- /* return size of deleted file*/
- return size_oldest;
+ struct dirent *dp;
+ char filename[PATH_MAX+1];
+ char filename_oldest[PATH_MAX+1];
+ unsigned long size_oldest = 0;
+ struct stat status;
+ time_t time_oldest = 0;
+
+ filename[0] = 0;
+ filename_oldest[0] = 0;
+
+ /* go through all dlt files in directory */
+ DIR *dir = opendir(trace->directory);
+ while ((dp=readdir(dir)) != NULL) {
+ if(strstr(dp->d_name,".dlt")) {
+ int res = snprintf(filename, sizeof(filename), "%s/%s",trace->directory,dp->d_name);
+ // if the total length of the string is greater than the buffer, silently forget it.
+ // snprintf: a return value of size or more means that the output was truncated
+ // if an output error is encountered, a negative value is returned.
+ if( (unsigned int)res<sizeof(filename) && res>0 )
+ {
+ if(0 == stat(filename,&status))
+ {
+ if(time_oldest == 0 || status.st_mtime < time_oldest) {
+ time_oldest = status.st_mtime;
+ size_oldest = status.st_size;
+ strncpy(filename_oldest,filename,PATH_MAX);
+ filename_oldest[PATH_MAX]=0;
+ }
+ }
+ else
+ printf("Old offline trace file %s cannot be stat-ed",filename);
+ }
+ }
+ }
+ closedir(dir);
+
+ /* delete file */
+ if(filename_oldest[0]) {
+ if(remove(filename_oldest)) {
+ printf("Remove file %s failed!\n",filename_oldest);
+ return -1; /* ERROR */
+ }
+ }
+ else {
+ printf("No file to be removed!\n");
+ return -1; /* ERROR */
+ }
+
+ /* return size of deleted file*/
+ return size_oldest;
}
-int dlt_offline_trace_check_size(DltOfflineTrace *trace) {
+DltReturnValue dlt_offline_trace_check_size(DltOfflineTrace *trace) {
- /* check size of complete offline trace */
- while((int)dlt_offline_trace_get_total_size(trace) > (trace->maxSize-trace->fileSize))
- {
- /* remove oldest files as long as new file will not fit in completely into complete offline trace */
- if(dlt_offline_trace_delete_oldest_file(trace)<0) {
- return -1;
- }
- }
+ /* check size of complete offline trace */
+ while((int)dlt_offline_trace_get_total_size(trace) > (trace->maxSize-trace->fileSize))
+ {
+ /* remove oldest files as long as new file will not fit in completely into complete offline trace */
+ if(dlt_offline_trace_delete_oldest_file(trace) < 0) {
+ return DLT_RETURN_ERROR;
+ }
+ }
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}
-int dlt_offline_trace_init(DltOfflineTrace *trace,const char *directory,int fileSize,int maxSize) {
+DltReturnValue dlt_offline_trace_init(DltOfflineTrace *trace,const char *directory,int fileSize,int maxSize) {
- /* init parameters */
+ /* init parameters */
strncpy(trace->directory,directory,NAME_MAX);
trace->directory[NAME_MAX]=0;
- trace->fileSize = fileSize;
- trace->maxSize = maxSize;
+ trace->fileSize = fileSize;
+ trace->maxSize = maxSize;
- /* check complete offlien trace size, remove old logs if needed */
- dlt_offline_trace_check_size(trace);
+ /* check complete offlien trace size, remove old logs if needed */
+ dlt_offline_trace_check_size(trace);
- return dlt_offline_trace_create_new_file(trace);
+ return dlt_offline_trace_create_new_file(trace);
}
-int dlt_offline_trace_write(DltOfflineTrace *trace,unsigned char *data1,int size1,unsigned char *data2,int size2,unsigned char *data3,int size3) {
+DltReturnValue dlt_offline_trace_write(DltOfflineTrace *trace,unsigned char *data1,int size1,unsigned char *data2,int size2,unsigned char *data3,int size3) {
- if(trace->ohandle <= 0)
- return -1;
+ if(trace->ohandle <= 0)
+ return DLT_RETURN_ERROR;
- /* check file size here */
- if((lseek(trace->ohandle,0,SEEK_CUR)+size1+size2+size3)>=trace->fileSize)
- {
- /* close old file */
- close(trace->ohandle);
+ /* check file size here */
+ if((lseek(trace->ohandle,0,SEEK_CUR)+size1+size2+size3)>=trace->fileSize)
+ {
+ /* close old file */
+ close(trace->ohandle);
trace->ohandle = -1;
- /* check complete offline trace size, remove old logs if needed */
- dlt_offline_trace_check_size(trace);
+ /* check complete offline trace size, remove old logs if needed */
+ dlt_offline_trace_check_size(trace);
- /* create new file */
- dlt_offline_trace_create_new_file(trace);
- }
+ /* create new file */
+ dlt_offline_trace_create_new_file(trace);
+ }
- /* write data into log file */
+ /* write data into log file */
if(data1 && (trace->ohandle >= 0)) {
- if(write(trace->ohandle,data1,size1)!=size1) {
- printf("Offline trace write failed!\n");
- return -1;
- }
- }
+ if(write(trace->ohandle,data1,size1)!=size1) {
+ printf("Offline trace write failed!\n");
+ return DLT_RETURN_ERROR;
+ }
+ }
if(data2 && (trace->ohandle >= 0)) {
- if(write(trace->ohandle,data2,size2)!=size2) {
- printf("Offline trace write failed!\n");
- return -1;
- }
- }
+ if(write(trace->ohandle,data2,size2)!=size2) {
+ printf("Offline trace write failed!\n");
+ return DLT_RETURN_ERROR;
+ }
+ }
if(data3 && (trace->ohandle >= 0)) {
- if(write(trace->ohandle,data3,size3)!=size3) {
- printf("Offline trace write failed!\n");
- return -1;
- }
- }
+ if(write(trace->ohandle,data3,size3)!=size3) {
+ printf("Offline trace write failed!\n");
+ return DLT_RETURN_ERROR;
+ }
+ }
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}
-int dlt_offline_trace_free(DltOfflineTrace *trace) {
+DltReturnValue dlt_offline_trace_free(DltOfflineTrace *trace) {
- if(trace->ohandle <= 0)
- return -1;
+ if(trace->ohandle <= 0)
+ return DLT_RETURN_ERROR;
- /* close last used log file */
- close(trace->ohandle);
+ /* close last used log file */
+ close(trace->ohandle);
- return 0; /* OK */
+ return DLT_RETURN_OK; /* OK */
}