* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: os.c,v 1.1 2001/08/03 05:56:22 marka Exp $ */
+/* $Id: os.c,v 1.2 2001/08/04 08:15:02 marka Exp $ */
#include <config.h>
int fd;
FILE *f;
struct stat sb;
+ int flags = O_WRONLY;
if (stat(filename, &sb) == -1) {
if (errno != ENOENT)
return (NULL);
+ flags = O_WRONLY|O_CREAT|O_EXCL;
} else if ((sb.st_mode & S_IFREG) == 0) {
errno = EOPNOTSUPP;
return (NULL);
- }
+ } else
+ flags = O_WRONLY|O_TRUNC;
- fd = open(filename, O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR);
+ fd = open(filename, flags, S_IRUSR|S_IWUSR);
if (fd == -1)
return (NULL);
+ (void)fchmod(fd, S_IRUSR|S_IWUSR);
f = fdopen(fd, "w");
if (f == NULL)
close(fd);