summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2014-04-02 14:46:59 +0200
committerAlexander Wenzel <Alexander.AW.Wenzel@bmw.de>2014-04-02 15:03:46 +0200
commit8b48e73f79b4463393916e4c6696917e3dedd026 (patch)
tree969688726b9139d2b6830d258437c8b162d25636
parent003a5178319c14258dd4ddc0529c321beb308334 (diff)
downloadDLT-daemon-8b48e73f79b4463393916e4c6696917e3dedd026.tar.gz
Bug 184 - /tmp/dltpipes directory does not exist before dlt-daemon is started, logging disabledv2.10.0
Signed-off-by: Alexander Wenzel <Alexander.AW.Wenzel@bmw.de>
-rw-r--r--src/lib/dlt_user.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c
index 10675b9..afc232b 100644
--- a/src/lib/dlt_user.c
+++ b/src/lib/dlt_user.c
@@ -152,6 +152,28 @@ int dlt_init(void)
memset(&(dlt_user.dlt_shm),0,sizeof(DltShm));
#endif
+ /* create dlt pipes directory */
+ ret=mkdir(DLT_USER_DIR, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH | S_ISVTX );
+ if (ret==-1 && errno != EEXIST)
+ {
+ snprintf(str,DLT_USER_BUFFER_LENGTH,"FIFO user dir %s cannot be created!\n", DLT_USER_DIR);
+ dlt_log(LOG_ERR, str);
+ return -1;
+ }
+
+ /* if dlt pipes directory is created by the application also chmod the directory */
+ if(ret == 0)
+ {
+ // S_ISGID cannot be set by mkdir, let's reassign right bits
+ ret=chmod(DLT_USER_DIR, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH | S_ISGID | S_ISVTX );
+ if (ret==-1)
+ {
+ snprintf(str,DLT_USER_BUFFER_LENGTH,"FIFO user dir %s cannot be chmoded!\n", DLT_USER_DIR);
+ dlt_log(LOG_ERR, str);
+ return -1;
+ }
+ }
+
/* create and open DLT user FIFO */
snprintf(filename,DLT_USER_MAX_FILENAME_LENGTH,"%s/dlt%d",DLT_USER_DIR,getpid());