aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library.js18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/library.js b/src/library.js
index 381f0991..c583d430 100644
--- a/src/library.js
+++ b/src/library.js
@@ -3425,6 +3425,24 @@ LibraryManager.library = {
return state & 0x7FFFFFFF;
},
+ realpath__deps: ['$FS', '__setErrNo'],
+ realpath: function(file_name, resolved_name) {
+ // char *realpath(const char *restrict file_name, char *restrict resolved_name);
+ // http://pubs.opengroup.org/onlinepubs/009604499/functions/realpath.html
+ var absolute = FS.analyzePath(Pointer_stringify(file_name));
+ if (absolute.error) {
+ ___setErrNo(absolute.error);
+ return 0;
+ } else {
+ var size = Math.min(4095, absolute.path.length); // PATH_MAX - 1.
+ for (var i = 0; i < size; i++) {
+ {{{ makeSetValue('resolved_name', 'i', 'absolute.path.charCodeAt(i)', 'i8') }}}
+ }
+ {{{ makeSetValue('resolved_name', 'size', '0', 'i8') }}}
+ return resolved_name;
+ }
+ },
+
// ==========================================================================
// string.h
// ==========================================================================