| /* |
| * Copyright 2011 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 <stdio.h> |
| #include <errno.h> |
| #include <unistd.h> |
| #include <emscripten.h> |
| |
| int main() { |
| EM_ASM( |
| FS.mkdir('working'); |
| #if NODEFS |
| FS.mount(NODEFS, { root: '.' }, 'working'); |
| #endif |
| FS.chdir('working'); |
| FS.symlink('../test/../there!', 'link'); |
| FS.writeFile('file', 'test'); |
| FS.mkdir('folder'); |
| ); |
| |
| char* files[] = {"link", "file", "folder"}; |
| char buffer[256] = {0}; |
| |
| for (int i = 0; i < sizeof files / sizeof files[0]; i++) { |
| printf("readlink(%s)\n", files[i]); |
| printf("ret: %zd\n", readlink(files[i], buffer, 256)); |
| printf("errno: %d\n", errno); |
| printf("result: %s\n\n", buffer); |
| errno = 0; |
| } |
| |
| printf("symlink/overwrite\n"); |
| printf("ret: %d\n", symlink("new-nonexistent-path", "link")); |
| printf("errno: %d\n\n", errno); |
| errno = 0; |
| |
| printf("symlink/normal\n"); |
| printf("ret: %d\n", symlink("new-nonexistent-path", "folder/link")); |
| printf("errno: %d\n", errno); |
| errno = 0; |
| |
| printf("readlink(created link)\n"); |
| printf("ret: %zd\n", readlink("folder/link", buffer, 256)); |
| printf("errno: %d\n", errno); |
| printf("result: %s\n\n", buffer); |
| errno = 0; |
| |
| buffer[0] = buffer[1] = buffer[2] = buffer[3] = buffer[4] = buffer[5] = '*'; |
| printf("readlink(short buffer)\n"); |
| printf("ret: %zd\n", readlink("link", buffer, 4)); |
| printf("errno: %d\n", errno); |
| printf("result: %s\n", buffer); |
| errno = 0; |
| |
| return 0; |
| } |