8
|
1 /*--------------------------------------------------------------------------
|
|
2 NETREK II -- Paradise
|
|
3
|
|
4 Permission to use, copy, modify, and distribute this software and its
|
|
5 documentation, or any derivative works thereof, for any NON-COMMERCIAL
|
|
6 purpose and without fee is hereby granted, provided that this copyright
|
|
7 notice appear in all copies. No representations are made about the
|
|
8 suitability of this software for any purpose. This software is provided
|
|
9 "as is" without express or implied warranty.
|
|
10
|
|
11 Xtrek Copyright 1986 Chris Guthrie
|
|
12 Netrek (Xtrek II) Copyright 1989 Kevin P. Smith
|
|
13 Scott Silvey
|
|
14 Paradise II (Netrek II) Copyright 1993 Larry Denys
|
|
15 Kurt Olsen
|
|
16 Brandon Gillespie
|
|
17 --------------------------------------------------------------------------*/
|
|
18
|
|
19
|
|
20 #include "config.h"
|
|
21
|
|
22 #include <stdio.h>
|
|
23 #include "defs.h"
|
|
24 #include "data.h"
|
|
25 #include "shmem.h"
|
|
26
|
|
27 void
|
|
28 usage(char name[])
|
|
29 {
|
|
30 char *message[255] = {
|
|
31 "\nSend messages (accepted from stdin).\n",
|
|
32 "\n\t'%s <recipient> [options]'\n\n",
|
|
33 "Recipients can be:\n",
|
|
34 "\ta number from 0-9 or a letter from a-j to send to one player\n",
|
|
35 "\ta team letter [FRKO] to send to that team\n",
|
|
36 "\tthe letter 'A' to send to ALL.\n",
|
|
37 "\nOptions:\n",
|
|
38 "\t-w without the 'who' part of the message ('GOD->ALL')\n",
|
|
39 "\t-n string from somebody other than 'GOD'\n\n",
|
|
40 ""
|
|
41 };
|
|
42 int x;
|
|
43
|
|
44 fprintf(stderr, "-- Netrek II (Paradise), %s --\n", PARAVERS);
|
|
45 for (x = 0; *message[x] != '\0'; x++)
|
|
46 fprintf(stderr, message[x], name);
|
|
47
|
|
48 exit(1);
|
|
49 }
|
|
50
|
|
51 void
|
|
52 pmessage(from_to, str, recip, group)
|
|
53 /* ==[ printing of message func ]== */
|
|
54 char *from_to;
|
|
55 char *str;
|
|
56 int recip;
|
|
57 int group;
|
|
58 {
|
|
59 struct message *cur;
|
|
60 if (++(mctl->mc_current) >= MAXMESSAGE)
|
|
61 mctl->mc_current = 0;
|
|
62 cur = &messages[mctl->mc_current];
|
|
63 cur->m_no = mctl->mc_current;
|
|
64 cur->m_flags = group;
|
|
65 cur->m_time = 0;
|
|
66 cur->m_recpt = recip;
|
|
67 cur->m_from = 255;
|
|
68 (void) sprintf(cur->m_data, "%s%s", from_to, str);
|
|
69 cur->m_flags |= MVALID;
|
|
70 }
|
|
71
|
|
72 int
|
|
73 main(int argc, char **argv)
|
|
74 {
|
|
75 char ch;
|
|
76 char to[80];
|
|
77 char from[80];
|
|
78 char buf2[80];
|
|
79 int target;
|
|
80 int flag;
|
|
81 char name[32];
|
|
82
|
|
83 strcpy(from, "GOD");
|
|
84 strcpy(to, "ALL");
|
|
85
|
|
86 strcpy(name, argv[0]);
|
|
87
|
|
88 if (argc == 1)
|
|
89 usage(name);
|
|
90
|
|
91 if ((target = letter_to_pnum(argv[1][0])) >= 0)
|
|
92 { /*--[ personal ]--*/
|
|
93 flag = MINDIV;
|
|
94 /*
|
|
95 * r = &players[target]; printf("debug: 1"); to[0] =
|
|
96 * team_to_letter(r->p_team); to[1] = 0;
|
|
97 */
|
|
98 strcpy(to, argv[1]);
|
|
99 }
|
|
100 else
|
|
101 switch (ch = argv[1][0])
|
|
102 { /*--[ better be a team ]--*/
|
|
103 case 'A':
|
|
104 target = 0;
|
|
105 flag = MALL;
|
|
106 break;
|
|
107 case 'F':
|
|
108 target = FED;
|
|
109 flag = MTEAM;
|
|
110 strcpy(to, "FED");
|
|
111 break;
|
|
112 case 'R':
|
|
113 target = ROM;
|
|
114 flag = MTEAM;
|
|
115 strcpy(to, "ROM");
|
|
116 break;
|
|
117 case 'K':
|
|
118 target = KLI;
|
|
119 flag = MTEAM;
|
|
120 strcpy(to, "KLI");
|
|
121 break;
|
|
122 case 'O':
|
|
123 target = ORI;
|
|
124 flag = MTEAM;
|
|
125 strcpy(to, "ORI");
|
|
126 break;
|
|
127 case 'S':
|
|
128 printf("+> This options is not compatable yet");
|
|
129 exit(1);
|
|
130 flag = 0;
|
|
131 break;
|
|
132 default:
|
|
133 usage(name);
|
|
134 flag = 0;
|
|
135 break;
|
|
136 }
|
|
137
|
|
138 /*
|
|
139 * =========================[ check for options ]=========================
|
|
140 */
|
|
141
|
|
142 if (argc >= 3)
|
|
143 {
|
|
144 if (strcmp(argv[2], "-w") == 0)
|
|
145 { /*-----[ without to/from ]-----*/
|
|
146 from[0] = 0;
|
|
147 }
|
|
148 else if (strcmp(argv[2], "-n") == 0)
|
|
149 { /*--[ different from name ]---*/
|
|
150 if (argc <= 2) /*--[ other than GOD ]--------*/
|
|
151 usage(name);
|
|
152 if (argc >= 3)
|
|
153 {
|
|
154 strcpy(from, argv[3]);
|
|
155 }
|
|
156 else
|
|
157 {
|
|
158 usage(name);
|
|
159 }
|
|
160 }
|
|
161 else if (strcmp(argv[1], "-u") == 0 || strcmp(argv[1], "-h") == 0)
|
|
162 {
|
|
163 usage(name);
|
|
164 }
|
|
165 }
|
|
166
|
|
167 /*
|
|
168 * ===[ merge the to/from strings, make sure they are the same length ]===
|
|
169 */
|
|
170
|
|
171 if (from[0] == 0 || to[0] == 0)
|
|
172 {
|
|
173 strcpy(buf2, "");
|
|
174 }
|
|
175 else
|
|
176 {
|
|
177 if (strlen(from) <= 2)
|
|
178 {
|
|
179 strcpy(buf2, " ");
|
|
180 }
|
|
181 strcat(buf2, from);
|
|
182 strcat(buf2, "->");
|
|
183 strcat(buf2, to);
|
|
184
|
|
185 while (strlen(buf2) < 9)
|
|
186 { /*---[ if it's too short, extend it ]---*/
|
|
187 strcat(buf2, " ");
|
|
188 }
|
|
189 strcat(buf2, " "); /*---[ throw in an extra space ]---*/
|
|
190 }
|
|
191 /*
|
|
192 * =========================[ send it on its way ]========================
|
|
193 */
|
|
194
|
|
195 openmem(0);
|
|
196
|
|
197 while (1)
|
|
198 {
|
|
199 char buf[80];
|
|
200 int len;
|
|
201
|
|
202 printf(buf2);
|
|
203 if (0 == fgets(buf, sizeof(buf), stdin))
|
|
204 break;
|
|
205 len = strlen(buf);
|
|
206 if (buf[len - 1] == '\n')
|
|
207 buf[--len] = 0;
|
|
208 pmessage(buf2, buf, target, flag);
|
|
209 }
|
|
210 }
|