scroll/src/deno/ffi.ts

41 lines
760 B
JavaScript
Raw Normal View History

// Deno-specific ffi code
// Determine library extension based on
// your OS.
let libSuffix = '';
switch (Deno.build.os) {
case 'windows':
libSuffix = 'dll';
break;
case 'darwin':
libSuffix = 'dylib';
break;
default:
libSuffix = 'so.6';
break;
}
const cSharedLib = `libc.${libSuffix}`;
const cStdLib = Deno.dlopen(
cSharedLib,
{
tcgetattr: {
parameters: ['i32', 'pointer'],
result: 'i32',
},
tcsetattr: {
parameters: ['i32', 'i32', 'pointer'],
result: 'i32',
},
cfmakeraw: {
parameters: ['pointer'],
result: 'void',
},
} as const,
);
export default cStdLib.symbols;
export const tcgetattr = cStdLib.symbols.tcgetattr;
export const tcsetattr = cStdLib.symbols.tcsetattr;
export const cfmakeraw = cStdLib.symbols.cfmakeraw;