aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/helpers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/helpers.cpp')
-rw-r--r--src/bun.js/bindings/helpers.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/bun.js/bindings/helpers.cpp b/src/bun.js/bindings/helpers.cpp
new file mode 100644
index 000000000..88f2a5be2
--- /dev/null
+++ b/src/bun.js/bindings/helpers.cpp
@@ -0,0 +1,25 @@
+#include "root.h"
+#include "helpers.h"
+#include "BunClientData.h"
+
+JSC::JSValue createSystemError(JSC::JSGlobalObject* global, ASCIILiteral message, ASCIILiteral syscall, int err)
+{
+ auto* instance = JSC::createError(global, String(message));
+ auto& vm = global->vm();
+ auto& builtinNames = WebCore::builtinNames(vm);
+ instance->putDirect(vm, builtinNames.syscallPublicName(), jsString(vm, String(syscall)), 0);
+ instance->putDirect(vm, builtinNames.errnoPublicName(), JSC::jsNumber(err), 0);
+ instance->putDirect(vm, vm.propertyNames->name, jsString(vm, String("SystemError"_s)), JSC::PropertyAttribute::DontEnum | 0);
+ return instance;
+}
+
+JSC::JSValue createSystemError(JSC::JSGlobalObject* global, ASCIILiteral syscall, int err)
+{
+ auto* instance = JSC::createError(global, makeString(String(syscall), "() failed"_s));
+ auto& vm = global->vm();
+ auto& builtinNames = WebCore::builtinNames(vm);
+ instance->putDirect(vm, builtinNames.syscallPublicName(), jsString(vm, String(syscall)), 0);
+ instance->putDirect(vm, builtinNames.errnoPublicName(), JSC::jsNumber(err), 0);
+ instance->putDirect(vm, vm.propertyNames->name, jsString(vm, String("SystemError"_s)), JSC::PropertyAttribute::DontEnum | 0);
+ return instance;
+} \ No newline at end of file