il fallait que sa puisse passer sur un cv

This commit is contained in:
Marc
2022-02-17 14:19:08 +01:00
parent 1edb531e1a
commit 551505c014
37 changed files with 13 additions and 20 deletions
+64
View File
@@ -0,0 +1,64 @@
#include <sys/mount.h>
#include <unistd.h>
#include <node.h>
namespace mountNode {
void nodemount(const v8::FunctionCallbackInfo<v8::Value>& args) {
v8::Isolate* isolate = args.GetIsolate();
if (!args[0]->IsString()) {
isolate->ThrowException(v8::Exception::TypeError(
v8::String::NewFromUtf8(isolate, "First argument must be a string pointing to a device").ToLocalChecked()));
return;
}
if (!args[1]->IsString()) {
isolate->ThrowException(v8::Exception::TypeError(
v8::String::NewFromUtf8(isolate, "Argument must be a string pointing to a folder").ToLocalChecked()));
return;
}
if (!args[2]->IsString()) {
isolate->ThrowException(v8::Exception::TypeError(
v8::String::NewFromUtf8(isolate, "Argument must be a filesystem name").ToLocalChecked()));
return;
}
if (!args[3]->IsNumber()) {
isolate->ThrowException(v8::Exception::TypeError(
v8::String::NewFromUtf8(isolate, "Argument must be a number made from the mount flags").ToLocalChecked()));
return;
}
if (!args[4]->IsString()) {
isolate->ThrowException(v8::Exception::TypeError(
v8::String::NewFromUtf8(isolate, "Argument must be a string").ToLocalChecked()));
return;
}
v8::String::Utf8Value devpathV8(isolate, args[0]);
std::string devpath(*devpathV8);
v8::String::Utf8Value mountPointV8(isolate, args[1]);
std::string mountPoint(*mountPointV8);
v8::String::Utf8Value fsTypeV8(isolate, args[2]);
std::string fsType(*fsTypeV8);
unsigned long rwFlags = args[3].As<v8::Number>()->Value();
//comma separated parameters passed directly into the fs driver
v8::String::Utf8Value fsFlagsV8(isolate, args[4]);
std::string fsFlags(*fsFlagsV8);
const int returnValue = mount(devpath.c_str(), mountPoint.c_str(), fsType.c_str(), rwFlags, fsFlags.c_str());
args.GetReturnValue().Set(returnValue);
}
void Initialize(v8::Local<v8::Object> exports) {
NODE_SET_METHOD(exports, "mount", nodemount);
}
NODE_MODULE(mount_api, Initialize)
}