summaryrefslogtreecommitdiffstats
path: root/news/nn/files/patch-an
blob: 07865ed6364f928f01849efbe27d888fa4afc375 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
--- nntp.c.orig	Tue Apr 19 18:06:51 2005
+++ nntp.c	Sat Sep  3 14:34:49 2005
@@ -76,6 +76,7 @@
 static int      connect_server(void);
 static void     debug_msg(char *prefix, char *str);
 static void     find_server(void);
+static char    *find_domain(const char *domainFile);
 static int      get_server_line(char *string, int size);
 static int      get_server(char *string, int size);
 static int      get_socket(void);
@@ -233,6 +234,50 @@
     sys_error("Failed to find name of NNTP server!");
 }
 
+
+/*
+ * find_domain		Get the domain name for posting from a named file.
+ *			Handle blank lines and comments.
+ *
+ *	Parameters:	"file" is the name of the file to read.
+ *
+ *	Returns:	Pointer to static data area containing the
+ *			first non-blank/comment line in the file.
+ *			NULL on error (or lack of entry in file).
+ *
+ *	Side effects:	None.
+ */
+
+static char *
+find_domain(const char *domainFile)
+{
+    register FILE  *fp;
+    register char  *cp;
+    static char     buf[MAXHOSTNAMELEN];
+    char           *index();
+
+    if (domainFile == NULL)
+	return (NULL);
+
+    fp = fopen(domainFile, "r");
+    if (fp == NULL)
+	return (NULL);
+
+    while (fgets(buf, sizeof (buf), fp) != NULL) {
+	if (*buf == '\n' || *buf == '#')
+	    continue;
+	cp = index(buf, '\n');
+	if (cp)
+	    *cp = '\0';
+	(void) fclose(fp);
+	return (buf);
+    }
+
+    (void) fclose(fp);
+    return (NULL);
+}
+
+
 /*
  * get_server_line: get a line from the server.
  *
@@ -1492,15 +1537,24 @@
 gen_frompath(void)
 {
     struct passwd  *passwd;
+    char           *domain;
+    const char     *fromFormat = "From: <%s@%s>\r\n";
 
     passwd = getpwuid(getuid());
 
     fprintf(nntp_out, "From: ");
     fprintf(nntp_out, "%s ", full_name());
 
-    fprintf(nntp_out, "<%s@%s>\r\n",
-	    passwd->pw_name,
-	    domain);
+    domain = find_domain(DOMAIN_FILE);
+    if (domain == NULL) {
+	fprintf(nntp_out, fromFormat,
+		passwd->pw_name,
+		host_name);
+    } else {
+	fprintf(nntp_out, fromFormat,
+		passwd->pw_name,
+		domain);
+    }
 
 #ifdef HIDDENNET
     /* Only the login name - nntp server will add uucp name */
OpenPOWER on IntegriCloud