// 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'; break; } const cSharedLib = `./libc.${libSuffix}`; const cStdLib = Deno.dlopen( cSharedLib, { termios: { type: { struct: [ // c_iflag 'u32', // c_oflag 'u32', // c_cflag 'u32', // c_lflag 'u32', // c_cc[20] 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', 'u8', // __ispeed 'i32', // __ospeed 'i32', ] } }, 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 termios = cStdLib.symbols.termios; export const tcgetattr = cStdLib.symbols.tcgetattr; export const tcsetattr = cStdLib.symbols.tcsetattr; export const cfmakeraw = cStdLib.symbols.cfmakeraw;