summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/minesweep/minefield.cpp4
-rw-r--r--noncore/net/opieirc/ircsession.cpp8
-rw-r--r--noncore/todayplugins/stockticker/libstocks/csv.c3
3 files changed, 10 insertions, 5 deletions
diff --git a/noncore/games/minesweep/minefield.cpp b/noncore/games/minesweep/minefield.cpp
index 72c05b0..1987ea5 100644
--- a/noncore/games/minesweep/minefield.cpp
+++ b/noncore/games/minesweep/minefield.cpp
@@ -611,137 +611,139 @@ void MineField::updateMine( int row, int col )
611 m->activate( flagAction == NoAction ); 611 m->activate( flagAction == NoAction );
612 612
613 if ( m->state() == Mine::Exploded ) { 613 if ( m->state() == Mine::Exploded ) {
614 emit gameOver( FALSE ); 614 emit gameOver( FALSE );
615 setState( GameOver ); 615 setState( GameOver );
616 return; 616 return;
617 } else if ( m->state() == Mine::Empty ) { 617 } else if ( m->state() == Mine::Empty ) {
618 setHint( row, col ); 618 setHint( row, col );
619 if ( !wasEmpty ) 619 if ( !wasEmpty )
620 nonminecount--; 620 nonminecount--;
621 } 621 }
622 622
623 if ( flagAction != NoAction ) { 623 if ( flagAction != NoAction ) {
624 if ( m->state() == Mine::Flagged ) { 624 if ( m->state() == Mine::Flagged ) {
625 if (mineguess > 0) { 625 if (mineguess > 0) {
626 --mineguess; 626 --mineguess;
627 emit mineCount( mineguess ); 627 emit mineCount( mineguess );
628 if ( m->isMined() ) 628 if ( m->isMined() )
629 --minecount; 629 --minecount;
630 } else { 630 } else {
631 m->setState(Mine::Hidden); 631 m->setState(Mine::Hidden);
632 } 632 }
633 } else if ( wasFlagged ) { 633 } else if ( wasFlagged ) {
634 ++mineguess; 634 ++mineguess;
635 emit mineCount( mineguess ); 635 emit mineCount( mineguess );
636 if ( m->isMined() ) 636 if ( m->isMined() )
637 ++minecount; 637 ++minecount;
638 } 638 }
639 } 639 }
640 640
641 updateCell( row, col ); 641 updateCell( row, col );
642 642
643 if ( !minecount && !mineguess || !nonminecount ) { 643 if ( !minecount && !mineguess || !nonminecount ) {
644 emit gameOver( TRUE ); 644 emit gameOver( TRUE );
645 setState( GameOver ); 645 setState( GameOver );
646 } 646 }
647} 647}
648 648
649void MineField::showMines() 649void MineField::showMines()
650{ 650{
651 for ( int c = 0; c < numCols; c++ ) 651 for ( int c = 0; c < numCols; c++ )
652 for ( int r = 0; r < numRows; r++ ) { 652 for ( int r = 0; r < numRows; r++ ) {
653 Mine* m = mine( r, c ); 653 Mine* m = mine( r, c );
654 if ( !m ) 654 if ( !m )
655 continue; 655 continue;
656 if ( m->isMined() && m->state() == Mine::Hidden ) 656 if ( m->isMined() && m->state() == Mine::Hidden )
657 m->setState( Mine::Mined ); 657 m->setState( Mine::Mined );
658 if ( !m->isMined() && m->state() == Mine::Flagged ) 658 if ( !m->isMined() && m->state() == Mine::Flagged )
659 m->setState( Mine::Wrong ); 659 m->setState( Mine::Wrong );
660 660
661 updateCell( r, c ); 661 updateCell( r, c );
662 } 662 }
663} 663}
664 664
665void MineField::paletteChange( const QPalette &o ) 665void MineField::paletteChange( const QPalette &o )
666{ 666{
667 Mine::paletteChange(); 667 Mine::paletteChange();
668 QScrollView::paletteChange( o ); 668 QScrollView::paletteChange( o );
669} 669}
670 670
671void MineField::writeConfig(Config& cfg) const 671void MineField::writeConfig(Config& cfg) const
672{ 672{
673 cfg.setGroup("Field"); 673 cfg.setGroup("Field");
674 cfg.writeEntry("Level",lev); 674 cfg.writeEntry("Level",lev);
675 QString grid=""; 675 QString grid="";
676 if ( stat == Playing ) { 676 if ( stat == Playing ) {
677 for ( int x = 0; x < numCols; x++ ) 677 for ( int x = 0; x < numCols; x++ )
678 for ( int y = 0; y < numRows; y++ ) { 678 for ( int y = 0; y < numRows; y++ ) {
679 char code='A'+(x*17+y*101)%21; // Reduce the urge to cheat 679 char code='A'+(x*17+y*101)%21; // Reduce the urge to cheat
680 const Mine* m = mine( y, x ); 680 const Mine* m = mine( y, x );
681 int st = (int)m->state(); if ( m->isMined() ) st+=5; 681 int st = (int)m->state(); if ( m->isMined() ) st+=5;
682 grid += code + st; 682 grid += code + st;
683 } 683 }
684 } 684 }
685 cfg.writeEntry("Grid",grid); 685 cfg.writeEntry("Grid",grid);
686} 686}
687 687
688void MineField::readConfig(Config& cfg) 688void MineField::readConfig(Config& cfg)
689{ 689{
690 cfg.setGroup("Field"); 690 cfg.setGroup("Field");
691 lev = cfg.readNumEntry("Level",1); 691 lev = cfg.readNumEntry("Level",1);
692 setup(lev); 692 setup(lev);
693 flagAction = NoAction; 693 flagAction = NoAction;
694 ignoreClick = FALSE; 694 ignoreClick = FALSE;
695 currRow = currCol = 0; 695 currRow = currCol = 0;
696 QString grid = cfg.readEntry("Grid"); 696 QString grid = cfg.readEntry("Grid");
697 int x; 697 int x;
698 if ( !grid.isEmpty() ) { 698 if ( !grid.isEmpty() ) {
699 int i=0; 699 int i=0;
700 minecount=0; 700 minecount=0;
701 mineguess=0; 701 mineguess=0;
702 for ( x = 0; x < numCols; x++ ) { 702 for ( x = 0; x < numCols; x++ ) {
703 for ( int y = 0; y < numRows; y++ ) { 703 for ( int y = 0; y < numRows; y++ ) {
704 char code='A'+(x*17+y*101)%21; // Reduce the urge to cheat 704 char code='A'+(x*17+y*101)%21; // Reduce the urge to cheat
705 int st = (char)(QChar)grid[i++]-code; 705 int st = (char)(QChar)grid[i++]-code;
706 Mine* m = mine( y, x ); 706 Mine* m = mine( y, x );
707 if (!m)
708 continue;
707 if ( st >= 5 ) { 709 if ( st >= 5 ) {
708 st-=5; 710 st-=5;
709 m->setMined(TRUE); 711 m->setMined(TRUE);
710 minecount++; 712 minecount++;
711 mineguess++; 713 mineguess++;
712 } 714 }
713 m->setState((Mine::MineState)st); 715 m->setState((Mine::MineState)st);
714 switch ( m->state() ) { 716 switch ( m->state() ) {
715 case Mine::Flagged: 717 case Mine::Flagged:
716 if (m->isMined()) 718 if (m->isMined())
717 minecount--; 719 minecount--;
718 mineguess--; 720 mineguess--;
719 break; 721 break;
720 case Mine::Empty: 722 case Mine::Empty:
721 --nonminecount; 723 --nonminecount;
722 break; 724 break;
723 default: 725 default:
724 break; 726 break;
725 } 727 }
726 } 728 }
727 } 729 }
728 for ( x = 0; x < numCols; x++ ) { 730 for ( x = 0; x < numCols; x++ ) {
729 for ( int y = 0; y < numRows; y++ ) { 731 for ( int y = 0; y < numRows; y++ ) {
730 Mine* m = mine( y, x ); 732 Mine* m = mine( y, x );
731 if ( m->state() == Mine::Empty ) 733 if ( m && m->state() == Mine::Empty )
732 m->setHint(getHint(y,x)); 734 m->setHint(getHint(y,x));
733 } 735 }
734 } 736 }
735 } 737 }
736 setState( Playing ); 738 setState( Playing );
737 emit mineCount( mineguess ); 739 emit mineCount( mineguess );
738} 740}
739 741
740QSize MineField::sizeHint() const 742QSize MineField::sizeHint() const
741{ 743{
742 if ( qApp->desktop()->width() >= 240 ) 744 if ( qApp->desktop()->width() >= 240 )
743 return QSize(200,200); 745 return QSize(200,200);
744 else 746 else
745 return QSize(160, 160); 747 return QSize(160, 160);
746} 748}
747 749
diff --git a/noncore/net/opieirc/ircsession.cpp b/noncore/net/opieirc/ircsession.cpp
index c8d7869..d87ff80 100644
--- a/noncore/net/opieirc/ircsession.cpp
+++ b/noncore/net/opieirc/ircsession.cpp
@@ -47,170 +47,172 @@ void IRCSession::topic(IRCChannel *channel, QString message){
47void IRCSession::mode(IRCChannel *channel, QString message){ 47void IRCSession::mode(IRCChannel *channel, QString message){
48 m_connection->sendLine("MODE " + channel->channelname() + " " + message); 48 m_connection->sendLine("MODE " + channel->channelname() + " " + message);
49} 49}
50 50
51void IRCSession::mode(IRCPerson *person, QString message){ 51void IRCSession::mode(IRCPerson *person, QString message){
52 m_connection->sendLine("MODE " + person->nick() + " " + message); 52 m_connection->sendLine("MODE " + person->nick() + " " + message);
53} 53}
54 54
55void IRCSession::mode(QString message){ 55void IRCSession::mode(QString message){
56 m_connection->sendLine("MODE " + message); 56 m_connection->sendLine("MODE " + message);
57} 57}
58 58
59void IRCSession::raw(QString message){ 59void IRCSession::raw(QString message){
60 m_connection->sendLine(message); 60 m_connection->sendLine(message);
61} 61}
62 62
63void IRCSession::kick(IRCChannel *channel, IRCPerson *person) { 63void IRCSession::kick(IRCChannel *channel, IRCPerson *person) {
64 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :0wn3d - no reason"); 64 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :0wn3d - no reason");
65} 65}
66 66
67void IRCSession::op(IRCChannel *channel, IRCPerson *person) { 67void IRCSession::op(IRCChannel *channel, IRCPerson *person) {
68 m_connection->sendLine("MODE " + channel->channelname() + " +ooo " + person->nick()); 68 m_connection->sendLine("MODE " + channel->channelname() + " +ooo " + person->nick());
69} 69}
70 70
71void IRCSession::kick(IRCChannel *channel, IRCPerson *person, QString message) { 71void IRCSession::kick(IRCChannel *channel, IRCPerson *person, QString message) {
72 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :" + message); 72 m_connection->sendLine("KICK " + channel->channelname() + " " + person->nick() +" :" + message);
73} 73}
74 74
75void IRCSession::sendMessage(IRCPerson *person, QString message) { 75void IRCSession::sendMessage(IRCPerson *person, QString message) {
76 m_connection->sendLine("PRIVMSG " + person->nick() + " :" + message); 76 m_connection->sendLine("PRIVMSG " + person->nick() + " :" + message);
77} 77}
78 78
79void IRCSession::sendMessage(IRCChannel *channel, QString message) { 79void IRCSession::sendMessage(IRCChannel *channel, QString message) {
80 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :" + message); 80 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :" + message);
81} 81}
82 82
83void IRCSession::sendAction(IRCChannel *channel, QString message) { 83void IRCSession::sendAction(IRCChannel *channel, QString message) {
84 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :\001ACTION " + message + "\001"); 84 m_connection->sendLine("PRIVMSG " + channel->channelname() + " :\001ACTION " + message + "\001");
85} 85}
86 86
87void IRCSession::sendAction(IRCPerson *person, QString message) { 87void IRCSession::sendAction(IRCPerson *person, QString message) {
88 m_connection->sendLine("PRIVMSG " + person->nick() + " :\001ACTION " + message + "\001"); 88 m_connection->sendLine("PRIVMSG " + person->nick() + " :\001ACTION " + message + "\001");
89} 89}
90 90
91bool IRCSession::isSessionActive() { 91bool IRCSession::isSessionActive() {
92 return m_connection->isConnected(); 92 return m_connection->isConnected();
93} 93}
94 94
95bool IRCSession::isLoggedIn() { 95bool IRCSession::isLoggedIn() {
96 return m_connection->isLoggedIn(); 96 return m_connection->isLoggedIn();
97} 97}
98 98
99void IRCSession::endSession() { 99void IRCSession::endSession() {
100 if (m_connection->isLoggedIn()) 100 if (m_connection->isLoggedIn())
101 quit(APP_VERSION); 101 quit(APP_VERSION);
102 else 102 else
103 m_connection->close(); 103 m_connection->close();
104} 104}
105 105
106void IRCSession::part(IRCChannel *channel) { 106void IRCSession::part(IRCChannel *channel) {
107 m_connection->sendLine("PART " + channel->channelname() + " :" + APP_VERSION); 107 m_connection->sendLine("PART " + channel->channelname() + " :" + APP_VERSION);
108} 108}
109 109
110void IRCSession::setValidUsermodes(const QString &modes) { 110void IRCSession::setValidUsermodes(const QString &modes) {
111 m_validUsermodes = modes; 111 m_validUsermodes = modes;
112} 112}
113 113
114void IRCSession::setValidChannelmodes(const QString &modes) { 114void IRCSession::setValidChannelmodes(const QString &modes) {
115 m_validChannelmodes = modes; 115 m_validChannelmodes = modes;
116} 116}
117 117
118void IRCSession::updateNickname(const QString &oldNickname, const QString &newNickname) { 118void IRCSession::updateNickname(const QString &oldNickname, const QString &newNickname) {
119 QList<IRCChannel> channels; 119 QList<IRCChannel> channels;
120 IRCOutput output; 120 IRCOutput output;
121 121
122 if (oldNickname == m_server->nick()) { 122 if (oldNickname == m_server->nick()) {
123 m_server->setNick(newNickname); 123 m_server->setNick(newNickname);
124 output = IRCOutput(OUTPUT_NICKCHANGE, tr("You are now known as %1").arg(newNickname)); 124 output = IRCOutput(OUTPUT_NICKCHANGE, tr("You are now known as %1").arg(newNickname));
125 channels = m_channels; 125 channels = m_channels;
126 } 126 }
127 127
128 else { 128 else {
129 IRCPerson *person = getPerson(oldNickname); 129 IRCPerson *person = getPerson(oldNickname);
130 130
131 if(!person) { 131 if(!person) {
132 emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Nickname change of an unknown person"))); 132 emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Nickname change of an unknown person")));
133 return; 133 return;
134 } 134 }
135 135
136 getChannelsByPerson(person, channels); 136 getChannelsByPerson(person, channels);
137 output = IRCOutput(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg(oldNickname).arg(newNickname)); 137 output = IRCOutput(OUTPUT_NICKCHANGE, tr("%1 is now known as %2").arg(oldNickname).arg(newNickname));
138 } 138 }
139 139
140 QListIterator<IRCChannel> it(channels); 140 QListIterator<IRCChannel> it(channels);
141 for (;it.current(); ++it) { 141 for (;it.current(); ++it) {
142 IRCChannelPerson *chanperson = it.current()->getPerson(oldNickname); 142 IRCChannelPerson *chanperson = it.current()->getPerson(oldNickname);
143 it.current()->removePerson(chanperson); 143 if (chanperson) {
144 chanperson->setNick(newNickname); 144 it.current()->removePerson(chanperson);
145 it.current()->addPerson(chanperson); 145 chanperson->setNick(newNickname);
146 it.current()->addPerson(chanperson);
147 }
146 } 148 }
147 149
148 emit updateChannels(); 150 emit updateChannels();
149 output.addParam(new QString(newNickname)); 151 output.addParam(new QString(newNickname));
150 emit outputReady(output); 152 emit outputReady(output);
151} 153}
152 154
153IRCChannel *IRCSession::getChannel(QString channelname) { 155IRCChannel *IRCSession::getChannel(QString channelname) {
154 QListIterator<IRCChannel> it(m_channels); 156 QListIterator<IRCChannel> it(m_channels);
155 for (; it.current(); ++it) { 157 for (; it.current(); ++it) {
156 if (it.current()->channelname() == channelname) { 158 if (it.current()->channelname() == channelname) {
157 return it.current(); 159 return it.current();
158 } 160 }
159 } 161 }
160 return 0; 162 return 0;
161} 163}
162 164
163IRCPerson *IRCSession::getPerson(QString nickname) { 165IRCPerson *IRCSession::getPerson(QString nickname) {
164 QListIterator<IRCPerson> it(m_people); 166 QListIterator<IRCPerson> it(m_people);
165 for (; it.current(); ++it) { 167 for (; it.current(); ++it) {
166 if (it.current()->nick() == nickname) { 168 if (it.current()->nick() == nickname) {
167 return it.current(); 169 return it.current();
168 } 170 }
169 } 171 }
170 return 0; 172 return 0;
171} 173}
172 174
173void IRCSession::getChannelsByPerson(IRCPerson *person, QList<IRCChannel> &channels) { 175void IRCSession::getChannelsByPerson(IRCPerson *person, QList<IRCChannel> &channels) {
174 QListIterator<IRCChannel> it(m_channels); 176 QListIterator<IRCChannel> it(m_channels);
175 for (; it.current(); ++it) { 177 for (; it.current(); ++it) {
176 if (it.current()->getPerson(person->nick()) != 0) { 178 if (it.current()->getPerson(person->nick()) != 0) {
177 channels.append(it.current()); 179 channels.append(it.current());
178 } 180 }
179 } 181 }
180} 182}
181 183
182void IRCSession::addPerson(IRCPerson *person) { 184void IRCSession::addPerson(IRCPerson *person) {
183 m_people.append(person); 185 m_people.append(person);
184} 186}
185 187
186void IRCSession::addChannel(IRCChannel *channel) { 188void IRCSession::addChannel(IRCChannel *channel) {
187 m_channels.append(channel); 189 m_channels.append(channel);
188} 190}
189 191
190void IRCSession::removeChannel(IRCChannel *channel) { 192void IRCSession::removeChannel(IRCChannel *channel) {
191 m_channels.remove(channel); 193 m_channels.remove(channel);
192} 194}
193 195
194void IRCSession::removePerson(IRCPerson *person) { 196void IRCSession::removePerson(IRCPerson *person) {
195 m_people.remove(person); 197 m_people.remove(person);
196} 198}
197 199
198void IRCSession::handleMessage(IRCMessage *message) { 200void IRCSession::handleMessage(IRCMessage *message) {
199 m_parser->parse(message); 201 m_parser->parse(message);
200} 202}
201 203
202void IRCSession::whois(const QString &nickname) { 204void IRCSession::whois(const QString &nickname) {
203 m_connection->whois(nickname); 205 m_connection->whois(nickname);
204} 206}
205 207
206void IRCSession::sendCTCPPing(const QString &nickname) { 208void IRCSession::sendCTCPPing(const QString &nickname) {
207 m_connection->sendCTCPPing(nickname); 209 m_connection->sendCTCPPing(nickname);
208} 210}
209 211
210void IRCSession::sendCTCPRequest(const QString &nickname, const QString &type, const QString &args) { 212void IRCSession::sendCTCPRequest(const QString &nickname, const QString &type, const QString &args) {
211 m_connection->sendCTCPRequest(nickname, type, args); 213 m_connection->sendCTCPRequest(nickname, type, args);
212} 214}
213 215
214void IRCSession::sendCTCPReply(const QString &nickname, const QString &type, const QString &args) { 216void IRCSession::sendCTCPReply(const QString &nickname, const QString &type, const QString &args) {
215 m_connection->sendCTCPReply(nickname, type, args); 217 m_connection->sendCTCPReply(nickname, type, args);
216} 218}
diff --git a/noncore/todayplugins/stockticker/libstocks/csv.c b/noncore/todayplugins/stockticker/libstocks/csv.c
index 6170bed..86d8607 100644
--- a/noncore/todayplugins/stockticker/libstocks/csv.c
+++ b/noncore/todayplugins/stockticker/libstocks/csv.c
@@ -221,185 +221,186 @@ stock *parse_csv_file(char *csv)
221 if (!ptr) return 0; 221 if (!ptr) return 0;
222 StockPtr->Volume = atoi(ptr); 222 StockPtr->Volume = atoi(ptr);
223 223
224 if( !FirstStockPtr ) 224 if( !FirstStockPtr )
225 { 225 {
226 FirstStockPtr = StockPtr; 226 FirstStockPtr = StockPtr;
227 StockPtr->PreviousStock = 0; 227 StockPtr->PreviousStock = 0;
228 } 228 }
229 229
230 StockPtr->NextStock = 0; 230 StockPtr->NextStock = 0;
231 231
232 if (LastStockPtr) 232 if (LastStockPtr)
233 { 233 {
234 LastStockPtr->NextStock = StockPtr; 234 LastStockPtr->NextStock = StockPtr;
235 StockPtr->PreviousStock = LastStockPtr; 235 StockPtr->PreviousStock = LastStockPtr;
236 } 236 }
237 237
238 LastStockPtr = StockPtr; 238 LastStockPtr = StockPtr;
239 239
240 } 240 }
241 else 241 else
242 { 242 {
243 /* this symbol is not valid */ 243 /* this symbol is not valid */
244 /* Set the stock struct just with Symbol, all other are NULL */ 244 /* Set the stock struct just with Symbol, all other are NULL */
245 /* This can be used to see if the symbol has been reached are not */ 245 /* This can be used to see if the symbol has been reached are not */
246 246
247 StockPtr = malloc_stock(); 247 StockPtr = malloc_stock();
248 248
249 ptr = csv_strtok(line, ","); 249 ptr = csv_strtok(line, ",");
250 if (!ptr) return 0; 250 if (!ptr) return 0;
251 251
252 symbol = (char *)malloc(strlen(ptr)+1); 252 symbol = (char *)malloc(strlen(ptr)+1);
253 if (symbol==NULL) 253 if (symbol==NULL)
254 { 254 {
255 fprintf(stderr,"Memory allocating error (%s line %d)\n" 255 fprintf(stderr,"Memory allocating error (%s line %d)\n"
256 ,__FILE__, __LINE__); 256 ,__FILE__, __LINE__);
257 exit(1); 257 exit(1);
258 } 258 }
259 strcpy((char *)(symbol), ptr); 259 strcpy((char *)(symbol), ptr);
260 StockPtr->Symbol = symbol; 260 StockPtr->Symbol = symbol;
261 261
262 if( !FirstStockPtr ) 262 if( !FirstStockPtr )
263 { 263 {
264 FirstStockPtr = StockPtr; 264 FirstStockPtr = StockPtr;
265 StockPtr->PreviousStock = 0; 265 StockPtr->PreviousStock = 0;
266 } 266 }
267 267
268 StockPtr->NextStock = 0; 268 StockPtr->NextStock = 0;
269 269
270 if (LastStockPtr) 270 if (LastStockPtr)
271 { 271 {
272 LastStockPtr->NextStock = StockPtr; 272 LastStockPtr->NextStock = StockPtr;
273 StockPtr->PreviousStock = LastStockPtr; 273 StockPtr->PreviousStock = LastStockPtr;
274 } 274 }
275 275
276 LastStockPtr = StockPtr; 276 LastStockPtr = StockPtr;
277 } 277 }
278 278
279 end_line++; 279 end_line++;
280 line = end_line; 280 line = end_line;
281 281
282 } 282 }
283 283
284 return (FirstStockPtr); 284 return (FirstStockPtr);
285} 285}
286 286
287/*****************************************************************************/ 287/*****************************************************************************/
288/* Parses the history quotes file and return a stock structure list. */ 288/* Parses the history quotes file and return a stock structure list. */
289/*****************************************************************************/ 289/*****************************************************************************/
290stock *parse_csv_history_file(char *csv_file) 290stock *parse_csv_history_file(char *csv_file)
291{ 291{
292 292
293 char *line; 293 char *line;
294 char *end_line; 294 char *end_line;
295 char *ptr; 295 char *ptr;
296 296
297 int day; 297 int day;
298 char smonth[10]; 298 char smonth[10];
299 int month; 299 int month;
300 int year; 300 int year;
301 301
302 char *date; 302 char *date;
303 303
304 int i; 304 int i;
305 int test; 305 int test;
306 306
307 stock *StockPtr=NULL; 307 stock *StockPtr=NULL;
308 stock *LastStockPtr=NULL; 308 stock *LastStockPtr=NULL;
309 309
310 /* Used to return the pointer to the list */ 310 /* Used to return the pointer to the list */
311 stock *FirstStockPtr=NULL; 311 stock *FirstStockPtr=NULL;
312 312
313 line = csv_file; 313 line = csv_file;
314 end_line = csv_file; 314 end_line = csv_file;
315 315
316 /* do not use the first line */ 316 /* do not use the first line */
317 end_line = strstr(line, "\n"); 317 if (!(end_line = strstr(line, "\n")))
318 return 0;
318 *end_line = 0; 319 *end_line = 0;
319 end_line++; 320 end_line++;
320 line = end_line; 321 line = end_line;
321 322
322 while ((end_line = strstr(line, "\n"))) 323 while ((end_line = strstr(line, "\n")))
323 { 324 {
324 *end_line = 0; 325 *end_line = 0;
325 326
326 StockPtr = malloc_stock(); 327 StockPtr = malloc_stock();
327 328
328 /* Date */ 329 /* Date */
329 ptr = strtok(line, ","); 330 ptr = strtok(line, ",");
330 if (!ptr) return 0; 331 if (!ptr) return 0;
331 332
332 sscanf(ptr,"%d-%3s-%d",&day,smonth,&year); 333 sscanf(ptr,"%d-%3s-%d",&day,smonth,&year);
333 334
334 i=0; 335 i=0;
335 336
336#ifdef __UNIX__ 337#ifdef __UNIX__
337 while((test=strcasecmp(months[i], smonth))) i++; 338 while((test=strcasecmp(months[i], smonth))) i++;
338#elif __WINDOWS__ 339#elif __WINDOWS__
339 while(test=_mbsnbicmp(months[i], smonth, strlen(months[i]))) i++; 340 while(test=_mbsnbicmp(months[i], smonth, strlen(months[i]))) i++;
340#endif 341#endif
341 342
342 month = i+1; 343 month = i+1;
343 344
344 date = (char *)malloc(DATE_LENGTH); 345 date = (char *)malloc(DATE_LENGTH);
345 if (date==NULL) 346 if (date==NULL)
346 { 347 {
347 fprintf(stderr,"Memory allocating error (%s line %d)\n" 348 fprintf(stderr,"Memory allocating error (%s line %d)\n"
348 ,__FILE__, __LINE__); 349 ,__FILE__, __LINE__);
349 exit(1); 350 exit(1);
350 } 351 }
351 sprintf(date,"%.2d%.2d%.2d", year, month, day); 352 sprintf(date,"%.2d%.2d%.2d", year, month, day);
352 StockPtr->Date = date; 353 StockPtr->Date = date;
353 354
354 /* Open */ 355 /* Open */
355 ptr = strtok(NULL, ","); 356 ptr = strtok(NULL, ",");
356 if (!ptr) return 0; 357 if (!ptr) return 0;
357 sscanf(ptr,"%f",&(StockPtr->OpenPrice)); 358 sscanf(ptr,"%f",&(StockPtr->OpenPrice));
358 359
359 /* High */ 360 /* High */
360 ptr = strtok(NULL, ","); 361 ptr = strtok(NULL, ",");
361 if (!ptr) return 0; 362 if (!ptr) return 0;
362 sscanf(ptr,"%f",&(StockPtr->MaxPrice)); 363 sscanf(ptr,"%f",&(StockPtr->MaxPrice));
363 364
364 /* Low */ 365 /* Low */
365 ptr = strtok(NULL, ","); 366 ptr = strtok(NULL, ",");
366 if (!ptr) return 0; 367 if (!ptr) return 0;
367 sscanf(ptr,"%f",&(StockPtr->MinPrice)); 368 sscanf(ptr,"%f",&(StockPtr->MinPrice));
368 369
369 /* Close */ 370 /* Close */
370 ptr = strtok(NULL, ","); 371 ptr = strtok(NULL, ",");
371 if (!ptr) return 0; 372 if (!ptr) return 0;
372 sscanf(ptr,"%f",&(StockPtr->LastPrice)); 373 sscanf(ptr,"%f",&(StockPtr->LastPrice));
373 374
374 /* Volume */ 375 /* Volume */
375 376
376 ptr = strtok(NULL, ","); 377 ptr = strtok(NULL, ",");
377 if (!ptr) 378 if (!ptr)
378 /* It seems to be an indice */ 379 /* It seems to be an indice */
379 /* No volume for indices */ 380 /* No volume for indices */
380 StockPtr->Volume = 0; 381 StockPtr->Volume = 0;
381 else 382 else
382 StockPtr->Volume = atoi(ptr); 383 StockPtr->Volume = atoi(ptr);
383 384
384 if( !FirstStockPtr ) 385 if( !FirstStockPtr )
385 { 386 {
386 FirstStockPtr = StockPtr; 387 FirstStockPtr = StockPtr;
387 StockPtr->PreviousStock = 0; 388 StockPtr->PreviousStock = 0;
388 } 389 }
389 390
390 StockPtr->NextStock = 0; 391 StockPtr->NextStock = 0;
391 392
392 if (LastStockPtr) 393 if (LastStockPtr)
393 { 394 {
394 LastStockPtr->NextStock = StockPtr; 395 LastStockPtr->NextStock = StockPtr;
395 StockPtr->PreviousStock = LastStockPtr; 396 StockPtr->PreviousStock = LastStockPtr;
396 } 397 }
397 398
398 LastStockPtr = StockPtr; 399 LastStockPtr = StockPtr;
399 400
400 end_line++; 401 end_line++;
401 line = end_line; 402 line = end_line;
402 } 403 }
403 404
404 return (FirstStockPtr); 405 return (FirstStockPtr);
405} 406}