Annotation of dgamelaunch-openbsd/nh343-simple_mail.diff, Revision 1.1.1.1
1.1 rubenllo 1: diff -urN orig/nethack-3.4.3/include/decl.h nethack-3.4.3/include/decl.h
2: --- orig/nethack-3.4.3/include/decl.h 2003-12-07 15:39:13.000000000 -0800
3: +++ nethack-3.4.3/include/decl.h 2004-01-03 15:57:34.000000000 -0800
4: @@ -385,6 +385,10 @@
5: };
6: #endif /* AUTOPICKUP_EXCEPTIONS */
7:
8: +#ifdef SIMPLE_MAIL
9: +E int mailckfreq;
10: +#endif
11: +
12: #undef E
13:
14: #endif /* DECL_H */
15: diff -urN orig/nethack-3.4.3/include/flag.h nethack-3.4.3/include/flag.h
16: --- orig/nethack-3.4.3/include/flag.h 2003-12-07 15:39:13.000000000 -0800
17: +++ nethack-3.4.3/include/flag.h 2004-01-03 15:57:34.000000000 -0800
18: @@ -175,6 +175,9 @@
19: uchar bouldersym; /* symbol for boulder display */
20: boolean travel1; /* first travel step */
21: coord travelcc; /* coordinates for travel_cache */
22: +#ifdef SIMPLE_MAIL
23: + boolean simplemail; /* simple mail format $NAME:$MESSAGE */
24: +#endif
25: #ifdef WIZARD
26: boolean sanity_check; /* run sanity checks */
27: boolean mon_polycontrol; /* debug: control monster polymorphs */
28: diff -urN orig/nethack-3.4.3/include/unixconf.h nethack-3.4.3/include/unixconf.h
29: --- orig/nethack-3.4.3/include/unixconf.h 2003-12-07 15:39:13.000000000 -0800
30: +++ nethack-3.4.3/include/unixconf.h 2004-01-03 15:57:34.000000000 -0800
31: @@ -193,7 +193,6 @@
32: # endif
33: #endif
34:
35: -#define MAILCKFREQ 50
36: #endif /* MAIL */
37:
38:
39: diff -urN orig/nethack-3.4.3/src/mail.c nethack-3.4.3/src/mail.c
40: --- orig/nethack-3.4.3/src/mail.c 2003-12-07 15:39:13.000000000 -0800
41: +++ nethack-3.4.3/src/mail.c 2004-01-03 16:07:21.000000000 -0800
42: @@ -5,6 +5,8 @@
43: #include "hack.h"
44:
45: #ifdef MAIL
46: +#include <fcntl.h>
47: +#include <errno.h>
48: #include "mail.h"
49:
50: /*
51: @@ -36,6 +38,8 @@
52: STATIC_DCL boolean FDECL(md_rush,(struct monst *,int,int));
53: STATIC_DCL void FDECL(newmail, (struct mail_info *));
54:
55: +int mailckfreq = 0;
56: +
57: extern char *viz_rmin, *viz_rmax; /* line-of-sight limits (vision.c) */
58:
59: #ifdef OVL0
60: @@ -464,11 +468,15 @@
61: void
62: ckmailstatus()
63: {
64: +#ifdef SIMPLE_MAIL
65: + if (mailckfreq == 0)
66: + mailckfreq = (iflags.simplemail ? 5 : 10);
67: +#else
68: + mailckfreq = 10;
69: +#endif
70: +
71: if(!mailbox || u.uswallow || !flags.biff
72: -# ifdef MAILCKFREQ
73: - || moves < laststattime + MAILCKFREQ
74: -# endif
75: - )
76: + || moves < laststattime + mailckfreq)
77: return;
78:
79: laststattime = moves;
80: @@ -501,9 +509,68 @@
81: readmail(otmp)
82: struct obj *otmp;
83: {
84: -# ifdef DEF_MAILREADER /* This implies that UNIX is defined */
85: +#ifdef DEF_MAILREADER
86: register const char *mr = 0;
87: +#endif /* DEF_MAILREADER */
88: +#ifdef SIMPLE_MAIL
89: + if (iflags.simplemail)
90: + {
91: + FILE* mb = fopen(mailbox, "r");
92: + char curline[102], *msg;
93: + boolean seen_one_already = FALSE;
94: + struct flock fl = { 0 };
95: +
96: + fl.l_type = F_RDLCK;
97: + fl.l_whence = SEEK_SET;
98: + fl.l_start = 0;
99: + fl.l_len = 0;
100: +
101: + if (!mb)
102: + goto bail;
103: +
104: + /* Allow this call to block. */
105: + if (fcntl (fileno (mb), F_SETLKW, &fl) == -1)
106: + goto bail;
107: +
108: + errno = 0;
109: +
110: + while (fgets(curline, 102, mb) != NULL)
111: + {
112: + fl.l_type = F_UNLCK;
113: + fcntl (fileno(mb), F_UNLCK, &fl);
114: +
115: + pline("There is a%s message on this scroll.",
116: + seen_one_already ? "nother" : "");
117: +
118: + msg = strchr(curline, ':');
119: +
120: + if (!msg)
121: + goto bail;
122: +
123: + *msg = '\0';
124: + msg++;
125: +
126: + pline ("This message is from '%s'.", curline);
127: +
128: + msg[strlen(msg) - 1] = '\0'; /* kill newline */
129: + pline ("It reads: \"%s\".", msg);
130: +
131: + seen_one_already = TRUE;
132: + errno = 0;
133: +
134: + fl.l_type = F_RDLCK;
135: + fcntl(fileno(mb), F_SETLKW, &fl);
136: + }
137:
138: + fl.l_type = F_UNLCK;
139: + fcntl(fileno(mb), F_UNLCK, &fl);
140: +
141: + fclose(mb);
142: + unlink(mailbox);
143: + return;
144: + }
145: +# endif /* SIMPLE_MAIL */
146: +# ifdef DEF_MAILREADER /* This implies that UNIX is defined */
147: display_nhwindow(WIN_MESSAGE, FALSE);
148: if(!(mr = nh_getenv("MAILREADER")))
149: mr = DEF_MAILREADER;
150: @@ -512,15 +578,21 @@
151: (void) execl(mr, mr, (char *)0);
152: terminate(EXIT_FAILURE);
153: }
154: -# else
155: -# ifndef AMS /* AMS mailboxes are directories */
156: +# else
157: +# ifndef AMS /* AMS mailboxes are directories */
158: display_file(mailbox, TRUE);
159: -# endif /* AMS */
160: -# endif /* DEF_MAILREADER */
161: +# endif /* AMS */
162: +# endif /* DEF_MAILREADER */
163:
164: /* get new stat; not entirely correct: there is a small time
165: window where we do not see new mail */
166: getmailstatus();
167: + return;
168: +
169: +#ifdef SIMPLE_MAIL
170: +bail:
171: + pline("It appears to be all gibberish."); /* bail out _professionally_ */
172: +#endif
173: }
174:
175: # endif /* UNIX */
176: @@ -587,10 +659,7 @@
177: static int laststattime = 0;
178:
179: if(u.uswallow || !flags.biff
180: -# ifdef MAILCKFREQ
181: - || moves < laststattime + MAILCKFREQ
182: -# endif
183: - )
184: + || moves < laststattime + mailckfreq)
185: return;
186:
187: laststattime = moves;
188: diff -urN orig/nethack-3.4.3/sys/unix/unixmain.c nethack-3.4.3/sys/unix/unixmain.c
189: --- orig/nethack-3.4.3/sys/unix/unixmain.c 2003-12-07 15:39:13.000000000 -0800
190: +++ nethack-3.4.3/sys/unix/unixmain.c 2004-01-03 15:57:34.000000000 -0800
191: @@ -54,7 +54,9 @@
192: register char *dir;
193: #endif
194: boolean exact_username;
195: -
196: +#ifdef SIMPLE_MAIL
197: + char* e_simple = NULL;
198: +#endif
199: #if defined(__APPLE__)
200: /* special hack to change working directory to a resource fork when
201: running from finder --sam */
202: @@ -84,6 +86,12 @@
203: }
204: #endif
205:
206: +#ifdef SIMPLE_MAIL
207: + /* figure this out early */
208: + e_simple = nh_getenv("SIMPLEMAIL");
209: + iflags.simplemail = (e_simple ? 1 : 0);
210: +#endif
211: +
212: hname = argv[0];
213: hackpid = getpid();
214: (void) umask(0777 & ~FCMASK);
CVSweb