#include "extern.h"
+#include <fstream>
+
+using std::ofstream;
+using std::ifstream;
List<myString> todaysnews;
void addNews(List<myString> &news, const char *fmt, ...);
+void clearNews(List<myString> &news) {news.deleteNodes();};
void showNews(char *nick, List<myString> &news);
+void saveNews(char *filename, List<myString> &news);
+void loadNews(char *filename, List<myString> &news);
void addNews(List<myString> &news, const char *fmt, ...)
{
va_list args;
char *input;
input = new char[1024];
+ memset(input, 0, 1024);
const char *t = fmt;
va_start(args, fmt);
#ifdef DEBUGMODE
log("New News Item: %s", input);
#endif
+
myString *nstring;
nstring = new myString(input);
news.insertAtBack(nstring);
notice(s_GameServ, nick, "End of News");
}
}
+
+void saveNews(char *filename, List<myString> &news)
+{
+ ofstream outfile;
+ outfile.open(filename);
+
+ if (outfile.fail())
+ {
+ log("Error opening %s", filename);
+ return;
+ }
+
+ ListNode<myString> *it;
+ it = news.First();
+ while (it)
+ {
+ outfile << it->getData()->getString() << endl;
+ it = it->Next();
+ }
+ outfile.close();
+}
+
+void loadNews(char *filename, List<myString> &news)
+{
+ // First clear the old news out
+ ListNode<myString> *it, *temp;
+ it = news.First();
+
+ while (it)
+ {
+ temp = it;
+ it = it->Next();
+ delete temp;
+ }
+
+ // Now load from the file
+ ifstream infile;
+ infile.open(filename);
+ if (infile.fail())
+ {
+ log("Error opening %s", filename);
+ return;
+ }
+
+ char *buf;
+ myString *string;
+ buf = new char [1024];
+
+ while (infile.getline(buf, 1024, '\n'))
+ {
+ if (buf[0] == '\0' || buf[0] == '\n')
+ {
+ delete [] buf;
+ return;
+ }
+ string = new myString(buf);
+ news.insertAtBack(string);
+ delete string;
+ }
+
+ delete [] buf;
+}
+
+void do_news(char *u)
+{
+ showNews(u, todaysnews);
+}