From owner-freebsd-hackers Thu Jan 11 20:19:08 1996 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id UAA24430 for hackers-outgoing; Thu, 11 Jan 1996 20:19:08 -0800 (PST) Received: from paris.CS.Berkeley.EDU (paris.CS.Berkeley.EDU [128.32.34.47]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id UAA24419 for ; Thu, 11 Jan 1996 20:19:01 -0800 (PST) Received: (from jmacd@localhost) by paris.CS.Berkeley.EDU (8.6.11/8.6.9) id UAA07014 for freebsd-hackers@freebsd.org; Thu, 11 Jan 1996 20:19:00 -0800 Date: Thu, 11 Jan 1996 20:19:00 -0800 From: Josh MacDonald Message-Id: <199601120419.UAA07014@paris.CS.Berkeley.EDU> To: freebsd-hackers@freebsd.org Subject: mktemp() sucks, why not fix it? Sender: owner-hackers@freebsd.org Precedence: bulk I don't like how: main() { char buf1[] = "/tmp/foo.XXXXXX", buf2[] = "/tmp/foo.XXXXXX"; mktemp(buf1); symlink("/tmp/existsbutnotdirectory/foo", buf1); if(mktemp(buf2) == NULL) perror("mktemp() failed"); printf("buf1 = %s\nbuf2 = %s\n", buf1, buf2); } the second call to mktemp() fails, and they both end up with the same value. or how: main() { char buf1[] = "/tmp/foo.XXXXXX", buf2[] = "/tmp/foo.XXXXXX"; mktemp(buf1); symlink("some_non_existant_file", buf1); mktemp(buf2); printf("buf1 = %s\nbuf2 = %s\n", buf1, buf2); } succeeds but they both have the same value. that sucks. why did they use stat() in mktemp? ick.