From f2ee8690addf0aa52b5de2061fe6d659574406f9 Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Wed, 17 Aug 2022 20:38:11 -0400 Subject: x --- user/user.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'user') diff --git a/user/user.h b/user/user.h index 8ac6395..4d398d5 100644 --- a/user/user.h +++ b/user/user.h @@ -9,7 +9,7 @@ int write(int, const void*, int); int read(int, void*, int); int close(int); int kill(int); -int exec(char*, char**); +int exec(const char*, char**); int open(const char*, int); int mknod(const char*, short, short); int unlink(const char*); -- cgit v1.2.3 From bc48c2be47ed4994d23327980737fef441fbbcc8 Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Mon, 22 Aug 2022 20:44:02 -0400 Subject: Add ref to this nice page about Chapter 9's regexp matcher --- user/grep.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'user') diff --git a/user/grep.c b/user/grep.c index 19882b9..2315a0c 100644 --- a/user/grep.c +++ b/user/grep.c @@ -62,7 +62,8 @@ main(int argc, char *argv[]) } // Regexp matcher from Kernighan & Pike, -// The Practice of Programming, Chapter 9. +// The Practice of Programming, Chapter 9, or +// https://www.cs.princeton.edu/courses/archive/spr09/cos333/beautiful.html int matchhere(char*, char*); int matchstar(int, char*, char*); -- cgit v1.2.3 From dc405cdb7b4e4d4bb3fc50b3e7f44e8795c0218e Mon Sep 17 00:00:00 2001 From: Robert Morris Date: Tue, 23 Aug 2022 08:23:12 -0400 Subject: don't panic if out of disk space when extending a directory. --- user/usertests.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'user') diff --git a/user/usertests.c b/user/usertests.c index 4ab34da..968034a 100644 --- a/user/usertests.c +++ b/user/usertests.c @@ -2738,6 +2738,36 @@ diskfull(char *s) close(fd); } + // now that there are no free blocks, test that dirlink() + // merely fails (doesn't panic) if it can't extend + // directory content. + int nzz = 128; + for(int i = 0; i < nzz; i++){ + char name[32]; + name[0] = 'z'; + name[1] = 'z'; + name[2] = '0' + (i / 32); + name[3] = '0' + (i % 32); + name[4] = '\0'; + unlink(name); + int fd = open(name, O_CREATE|O_RDWR|O_TRUNC); + if(fd < 0){ + printf("%s: could not create file %s\n", s, name); + break; + } + close(fd); + } + + for(int i = 0; i < nzz; i++){ + char name[32]; + name[0] = 'z'; + name[1] = 'z'; + name[2] = '0' + (i / 32); + name[3] = '0' + (i % 32); + name[4] = '\0'; + unlink(name); + } + for(int i = 0; i < fi; i++){ char name[32]; name[0] = 'b'; -- cgit v1.2.3 From 8621be8f3d105cd73ffbc681f9810d04b083b0ae Mon Sep 17 00:00:00 2001 From: Robert Morris Date: Tue, 23 Aug 2022 08:52:15 -0400 Subject: tolerate out of disk when creating . and .. in mkdir() --- user/usertests.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'user') diff --git a/user/usertests.c b/user/usertests.c index 968034a..60d1762 100644 --- a/user/usertests.c +++ b/user/usertests.c @@ -2712,6 +2712,8 @@ diskfull(char *s) { int fi; int done = 0; + + unlink("diskfulldir"); for(fi = 0; done == 0; fi++){ char name[32]; @@ -2758,6 +2760,9 @@ diskfull(char *s) close(fd); } + mkdir("diskfulldir"); + unlink("diskfulldir"); + for(int i = 0; i < nzz; i++){ char name[32]; name[0] = 'z'; -- cgit v1.2.3