Annotation of embedaddon/ntp/libntp/findconfig.c, revision 1.1.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>