| # detect-libc |
|
|
| Node.js module to detect details of the C standard library (libc) |
| implementation provided by a given Linux system. |
|
|
| Currently supports detection of GNU glibc and MUSL libc. |
|
|
| Provides asychronous and synchronous functions for the |
| family (e.g. `glibc`, `musl`) and version (e.g. `1.23`, `1.2.3`). |
|
|
| The version numbers of libc implementations |
| are not guaranteed to be semver-compliant. |
|
|
| For previous v1.x releases, please see the |
| [v1](https://github.com/lovell/detect-libc/tree/v1) branch. |
|
|
| ## Install |
|
|
| ```sh |
| npm install detect-libc |
| ``` |
|
|
| ## API |
|
|
| ### GLIBC |
|
|
| ```ts |
| const GLIBC: string = 'glibc'; |
| ``` |
|
|
| A String constant containing the value `glibc`. |
|
|
| ### MUSL |
|
|
| ```ts |
| const MUSL: string = 'musl'; |
| ``` |
|
|
| A String constant containing the value `musl`. |
|
|
| ### family |
|
|
| ```ts |
| function family(): Promise<string | null>; |
| ``` |
|
|
| Resolves asychronously with: |
|
|
| * `glibc` or `musl` when the libc family can be determined |
| * `null` when the libc family cannot be determined |
| * `null` when run on a non-Linux platform |
|
|
| ```js |
| const { family, GLIBC, MUSL } = require('detect-libc'); |
| |
| switch (await family()) { |
| case GLIBC: ... |
| case MUSL: ... |
| case null: ... |
| } |
| ``` |
|
|
| ### familySync |
|
|
| ```ts |
| function familySync(): string | null; |
| ``` |
|
|
| Synchronous version of `family()`. |
|
|
| ```js |
| const { familySync, GLIBC, MUSL } = require('detect-libc'); |
| |
| switch (familySync()) { |
| case GLIBC: ... |
| case MUSL: ... |
| case null: ... |
| } |
| ``` |
|
|
| ### version |
|
|
| ```ts |
| function version(): Promise<string | null>; |
| ``` |
|
|
| Resolves asychronously with: |
|
|
| * The version when it can be determined |
| * `null` when the libc family cannot be determined |
| * `null` when run on a non-Linux platform |
|
|
| ```js |
| const { version } = require('detect-libc'); |
| |
| const v = await version(); |
| if (v) { |
| const [major, minor, patch] = v.split('.'); |
| } |
| ``` |
|
|
| ### versionSync |
|
|
| ```ts |
| function versionSync(): string | null; |
| ``` |
|
|
| Synchronous version of `version()`. |
|
|
| ```js |
| const { versionSync } = require('detect-libc'); |
| |
| const v = versionSync(); |
| if (v) { |
| const [major, minor, patch] = v.split('.'); |
| } |
| ``` |
|
|
| ### isNonGlibcLinux |
|
|
| ```ts |
| function isNonGlibcLinux(): Promise<boolean>; |
| ``` |
|
|
| Resolves asychronously with: |
|
|
| * `false` when the libc family is `glibc` |
| * `true` when the libc family is not `glibc` |
| * `false` when run on a non-Linux platform |
|
|
| ```js |
| const { isNonGlibcLinux } = require('detect-libc'); |
| |
| if (await isNonGlibcLinux()) { ... } |
| ``` |
|
|
| ### isNonGlibcLinuxSync |
|
|
| ```ts |
| function isNonGlibcLinuxSync(): boolean; |
| ``` |
|
|
| Synchronous version of `isNonGlibcLinux()`. |
|
|
| ```js |
| const { isNonGlibcLinuxSync } = require('detect-libc'); |
| |
| if (isNonGlibcLinuxSync()) { ... } |
| ``` |
|
|
| ## Licensing |
|
|
| Copyright 2017 Lovell Fuller and others. |
|
|
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0.html) |
|
|
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
|
|