From 50281d1db5768a38bafed8dc28956e71075c0f60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciro=20Santilli=20=E5=85=AD=E5=9B=9B=E4=BA=8B=E4=BB=B6=20?= =?UTF-8?q?=E6=B3=95=E8=BD=AE=E5=8A=9F?= Date: Tue, 8 Oct 2019 00:00:01 +0000 Subject: [PATCH] nodejs: file io --- README.adoc | 4 +++- .../lkmc/nodejs/command_line_arguments.js | 2 ++ rootfs_overlay/lkmc/nodejs/file_write_read.js | 20 +++++++++++++++++++ userland/c/file_write_read.c | 8 ++++---- 4 files changed, 29 insertions(+), 5 deletions(-) create mode 100755 rootfs_overlay/lkmc/nodejs/file_write_read.js diff --git a/README.adoc b/README.adoc index ca7f0f5..3f5c3e8 100644 --- a/README.adoc +++ b/README.adoc @@ -13188,8 +13188,10 @@ ERROR: package host-nodejs installs executables without proper RPATH Examples: -* process +* `process` ** link:rootfs_overlay/lkmc/nodejs/command_line_arguments.js[] +* `fs` +** link:rootfs_overlay/lkmc/nodejs/file_write_read.js[] === Userland content bibliography diff --git a/rootfs_overlay/lkmc/nodejs/command_line_arguments.js b/rootfs_overlay/lkmc/nodejs/command_line_arguments.js index da9651e..6d51fbd 100755 --- a/rootfs_overlay/lkmc/nodejs/command_line_arguments.js +++ b/rootfs_overlay/lkmc/nodejs/command_line_arguments.js @@ -1,5 +1,7 @@ #!/usr/bin/env node +// https://cirosantilli.com/linux-kernel-module-cheat#node-js + for (const arg of process.argv) { console.log(arg); } diff --git a/rootfs_overlay/lkmc/nodejs/file_write_read.js b/rootfs_overlay/lkmc/nodejs/file_write_read.js new file mode 100755 index 0000000..98a222b --- /dev/null +++ b/rootfs_overlay/lkmc/nodejs/file_write_read.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +// https://cirosantilli.com/linux-kernel-module-cheat#node-js + +const assert = require('assert'); +const fs = require('fs'); +const path = require('path'); + +const file_path = path.basename(__filename) + '.tmp'; +const data = 'asdf\nqwer\n'; +const encoding = 'utf8'; + +// Write to file. +// +// Error handling through exceptions: +// https://stackoverflow.com/questions/15543235/checking-if-writefilesync-successfully-wrote-the-file +fs.writeFileSync(file_path, data, encoding); + +// Read from file. +assert.strictEqual(fs.readFileSync(file_path, encoding), data); diff --git a/userland/c/file_write_read.c b/userland/c/file_write_read.c index 6c1ae4e..08560f2 100644 --- a/userland/c/file_write_read.c +++ b/userland/c/file_write_read.c @@ -108,10 +108,10 @@ int file_write(char *path, char *write_string) { int main(void) { char *path = LKMC_TMP_FILE; - char *input = "asdf\nqwer\n"; + char *data = "asdf\nqwer\n"; /* Write entire string to file at once. */ - if (file_write(path, input) == -1) { + if (file_write(path, data) == -1) { LKMC_IO_ERROR("file_write", path); } @@ -121,7 +121,7 @@ int main(void) { if (output == NULL) { LKMC_IO_ERROR("file_read", path); } - assert(strcmp(input, output) == 0); + assert(strcmp(data, output) == 0); free(output); } @@ -131,7 +131,7 @@ int main(void) { if (size == -1) { LKMC_IO_ERROR("file_size", path); } - assert((size_t)size == strlen(input)); + assert((size_t)size == strlen(data)); } return EXIT_SUCCESS;