Submit: A short writeup of how you would change xv6 to support symlinks. List the functions that would have to be added or changed, with short descriptions of the new functionality or changes.
fs.c: 20 lines added, 4 modified fs.h: 1 line added syscall.c: 2 lines added syscall.h: 1 line added sysfile.c: 15 lines added user.h: 1 line added usys.S: 1 line addedAlso, here is an ln program:
#include "types.h" #include "user.h" int main(int argc, char *argv[]) { int (*ln)(char*, char*); ln = link; if(argc > 1 && strcmp(argv[1], "-s") == 0){ ln = symlink; argc--; argv++; } if(argc != 3){ printf(2, "usage: ln [-s] old new (%d)\n", argc); exit(); } if(ln(argv[1], argv[2]) < 0){ printf(2, "%s failed\n", ln == symlink ? "symlink" : "link"); exit(); } exit(); }