blob: 4531f28b23dc391c294c04d667313e89117f97d4 [file] [log] [blame] [edit]
/*
* Copyright 2019 The Emscripten Authors. All rights reserved.
* Emscripten is available under two separate licenses, the MIT license and the
* University of Illinois/NCSA Open Source License. Both these licenses can be
* found in the LICENSE file.
*/
#include <emscripten.h>
#include <stdio.h>
#include <assert.h>
int main(int argc, char *argv[])
{
EM_ASM({
var counter = FS.makedev(64, 0);
FS.registerDevice(counter, {
open: function(stream) {},
close: function(stream) {},
read: function(stream, buffer, offset, length, position) {
for (var i = 0; i < length; ++i) {
buffer[offset + i] = position + i;
}
return length;
},
llseek: function(stream, offset, whence) {
var position = offset;
if (whence === 1) {
position += stream.position;
}
return position;
}
});
FS.mkdev('/counter', counter);
});
FILE* file = fopen("/counter", "rb");
assert(file != NULL);
fseeko(file, 0x10000005A, SEEK_SET);
assert(fgetc(file) == 0x5A);
fclose(file);
puts("success");
return 0;
}