]>
Commit | Line | Data |
---|---|---|
c260a8d7 | 1 | #include "extern.h" |
2 | ||
3 | List<myString> todaysnews; | |
4 | void addNews(List<myString> &news, const char *fmt, ...); | |
5 | void showNews(char *nick, List<myString> &news); | |
6 | ||
7 | void addNews(List<myString> &news, const char *fmt, ...) | |
8 | { | |
9 | if (fmt[0] == '\0') | |
10 | return; | |
11 | ||
12 | va_list args; | |
13 | char *input; | |
14 | input = new char[1024]; | |
15 | const char *t = fmt; | |
16 | ||
17 | va_start(args, fmt); | |
18 | ||
19 | for (; *t; t++) | |
20 | { | |
21 | if (*t == '%') | |
22 | { | |
23 | switch(*++t) { | |
24 | case 'd': sprintf(input, "%s%d", input, va_arg(args, int)); break; | |
25 | case 's': sprintf(input, "%s%s", input, va_arg(args, char *)); break; | |
26 | case 'S': sprintf(input, "%s%s", input, s_GameServ); break; | |
27 | case 'l': | |
28 | if (*++t == 'd') | |
29 | sprintf(input, "%s%ld", input, va_arg(args, long int)); break; | |
30 | } | |
31 | } | |
32 | else | |
33 | { | |
34 | sprintf(input, "%s%c", input, *t); | |
35 | } | |
36 | ||
37 | } | |
38 | #ifdef DEBUGMODE | |
39 | log("New News Item: %s", input); | |
40 | #endif | |
41 | myString *nstring; | |
42 | nstring = new myString(input); | |
43 | news.insertAtBack(nstring); | |
44 | ||
45 | delete [] input; | |
46 | delete nstring; | |
47 | ||
48 | va_end(args); | |
49 | } | |
50 | ||
51 | void showNews(char *nick, List<myString> &news) | |
52 | { | |
53 | if (!news.isEmpty()) | |
54 | { | |
55 | ListNode<myString> *it; | |
56 | it = news.First(); | |
57 | ||
58 | notice(s_GameServ, nick, "The Daily Happenings: "); | |
59 | while (it) | |
60 | { | |
61 | notice(s_GameServ, nick, "%s", it->getData()->getString()); | |
62 | it = it->Next(); | |
63 | } | |
64 | notice(s_GameServ, nick, "End of News"); | |
65 | } | |
66 | } |