]> jfr.im git - irc/gameservirc.git/blob - gameserv/news.cpp
added a newline
[irc/gameservirc.git] / gameserv / news.cpp
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 }