Page MenuHomePhorge

printf.js
No OneTemporary

Size
793 B
Referenced Files
None
Subscribers
None

printf.js

import { dlopen, suffix, FFIType } from 'ant:ffi';
let libcName;
if (process.platform === 'darwin') {
libcName = `libSystem.${suffix}`;
} else if (process.platform === 'linux') {
libcName = `libc.${suffix}`;
} else if (process.platform === 'win32') {
libcName = `msvcrt.${suffix}`;
} else {
throw new Error(`Unsupported platform: ${process.platform}`);
}
const libc = dlopen(libcName);
libc.define('putchar', {
args: [FFIType.int],
returns: FFIType.int
});
libc.define('printf', {
args: [FFIType.string, FFIType.spread],
returns: FFIType.int
});
console.log('calling putchar(65):');
libc.call('putchar', 65); // 'A'
console.log('\ncalling printf:');
libc.call('printf', 'Hello FFI! I see %d\n', 42);
console.log('calling putchar(66):');
libc.call('putchar', 66); // 'B'

File Metadata

Mime Type
application/javascript
Expires
Sun, May 3, 8:13 AM (1 d, 10 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
544892
Default Alt Text
printf.js (793 B)

Event Timeline