Annotation of embedaddon/ntp/libntp/findconfig.c, revision 1.1

1.1     ! misho       1: 
        !             2: #ifdef HAVE_CONFIG_H
        !             3: # include <config.h>
        !             4: #endif
        !             5: 
        !             6: #ifdef NEED_HPUX_FINDCONFIG
        !             7: #include <string.h>
        !             8: #include <stdio.h>
        !             9: #include <sys/types.h>
        !            10: #include <sys/stat.h>
        !            11: #include <sys/utsname.h>
        !            12: #include <unistd.h>
        !            13: 
        !            14: const char *
        !            15: FindConfig(
        !            16:        const char *base
        !            17:        )
        !            18: {
        !            19:        static char result[BUFSIZ];
        !            20:        char hostname[BUFSIZ], *cp;
        !            21:        struct stat sbuf; 
        !            22:        struct utsname unamebuf; 
        !            23: 
        !            24:        /* All keyed by initial target being a directory */
        !            25:        (void) strcpy(result, base);
        !            26:        if (stat(result, &sbuf) == 0) {
        !            27:                if (S_ISDIR(sbuf.st_mode)) {
        !            28: 
        !            29:                        /* First choice is my hostname */
        !            30:                        if (gethostname(hostname, BUFSIZ) >= 0) {
        !            31:                                snprintf(result, sizeof(result), "%s/%s", base, hostname);
        !            32:                                if (stat(result, &sbuf) == 0) {
        !            33:                                        goto outahere;
        !            34:                                } else {
        !            35: 
        !            36:                                        /* Second choice is of form default.835 */
        !            37:                                        (void) uname(&unamebuf);
        !            38:                                        if (strncmp(unamebuf.machine, "9000/", 5) == 0)
        !            39:                                            cp = unamebuf.machine + 5;
        !            40:                                        else
        !            41:                                            cp = unamebuf.machine;
        !            42:                                        snprintf(result, sizeof(result), "%s/default.%s", base, cp);
        !            43:                                        if (stat(result, &sbuf) == 0) {
        !            44:                                                goto outahere;
        !            45:                                        } else {
        !            46: 
        !            47:                                                /* Last choice is just default */
        !            48:                                                snprintf(result, sizeof(result), "%s/default", base);
        !            49:                                                if (stat(result, &sbuf) == 0) {
        !            50:                                                        goto outahere;
        !            51:                                                } else {
        !            52:                                                        (void) strcpy(result, "/not/found");
        !            53:                                                }
        !            54:                                        }
        !            55:                                }
        !            56:                        } 
        !            57:                } 
        !            58:        }
        !            59:     outahere:
        !            60:        return(result);
        !            61: }
        !            62: #else
        !            63: #include "ntp_stdlib.h"
        !            64: 
        !            65: const char *
        !            66: FindConfig(
        !            67:        const char *base
        !            68:        )
        !            69: {
        !            70:        return base;
        !            71: }
        !            72: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>