]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/news.cpp
Added instructions for using potions
[irc/gameservirc.git] / gameserv / news.cpp
index 44e36ba5ffe9e0e6240945ca5604d8b305b15eb8..df06e70a59237e5320871e4f3735baff1c83c261 100644 (file)
@@ -1,8 +1,15 @@
 #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, ...)
 {
@@ -12,6 +19,7 @@ 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);
@@ -38,6 +46,7 @@ void addNews(List<myString> &news, const char *fmt, ...)
     #ifdef DEBUGMODE
         log("New News Item: %s", input);
     #endif
+
     myString *nstring;
     nstring = new myString(input);
     news.insertAtBack(nstring);
@@ -64,3 +73,70 @@ void showNews(char *nick, List<myString> &news)
        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);
+}