GNUNET_DISK_OPEN_CREATE |
GNUNET_DISK_OPEN_FAILIFEXISTS,
GNUNET_DISK_PERM_USER_READ |
- GNUNET_DISK_PERM_USER_WRITE |
- GNUNET_DISK_PERM_GROUP_READ);
+ GNUNET_DISK_PERM_USER_WRITE);
if (NULL == fd)
{
if (errno == EEXIST)
- continue;
+ {
+ if (GNUNET_YES != GNUNET_DISK_file_test (filename))
+ {
+ /* must exist but not be accessible, fail for good! */
+ if (0 != ACCESS (filename, R_OK))
+ GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR,
+ "access", filename);
+ else
+ GNUNET_break (0); /* what is going on!? */
+ return NULL;
+ }
+ continue;
+ }
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR,
"open", filename);
return NULL;