checkpoint

This commit is contained in:
Antonio SJ Musumeci 2020-08-20 23:23:15 -04:00
parent a02f3a6856
commit 96095d1fce
3 changed files with 477 additions and 270 deletions

27
libfuse/lib/ansi.h Normal file
View File

@ -0,0 +1,27 @@
#pragma once
#define ANSI_RESET "\033[00m"
#define ANSI_BOLD "\033[1m"
#define ANSI_DARK "\033[2m"
#define ANSI_UNDERLINE "\033[4m"
#define ANSI_BLINK "\033[5m"
#define ANSI_REVERSE "\033[7m"
#define ANSI_CONCEALED "\033[8m"
#define ANSI_GRAY "\033[30m"
#define ANSI_GREY "\033[30m"
#define ANSI_RED "\033[31m"
#define ANSI_GREEN "\033[32m"
#define ANSI_YELLOW "\033[33m"
#define ANSI_BLUE "\033[34m"
#define ANSI_MAGENTA "\033[35m"
#define ANSI_CYAN "\033[36m"
#define ANSI_WHITE "\033[37m"
#define ANSI_BG_GRAY "\033[40m"
#define ANSI_BG_GREY "\033[40m"
#define ANSI_BG_RED "\033[41m"
#define ANSI_BG_GREEN "\033[42m"
#define ANSI_BG_YELLOW "\033[43m"
#define ANSI_BG_BLUE "\033[44m"
#define ANSI_BG_MAGENTA "\033[45m"
#define ANSI_BG_CYAN "\033[46m"
#define ANSI_BG_WHITE "\033[47m"

View File

@ -1549,20 +1549,17 @@ req_fuse(fuse_req_t req)
} }
int int
fuse_fs_getattr(struct fuse_fs *fs, fuse_fs_getattr(struct fuse_fs *fs_,
const char *path, const char *path_,
struct stat *buf, struct stat *buf_,
fuse_timeouts_t *timeout) fuse_timeouts_t *timeout_)
{ {
if(fs->op.getattr == NULL) if(fs_->op.getattr == NULL)
return -ENOSYS; return -ENOSYS;
if(fs->debug) fuse_get_context()->private_data = fs_->user_data;
fprintf(stderr,"getattr %s\n",path);
fuse_get_context()->private_data = fs->user_data; return fs_->op.getattr(path_,buf_,timeout_);
return fs->op.getattr(path,buf,timeout);
} }
int int
@ -2872,11 +2869,10 @@ fuse_lib_forget_multi(fuse_req_t req,
static static
void void
fuse_lib_getattr(fuse_req_t req, fuse_lib_getattr(fuse_req_t req_,
fuse_ino_t ino, fuse_ino_t ino_,
fuse_file_info_t *fi) fuse_file_info_t *fi_)
{ {
int err; int err;
char *path; char *path;
struct fuse *f; struct fuse *f;
@ -2885,15 +2881,15 @@ fuse_lib_getattr(fuse_req_t req,
fuse_timeouts_t timeout; fuse_timeouts_t timeout;
fuse_file_info_t ffi = {0}; fuse_file_info_t ffi = {0};
f = req_fuse_prepare(req); f = req_fuse_prepare(req_);
if(fi == NULL) if(fi_ == NULL)
{ {
pthread_mutex_lock(&f->lock); pthread_mutex_lock(&f->lock);
node = get_node(f,ino); node = get_node(f,ino_);
if(node->is_hidden) if(node->is_hidden)
{ {
fi = &ffi; fi_ = &ffi;
fi->fh = node->hidden_fh; fi_->fh = node->hidden_fh;
} }
pthread_mutex_unlock(&f->lock); pthread_mutex_unlock(&f->lock);
} }
@ -2902,44 +2898,44 @@ fuse_lib_getattr(fuse_req_t req,
err = 0; err = 0;
path = NULL; path = NULL;
if((fi == NULL) || (f->fs->op.fgetattr == NULL)) if((fi_ == NULL) || (f->fs->op.fgetattr == NULL))
err = get_path(f,ino,&path); err = get_path(f,ino_,&path);
if(!err) if(!err)
{ {
err = ((fi == NULL) ? err = ((fi_ == NULL) ?
fuse_fs_getattr(f->fs,path,&buf,&timeout) : fuse_fs_getattr(f->fs,path,&buf,&timeout) :
fuse_fs_fgetattr(f->fs,&buf,fi,&timeout)); fuse_fs_fgetattr(f->fs,&buf,fi_,&timeout));
free_path(f,ino,path); free_path(f,ino_,path);
} }
if(!err) if(!err)
{ {
pthread_mutex_lock(&f->lock); pthread_mutex_lock(&f->lock);
node = get_node(f,ino); node = get_node(f,ino_);
update_stat(node,&buf); update_stat(node,&buf);
pthread_mutex_unlock(&f->lock); pthread_mutex_unlock(&f->lock);
set_stat(f,ino,&buf); set_stat(f,ino_,&buf);
fuse_reply_attr(req,&buf,timeout.attr); fuse_reply_attr(req_,&buf,timeout.attr);
} }
else else
{ {
reply_err(req,err); reply_err(req_,err);
} }
} }
int int
fuse_fs_chmod(struct fuse_fs *fs, fuse_fs_chmod(struct fuse_fs *fs_,
const char *path, const char *path_,
mode_t mode) mode_t mode_)
{ {
if(fs->op.chmod == NULL) if(fs_->op.chmod == NULL)
return -ENOSYS; return -ENOSYS;
fuse_get_context()->private_data = fs->user_data; fuse_get_context()->private_data = fs_->user_data;
return fs->op.chmod(path,mode); return fs_->op.chmod(path_,mode_);
} }
int int
@ -2963,7 +2959,7 @@ fuse_lib_setattr(fuse_req_t req,
int valid, int valid,
fuse_file_info_t *fi) fuse_file_info_t *fi)
{ {
struct fuse *f = req_fuse_prepare(req); struct fuse *f;
struct stat buf; struct stat buf;
char *path; char *path;
int err; int err;
@ -2971,6 +2967,7 @@ fuse_lib_setattr(fuse_req_t req,
fuse_timeouts_t timeout; fuse_timeouts_t timeout;
fuse_file_info_t ffi = {0}; fuse_file_info_t ffi = {0};
f = req_fuse_prepare(req);
if(fi == NULL) if(fi == NULL)
{ {
pthread_mutex_lock(&f->lock); pthread_mutex_lock(&f->lock);

File diff suppressed because it is too large Load Diff