Date: Sat, 3 Jun 2000 02:10:39 +0930 (CST) From: Greg Lewis <glewis@trc.adelaide.edu.au> To: Greg Lewis <glewis@trc.adelaide.edu.au> Cc: Rob Furphy <rcf@ox.com>, freebsd-java@FreeBSD.ORG Subject: Re: can't remove directories? Message-ID: <200006021640.CAA31260@ares.trc.adelaide.edu.au> In-Reply-To: <200006021630.CAA22648@ares.trc.adelaide.edu.au> from Greg Lewis at "Jun 3, 2000 02:00:04 am"
next in thread | previous in thread | raw e-mail | index | archive | help
Greg Lewis wrote: [a buggered up patch. Note to self: No more late night hacking!] Right, that will teach me to add a comment after I compiled something. The last patch was missing the closing */ on the second comment. So here is what the patch should look like, and this one will compile. Index: src/freebsd/native/java/io/UnixFileSystem_md.c =================================================================== RCS file: /data/java/JDK2/javasrc/src/freebsd/native/java/io/UnixFileSystem_md.c,v retrieving revision 1.3 diff -u -r1.3 UnixFileSystem_md.c --- src/freebsd/native/java/io/UnixFileSystem_md.c 2000/04/13 14:05:57 1.3 +++ src/freebsd/native/java/io/UnixFileSystem_md.c 2000/06/02 16:37:00 @@ -237,7 +237,17 @@ jboolean rv = JNI_FALSE; WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) { +#ifdef __FreeBSD__ + /* + * Under FreeBSD remove(3) is simply an alias for unlink(2). This + * is not the case on Linux and Solaris where remove() calls unlink() + * for files and rmdir() for directories. Duplicate this functionality + * here by trying rmdir should unlink fail. + */ + if (unlink(path) == 0 || rmdir(path) == 0) { +#else if (remove(path) == 0) { +#endif rv = JNI_TRUE; } } END_PLATFORM_STRING(env, path); @@ -250,7 +260,18 @@ jobject file) { WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) { +#ifdef __FreeBSD__ + /* + * Under FreeBSD remove(3) is simply an alias for unlink(2). This + * is not the case on Linux and Solaris where remove() calls unlink() + * for files and rmdir() for directories. Duplicate this functionality + * here by trying rmdir should unlink fail. + */ + deleteOnExit(env, path, unlink); + deleteOnExit(env, path, rmdir); +#else deleteOnExit(env, path, remove); +#endif } END_PLATFORM_STRING(env, path); return JNI_TRUE; } -- Greg Lewis glewis@trc.adelaide.edu.au Computing Officer +61 8 8303 5083 Teletraffic Research Centre To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-java" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006021640.CAA31260>