Hello,
In the past, I have submitted a patch, which was then sort of considered adding, but never made it into CVS. The patch to Application.C uses a $HOME/.dx/ subdirectory for all the DX app. files, instead of putting these files directly in $HOME. Patch is below. Regards, Rob. Index: src/uipp/base/Application.C =================================================================== RCS file: /src/master/dx/src/uipp/base/Application.C,v retrieving revision 1.16 diff -u -r1.16 Application.C --- src/uipp/base/Application.C 30 Sep 2003 17:41:46 -0000 1.16 +++ src/uipp/base/Application.C 3 Nov 2003 10:29:56 -0000 @@ -18,6 +18,7 @@ #include <errno.h> // for errno #include <fcntl.h> // for stat #include <ctype.h> // for tolower +#include <libgen.h> // for dirname #if defined(HAVE_UNISTD_H) #include <unistd.h> @@ -543,10 +544,9 @@ { const char* class_name = this->getApplicationClass(); char* home = (char*)getenv("HOME"); - int len = strlen(home); strcpy (res_file, home); - res_file[len++] = '/'; - res_file[len++] = '.'; + strcat (res_file, "/.dx/"); + int len = strlen(res_file); char* cp = (char*)class_name; while (*cp) { res_file[len++] = tolower(*cp); @@ -561,12 +561,14 @@ #if !defined(DXD_OS_NON_UNIX) int ru = S_IRUSR; int wu = S_IWUSR; + int xu = S_IXUSR; int rg = S_IRGRP; int ro = S_IROTH; int reg = S_IFREG; #else int ru = _S_IREAD; int wu = _S_IWRITE; + int xu = 0; int rg = 0; int ro = 0; int reg = _S_IFREG; @@ -594,6 +596,8 @@ writable = FALSE; } } else if ((errno==ENOENT)&&(create)) { + // New directory also needs execution bit for user + mkdir(dirname(res_file), ru | wu | xu | rg | ro); int fd = creat(res_file, ru | wu | rg | ro); //S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if (fd >= 0) { close(fd);