rendered paste bodydiff -ur FuseCompress.snapshot5/direct_compress.c FuseCompress/direct_compress.c
--- FuseCompress.snapshot5/direct_compress.c 2005-11-23 14:25:04.000000000 +0100
+++ FuseCompress/direct_compress.c 2005-11-23 15:29:53.000000000 +0100
@@ -146,7 +146,7 @@
assert(filedata->database->compressor);
if (!filedata->compressor_data) {
assert(filedata->offset == 0);
- filedata->compressor_data = COMPRESSOR_OPEN(filedata->fd,"rb");
+ filedata->compressor_data = COMPRESSOR_OPEN(dup(filedata->fd),"rb");
if (!filedata->compressor_data) {
syslog(LOG_ERR,"Failed to do COMPRESSOR_OPEN on fd %d file %s, last errno : %s\n",filedata->fd,filedata->database->filename,strerror(errno));
return FAIL;
@@ -189,7 +189,7 @@
assert(filedata->offset == 0);
_DIRECT_MSG("direct_compress Writing header on %s\n",filedata->database->filename);
assert(file_write_header(filedata->fd, filedata->database->compressor, 0) != FAIL);
- filedata->compressor_data = COMPRESSOR_OPEN(filedata->fd,"wb9");
+ filedata->compressor_data = COMPRESSOR_OPEN(dup(filedata->fd),"wb9");
if (!filedata->compressor_data) {
syslog(LOG_ERR,"Failed to do COMPRESSOR_OPEN on fd %d file %s, last errno : %s\n",filedata->fd,filedata->database->filename,strerror(errno));
return FAIL;
Binary files FuseCompress.snapshot5/direct_compress.o and FuseCompress/direct_compress.o differ
Binary files FuseCompress.snapshot5/fusecomp and FuseCompress/fusecomp differ
diff -ur FuseCompress.snapshot5/fusecompress.c FuseCompress/fusecompress.c
--- FuseCompress.snapshot5/fusecompress.c 2005-11-23 14:25:04.000000000 +0100
+++ FuseCompress/fusecompress.c 2005-11-23 15:30:58.000000000 +0100
@@ -596,19 +596,12 @@
struct stat statbuf;
filedata_h *filedata = malloc(sizeof(filedata_h));
- // DEBUG CHECK: errno = 0;
- errno = 0;
filedata->fd = open(full, fi->flags);
if (filedata->fd == -1) {
free(filedata);
return -errno;
}
- // TEMPORARY CHECK, this causes fstat to fail.... WHY?!?
- // Filedata isn't added to the database yet, so what the hell else can access this?!?
- syslog(LOG_DEBUG,"errno set after open : %d, fd : %d, %s\n",errno,filedata->fd,strerror(errno));
- usleep(20000);
-
res = fstat(filedata->fd,&statbuf);
if (res == -1) {
syslog(LOG_ERR,"fstat on file failed after open was ok!, fd %d, strerror : %s\n",filedata->fd,strerror(errno));
@@ -644,17 +637,6 @@
filedata->database = direct_open(full,compressor,filedata);
fi->fh = (long)filedata;
- // Extra temporary check
- #ifdef DEBUG
- struct stat tmp;
- int tmp2 = fstat(filedata->fd,&tmp);
- if (tmp2 == -1)
- syslog(LOG_ERR,"FAILED EXTRA CHECK ON %s, %d, strerror : %s\n",filedata->database->filename,filedata->fd,strerror(errno));
- assert(tmp2 == 0);
- #endif
-
-
-
UNLOCK_FILEDATA;
#endif
Binary files FuseCompress.snapshot5/fusecompress.o and FuseCompress/fusecompress.o differ