summaryrefslogtreecommitdiff
path: root/japanese/mh/files/patch-uip:rcvtty.c
blob: b1f317d06852ff030c2c4bee6427f0d0bd4bd6ad (plain) (blame)
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
--- uip/rcvtty.c.orig	2001-04-05 01:05:17.000000000 +0900
+++ uip/rcvtty.c	2014-10-13 17:46:24.000000000 +0900
@@ -8,11 +8,16 @@
 #endif
 #include "../h/mh.h"
 #include "../h/rcvmail.h"
+#include "../h/formatsbr.h"
 #include "../h/scansbr.h"
 #include "../zotnet/tws.h"
 #include <signal.h>
 #include <sys/stat.h>
+#include <sys/param.h>
 #ifndef	TTYD
+#if __FreeBSD_version > 900007
+#include <utmpx.h>
+#else /* __FreeBSD_version > 900007 */
 #include <utmp.h>
 #ifndef UTMP_FILENAME
 #ifdef UTMP_FILE
@@ -25,6 +30,7 @@
 #endif
 #endif
 #endif	/* UTMP_FILENAME */
+#endif /* __FreeBSD_version > 900007 */
 #endif	/* not TTYD */
 #ifdef LOCALE
 #include	<locale.h>
@@ -110,8 +116,12 @@
 	   *vec[MAXARGS];
 #ifndef	TTYD
     char    tty[BUFSIZ];
+#if __FreeBSD_version > 900007
+    struct utmpx *ut;
+#else /* __FreeBSD_version > 900007 */
     struct utmp ut;
     register FILE  *uf;
+#endif /* __FreeBSD_version > 900007 */
 #endif	/* not TTYD */
 
 #ifdef BSD43
@@ -200,6 +210,13 @@
 
     user = getusr ();
 #ifndef	TTYD
+#if __FreeBSD_version > 900007
+    ut = getutxuser(user);
+    if (ut != NULL) {
+	(void) strncpy (tty, ut->ut_line, sizeof ut->ut_line);
+	alert (tty, md);
+    }
+#else /* __FreeBSD_version > 900007 */
     if ((uf = fopen (UTMP_FILENAME, "r")) == NULL)
 	exit (RCV_MBX);
     while (fread ((char *) &ut, sizeof ut, 1, uf) == 1)
@@ -212,6 +229,7 @@
 	    alert (tty, md);
 	}
     (void) fclose (uf);
+#endif /* __FreeBSD_version > 900007 */
 #else	/* TTYD */
     alert (user, md);
 #endif	/* TTYD */