- fn = (const char*) GNUNET_CONTAINER_multihashmap_get (ifm,
- &odb->file_id);
- fh = NULL;
- if ( (NULL == fn) ||
- (NULL == (fh = GNUNET_DISK_file_open (fn,
- GNUNET_DISK_OPEN_READ,
- GNUNET_DISK_PERM_NONE))) ||
- (off !=
- GNUNET_DISK_file_seek (fh,
- off,
- GNUNET_DISK_SEEK_SET)) ||
- (-1 ==
- (nsize = GNUNET_DISK_file_read (fh,
- ndata,
- sizeof (ndata)))) )
- {
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _("Could not access indexed file `%s' (%s) at offset %llu: %s\n"),
- GNUNET_h2s (&odb->file_id),
- fn,
- (unsigned long long) off,
- STRERROR (errno));
- if (fh != NULL)
- GNUNET_DISK_file_close (fh);
- GNUNET_DATASTORE_remove (dsh,
- key,
- size,
- data,
- -1, -1,
- GNUNET_TIME_UNIT_FOREVER_REL,
- &remove_cont,
- NULL);
- return GNUNET_SYSERR;
- }
+ fn = (const char *) GNUNET_CONTAINER_multihashmap_get (ifm, &odb->file_id);
+ if ((NULL == fn) || (0 != ACCESS (fn, R_OK)))
+ {
+ GNUNET_STATISTICS_update (GSF_stats,
+ gettext_noop
+ ("# index blocks removed: original file inaccessible"),
+ 1, GNUNET_YES);
+ GNUNET_DATASTORE_remove (dsh, key, size, data, -1, -1,
+ GNUNET_TIME_UNIT_FOREVER_REL, &remove_cont, NULL);
+ return GNUNET_SYSERR;
+ }
+ if ((NULL ==
+ (fh =
+ GNUNET_DISK_file_open (fn, GNUNET_DISK_OPEN_READ,
+ GNUNET_DISK_PERM_NONE))) ||
+ (off != GNUNET_DISK_file_seek (fh, off, GNUNET_DISK_SEEK_SET)) ||
+ (-1 == (nsize = GNUNET_DISK_file_read (fh, ndata, sizeof (ndata)))))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ _
+ ("Could not access indexed file `%s' (%s) at offset %llu: %s\n"),
+ GNUNET_h2s (&odb->file_id), fn, (unsigned long long) off,
+ (fn == NULL) ? _("not indexed") : STRERROR (errno));
+ if (fh != NULL)
+ GNUNET_DISK_file_close (fh);
+ GNUNET_DATASTORE_remove (dsh, key, size, data, -1, -1,
+ GNUNET_TIME_UNIT_FOREVER_REL, &remove_cont, NULL);
+ return GNUNET_SYSERR;
+ }