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;
|
||||
}
|
||||
|
||||
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) {
|
||||
double ms = date->NumberValue();
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
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();
|
||||
@ -775,11 +775,6 @@ NAN_METHOD(OpCallback) {
|
||||
}
|
||||
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: {
|
||||
if (args.Length() > 2 && args[2]->IsString()) {
|
||||
NanUtf8String path(args[2]);
|
||||
@ -801,6 +796,7 @@ NAN_METHOD(OpCallback) {
|
||||
case OP_SETXATTR:
|
||||
case OP_GETXATTR:
|
||||
case OP_READ:
|
||||
case OP_UTIMENS:
|
||||
case OP_WRITE:
|
||||
case OP_RELEASE:
|
||||
case OP_RELEASEDIR:
|
||||
@ -1028,8 +1024,9 @@ static void bindings_dispatch (uv_async_t* handle, int status) {
|
||||
return;
|
||||
|
||||
case OP_UTIMENS: {
|
||||
Local<Value> tmp[] = {NanNew<String>(b->path), callback};
|
||||
bindings_call_op(b, b->ops_utimens, 2, tmp);
|
||||
struct timespec *tv = (struct timespec *) b->data;
|
||||
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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user