summaryrefslogtreecommitdiffstats
path: root/pcp/pcpdauthme.c
diff options
context:
space:
mode:
Diffstat (limited to 'pcp/pcpdauthme.c')
-rw-r--r--pcp/pcpdauthme.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/pcp/pcpdauthme.c b/pcp/pcpdauthme.c
new file mode 100644
index 0000000..d979f12
--- /dev/null
+++ b/pcp/pcpdauthme.c
@@ -0,0 +1,74 @@
+/*
+** Copyright 2002 Double Precision, Inc. See COPYING for
+** distribution information.
+*/
+
+
+/*
+*/
+
+#include "config.h"
+
+#if HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#if HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <pwd.h>
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <errno.h>
+#include <sysconfdir.h>
+#include "calendardir.h"
+
+char *auth_myhostname()
+{
+char buf[1024];
+static char *my_hostname=0;
+FILE *f;
+
+ if (my_hostname == 0)
+ {
+ buf[0]=0;
+
+ f=fopen(HOSTNAMEFILE, "r");
+
+ if (!f)
+ f=fopen(HOSTNAMEFILE2, "r");
+
+ if (f != 0)
+ {
+ char *p;
+
+ if (fgets(buf, sizeof(buf), f) == NULL)
+ buf[0]=0;
+ fclose(f);
+
+ if ((p=strchr(buf, '\n')) != 0)
+ *p=0;
+ }
+
+ if (buf[0] == 0 && gethostname(buf, sizeof(buf)-1))
+ strcpy(buf, "localhost");
+
+ if ((my_hostname=malloc(strlen(buf)+1)) == 0)
+ {
+ fprintf(stderr, "NOTICE: malloc: out of memory.\n");
+ return strdup("localhost");
+ }
+
+ strcpy(my_hostname, buf);
+ }
+ return (my_hostname);
+}