From e5656b4aebab7b10e78d656d95f5cab1c01a1e97 Mon Sep 17 00:00:00 2001 From: Danny Mayer Date: Mon, 6 Aug 2001 05:35:16 +0000 Subject: [PATCH] Added support for win32 --- bin/rndc/win32/os.c | 64 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 bin/rndc/win32/os.c diff --git a/bin/rndc/win32/os.c b/bin/rndc/win32/os.c new file mode 100644 index 0000000000..d5e99998ce --- /dev/null +++ b/bin/rndc/win32/os.c @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2001 Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM + * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL + * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, + * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: os.c,v 1.1 2001/08/06 05:35:16 mayer Exp $ */ + +#include + +#include + +#include +#include +#include +#include +#include +#include + +int +set_user(FILE *fd, const char *user) { + return (0); +} + +/* + * Note that the error code EOPNOTSUPP does not exist + * on win32 so we are forced to fall back to using + * ENOENT for now. WSAEOPNOTSUPP does exist but it + * should only be used for sockets. + */ + +FILE * +safe_create(const char *filename) { + int fd; + FILE *f; + struct stat sb; + + if (stat(filename, &sb) == -1) { + if (errno != ENOENT) + return (NULL); + } else if ((sb.st_mode & S_IFREG) == 0) { + errno = ENOENT; + return (NULL); + } + + fd = open(filename, O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR); + if (fd == -1) + return (NULL); + f = fdopen(fd, "w"); + if (f == NULL) + close(fd); + return (f); +} \ No newline at end of file