int main(int argc, char *argv[]) { int err; if(argc < 3) { usage( argv ); exit(EINVAL); }; err = openlogfile(); if(err != ERR_NON) goto out; DBG (("firs argument %s %d", argv[1], argc)); DBG (("sec argument %s ", argv[2])); FDBG ("fir argument %s ", argv[1]); FDBG ("sec argument %s ", argv[2]); init(); if( mount_disk_img( argv[1])!= ERR_NON) goto out; return call_fuse_main(argc, argv); out: return ERR_GEN; }
static int disk_img_info(const char *filename) { BlockDriver *drv; BlockDriverState *bs; bs = bdrv_new(""); if (!bs) FDBG("Not enough memory"); drv = NULL; if (bdrv_open2(bs, filename, 0, drv) < 0) { FDBG("Could not open '%s'", filename); } bdrv_get_format(bs, disk_img_data.img_format, (sizeof(char) * 128)); bdrv_delete(bs); return 0; }
static int disk_img_getattr(const char *path, struct stat *stbuf) { int err = 0; memset(stbuf, 0, sizeof(struct stat)); if(strcasecmp(path, "/") == 0) { stbuf->st_mode = S_IFDIR | 0755; stbuf->st_nlink = 2; } else if(strcasecmp(path, disk_img_data.raw_filename) == 0) { stbuf->st_mode = S_IFREG | 0666; stbuf->st_nlink = 1; stbuf->st_size = disk_img_data.raw_stat.st_size; stbuf->st_mtime = disk_img_data.raw_stat.st_mtime; stbuf->st_atime = disk_img_data.raw_stat.st_atime; stbuf->st_ctime = disk_img_data.raw_stat.st_ctime; stbuf->st_blocks = disk_img_data.raw_stat.st_blocks; /* stbuf->st_uid = getuid(); */ /* stbuf->st_gid = getgid(); */ stbuf->st_uid = fuse_get_context()->uid; stbuf->st_gid = fuse_get_context()->gid; } else err = ENOENT; FDBG(" "); return err; }
MyEvent::MyEvent() { start=time(NULL); done=0; MutexGuard mg( serlock ); serial = ++ser; f=ser + 1000 ; hooked = false; FDBG( "MyEvent", "Ctor",(unsigned long int)this ); };
static BlockDriverState *bdrv_new_open(const char *filename, const char *fmt) { BlockDriverState *bs; BlockDriver *drv; bs = bdrv_new(""); if (!bs) FDBG("Not enough memory"); if (fmt) { drv = bdrv_find_format(fmt); if (!drv) FDBG("Unknown file format '%s'", fmt); } else { drv = NULL; } if (bdrv_open2(bs, filename, 0, drv) < 0) { FDBG("Could not open '%s'", filename); } return bs; }
static int disk_img_read(const char *path, char *buf, size_t size, off_t offset, struct fuse_file_info *fi) { int err; int nb_sectors = size >> SHIFT_SECTOR; int64_t start_sec = offset >> SHIFT_SECTOR; FDBG("offset: %lu --> path %s", (unsigned long)offset, path); if(strcasecmp(path, disk_img_data.raw_filename) != 0) return -ENOENT; FDBG("offset: %lu --> path %s", (unsigned long)offset, path); FDBG("offset: %lu --> buffer %s", (unsigned long)offset, buf); FDBG("offset: %lu --> size: %lu sec start %lu fh %d", (unsigned long)offset, (unsigned long)size, (signed long)start_sec, (int)fi->fh); err = bdrv_read(disk_img_data.img_bs, start_sec, (uint8_t*) buf, nb_sectors); FDBG("DATA : %s", buf); FDBG("Exit code : %d", err); return size; }
static int disk_img_write(const char *path, char *buf, size_t size, off_t offset, struct fuse_file_info *fi) { int err; int nb_sectors = size >> SHIFT_SECTOR; int start_sec = offset >> SHIFT_SECTOR; FDBG("path %s" , path ); if(strcasecmp(path, disk_img_data.raw_filename) != 0) return -ENOENT; FDBG("path %s" , path ); FDBG("buffer %s" , buf ); FDBG("size: %d offset %lld fh %lld" , size , offset , fi->fh ); err = bdrv_write(disk_img_data.img_bs, start_sec, (uint8_t*) buf, nb_sectors); //FDBG("DATA : %s", buf); FDBG("Exit code : %d", err); return size; }
MyEvent::~MyEvent() { FDBG( "MyEvent", "Dtor",(unsigned long int)this); };