Example #1
0
    int
    write_buf(const char     *fusepath,
              fuse_bufvec    *src,
              off_t           offset,
              fuse_file_info *ffi)
    {
      int rv;
      FileInfo *fi = reinterpret_cast<FileInfo*>(ffi->fh);

      rv = _write_buf(fi->fd,*src,offset);
      if(rv == -ENOSPC)
       {
          const fuse_context *fc     = fuse_get_context();
          const Config       &config = Config::get(fc);

          if(config.moveonenospc)
            {
              size_t extra;
              const ugid::Set         ugid(0,0);
              const rwlock::ReadGuard readlock(&config.srcmountslock);

              extra = fuse_buf_size(src);
              rv = fs::movefile(config.srcmounts,fusepath,extra,fi->fd);
              if(rv == -1)
                return -ENOSPC;

              rv = _write_buf(fi->fd,*src,offset);
            }
        }

      return rv;
    }
Example #2
0
 int
 write_buf(const char     *fusepath,
           fuse_bufvec    *src,
           off_t           offset,
           fuse_file_info *ffi)
 {
   return _write_buf(ffi->fh,
                     *src,
                     offset);
 }
Example #3
0
 void write_no_delay( const vecval& v ) {
     s_vpi_value val;
     
     if( T::width()!=v.width() )
         throw invalid_argument((format("diffrent vecval width. %s is %d bits") 
                                 % T::fullname() % T::width()).str());
     val.format = vpiVectorVal;
     val.value.vector = _write_buf();;
     for(unsigned int i=0; i<VectorValue::num_of_vecvals(T::width()); i++) {
         val.value.vector[i] = v.get_raw_vecval(i);
     }
     _put_no_delay( val );
 }