os.c revision fe6b7ccc8de18264107a96602fefe7be772e9d4f
7d32c065c7bb56f281651ae3dd2888f32ce4f1d9Bob Halley * Copyright (C) 1999-2001 Internet Software Consortium.
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * Permission to use, copy, modify, and distribute this software for any
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * purpose with or without fee is hereby granted, provided that the above
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * copyright notice and this permission notice appear in all copies.
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
ce8b84ce64a7f1b3b7b558a4aa14be946846080aJames Brister/* $Id: os.c,v 1.7 2001/09/07 00:37:00 marka Exp $ */
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews ns_g_conffile = isc_ntpaths_get(NAMED_CONF_PATH);
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews lwresd_g_conffile = isc_ntpaths_get(LWRES_CONF_PATH);
3d5cad69ec20157912e95cf3b79316dfb0a314f3Mark Andrews lwresd_g_resolvconffile = isc_ntpaths_get(RESOLV_CONF_PATH);
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews ns_g_conffile = isc_ntpaths_get(NAMED_CONF_PATH);
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews ns_g_defaultpidfile = isc_ntpaths_get(NAMED_PID_PATH);
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson lwresd_g_defaultpidfile = isc_ntpaths_get(LWRESD_PID_PATH);
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson ns_g_keyfile = isc_ntpaths_get(RNDC_KEY_PATH);
ee7cac1c6e1e0b36a7fa622b8c109169f1093b63James Brister * Try to set stdin, stdout, and stderr to /dev/null, but press
ee7cac1c6e1e0b36a7fa622b8c109169f1093b63James Brister * on even if it fails.
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * XXXMLG The close() calls here are unneeded on all but NetBSD, but
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * are harmless to include everywhere. dup2() is supposed to close
3d5cad69ec20157912e95cf3b79316dfb0a314f3Mark Andrews * the FD if it is in use, but unproven-pthreads-0.16 is broken
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews * and will end up closing the wrong FD. This will be fixed eventually,
52637f592f705ca93fadc218e403fd55e8ce4aeaMark Andrews * and these calls will be removed.
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrewssafe_open(const char *filename, isc_boolean_t append) {
f7b99290c31abeb20c55fc55391510450ce60423Mark Andrews return (-1);
f7b99290c31abeb20c55fc55391510450ce60423Mark Andrews return (-1);
ee7cac1c6e1e0b36a7fa622b8c109169f1093b63James Brister fd = open(filename, O_WRONLY|O_CREAT|O_APPEND,
d981ca645597116d227a48bf37cc5edc061c854dBob Halley * The caller must ensure any required synchronization.
d981ca645597116d227a48bf37cc5edc061c854dBob Halley /* This is safe. */
ee7cac1c6e1e0b36a7fa622b8c109169f1093b63James Brister ns_main_earlyfatal("couldn't open pid file '%s': %s",
e27a69f8bd9538e08f775265167ba6cc5f47c587Bob Halley ns_main_earlyfatal("could not fdopen() pid file '%s': %s",
e27a69f8bd9538e08f775265167ba6cc5f47c587Bob Halley ns_main_earlyfatal("fprintf() to pid file '%s' failed",
e27a69f8bd9538e08f775265167ba6cc5f47c587Bob Halley ns_main_earlyfatal("fflush() to pid file '%s' failed",
ns_os_shutdown(void) {
closelog();