mirror of
https://github.com/fuse-friends/fuse-native
synced 2024-10-27 18:34:01 +00:00
fix utimens
This commit is contained in:
parent
54448dbb1c
commit
6631b2ad55
@ -685,6 +685,11 @@ static void *bindings_thread (void *data) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NAN_INLINE static Local<Date> bindings_get_date (struct timespec *out) {
|
||||||
|
int ms = (out->tv_nsec / 1000);
|
||||||
|
return NanNew<Date>(out->tv_sec * 1000 + ms);
|
||||||
|
}
|
||||||
|
|
||||||
NAN_INLINE static void bindings_set_date (struct timespec *out, Local<Date> date) {
|
NAN_INLINE static void bindings_set_date (struct timespec *out, Local<Date> date) {
|
||||||
double ms = date->NumberValue();
|
double ms = date->NumberValue();
|
||||||
time_t secs = (time_t)(ms / 1000.0);
|
time_t secs = (time_t)(ms / 1000.0);
|
||||||
@ -716,11 +721,6 @@ NAN_INLINE static void bindings_set_stat (struct stat *stat, Local<Object> obj)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
NAN_INLINE static void bindings_set_utimens (struct timespec tv[2], Local<Object> obj) {
|
|
||||||
if (obj->Has(NanNew<String>("atime"))) bindings_set_date(&tv[0], obj->Get(NanNew("atime")).As<Date>());
|
|
||||||
if (obj->Has(NanNew<String>("mtime"))) bindings_set_date(&tv[1], obj->Get(NanNew("mtime")).As<Date>());
|
|
||||||
}
|
|
||||||
|
|
||||||
NAN_INLINE static void bindings_set_statfs (struct statvfs *statfs, Local<Object> obj) { // from http://linux.die.net/man/2/stat
|
NAN_INLINE static void bindings_set_statfs (struct statvfs *statfs, Local<Object> obj) { // from http://linux.die.net/man/2/stat
|
||||||
if (obj->Has(NanNew<String>("bsize"))) statfs->f_bsize = obj->Get(NanNew<String>("bsize"))->Uint32Value();
|
if (obj->Has(NanNew<String>("bsize"))) statfs->f_bsize = obj->Get(NanNew<String>("bsize"))->Uint32Value();
|
||||||
if (obj->Has(NanNew<String>("frsize"))) statfs->f_frsize = obj->Get(NanNew<String>("frsize"))->Uint32Value();
|
if (obj->Has(NanNew<String>("frsize"))) statfs->f_frsize = obj->Get(NanNew<String>("frsize"))->Uint32Value();
|
||||||
@ -775,11 +775,6 @@ NAN_METHOD(OpCallback) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OP_UTIMENS: {
|
|
||||||
if (args.Length() > 2 && args[2]->IsObject()) bindings_set_utimens((struct timespec *) b->data, args[2].As<Object>());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case OP_READLINK: {
|
case OP_READLINK: {
|
||||||
if (args.Length() > 2 && args[2]->IsString()) {
|
if (args.Length() > 2 && args[2]->IsString()) {
|
||||||
NanUtf8String path(args[2]);
|
NanUtf8String path(args[2]);
|
||||||
@ -801,6 +796,7 @@ NAN_METHOD(OpCallback) {
|
|||||||
case OP_SETXATTR:
|
case OP_SETXATTR:
|
||||||
case OP_GETXATTR:
|
case OP_GETXATTR:
|
||||||
case OP_READ:
|
case OP_READ:
|
||||||
|
case OP_UTIMENS:
|
||||||
case OP_WRITE:
|
case OP_WRITE:
|
||||||
case OP_RELEASE:
|
case OP_RELEASE:
|
||||||
case OP_RELEASEDIR:
|
case OP_RELEASEDIR:
|
||||||
@ -1028,8 +1024,9 @@ static void bindings_dispatch (uv_async_t* handle, int status) {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case OP_UTIMENS: {
|
case OP_UTIMENS: {
|
||||||
Local<Value> tmp[] = {NanNew<String>(b->path), callback};
|
struct timespec *tv = (struct timespec *) b->data;
|
||||||
bindings_call_op(b, b->ops_utimens, 2, tmp);
|
Local<Value> tmp[] = {NanNew<String>(b->path), bindings_get_date(tv), bindings_get_date(tv + 1), callback};
|
||||||
|
bindings_call_op(b, b->ops_utimens, 4, tmp);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user