diff -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