aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/BunDetectLibcModule.cpp
blob: f7e2c1945b960c1cd10d2020dc4c1943c2572b2b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "root.h"

#include "JavaScriptCore/JavaScript.h"
#include "wtf/text/WTFString.h"
#include "JavaScriptCore/ObjectConstructor.h"

#if defined(__LINUX__)
#include <gnu/libc-version.h>
#endif

using namespace JSC;
using namespace WTF;

JSC::JSObject* createDetectLibcModule(JSC::JSGlobalObject* globalObject)
{
    VM& vm = globalObject->vm();
    JSC::JSObject* object = nullptr;

    {
        JSC::ObjectInitializationScope initializationScope(vm);
        object = JSC::constructEmptyObject(globalObject, globalObject->objectPrototype(), 2);
        #if defined(__LINUX__)
            auto version = JSC::jsString(vm, makeAtomString(gnu_get_libc_version()));
            auto family = JSC::jsString(vm, makeAtomString("glibc"));
        #else
            auto version = JSC::jsNull();
            auto family = JSC::jsNull();
        #endif
        object->putDirect(vm, JSC::Identifier::fromString(vm, "version"_s), version, JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontDelete | 0);
        object->putDirect(vm, JSC::Identifier::fromString(vm, "family"_s), family, JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontDelete | 0);
    }

    return object;
}