From: <Jef...@us...> - 2007-07-25 22:22:27
|
Revision: 209 http://libirc.svn.sourceforge.net/libirc/?rev=209&view=rev Author: JeffM2501 Date: 2007-07-25 15:22:25 -0700 (Wed, 25 Jul 2007) Log Message: ----------- it's IRCTextUtils not TextUtils. set it straight everywheres Modified Paths: -------------- trunk/libirc/include/Makefile.am trunk/libirc/src/Makefile.am trunk/libirc/vc7.1/libirc.vcproj trunk/libirc/vc8/libirc.vcproj Added Paths: ----------- trunk/libirc/src/IRCTextUtils.cxx Removed Paths: ------------- trunk/libirc/include/TCPConnection.h trunk/libirc/src/TextUtils.cxx Modified: trunk/libirc/include/Makefile.am =================================================================== --- trunk/libirc/include/Makefile.am 2007-07-25 22:14:44 UTC (rev 208) +++ trunk/libirc/include/Makefile.am 2007-07-25 22:22:25 UTC (rev 209) @@ -2,7 +2,7 @@ include_HEADERS = \ TCPConnection.h \ - TextUtils.h \ + IRCTextUtils.h \ Singleton.h \ IRCNumerics.h \ IRCEvents.h \ Deleted: trunk/libirc/include/TCPConnection.h =================================================================== --- trunk/libirc/include/TCPConnection.h 2007-07-25 22:14:44 UTC (rev 208) +++ trunk/libirc/include/TCPConnection.h 2007-07-25 22:22:25 UTC (rev 209) @@ -1,326 +0,0 @@ -/* libIRC -* Copyright (c) 2004 Christopher Sean Morrison -* -* This package is free software; you can redistribute it and/or -* modify it under the terms of the license found in the file -* named LICENSE that should have accompanied this file. -* -* THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR -* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. -*/ - -// TCP/IP connection class header - -#ifndef _TCP_CONNECTION_H_ -#define _TCP_CONNECTION_H_ - -#include <vector> -#include <string> -#include <map> - -#include "Singleton.h" -#include "net.h" - -// ------------------------TCP classes-------------------- -class TCPConnection; - -typedef enum -{ - eTCPNoError = 0, - eTCPNotInit, - eTCPTimeout, - eTCPBadAddress, - eTCPBadPort, - eTCPConnectionFailed, - eTCPSocketNFG, - eTCPInitFailed, - eTCPSelectFailed, - eTCPDataNFG, - eTCPUnknownError -}teTCPError; - -// Packet data class -// this class is realy just to hold data, and make sure it get deallocated. -class TCPPacket -{ -public: - TCPPacket(); - TCPPacket( const TCPPacket &p ); - TCPPacket( unsigned char* buf, unsigned int len ); - ~TCPPacket(); - - TCPPacket& operator = ( const TCPPacket &p ); - - void set ( unsigned char* buf, unsigned int len ); - unsigned char* get ( unsigned int &len ); - -protected: - unsigned char *data; - unsigned int size; -}; - -typedef std::vector<TCPPacket> tvPacketList; - -class TCPClientConnection; - -class TCPClientDataPendingListener -{ -public: - virtual ~TCPClientDataPendingListener(){return;}; - virtual void pending ( TCPClientConnection *connection, int count ) = 0; -}; - -typedef std::vector<TCPClientDataPendingListener*> tvClientDataPendingListenerList; - -// TCP/IP client connection to some host on some port -class TCPClientConnection -{ -public: - // connections - teTCPError connect ( std::string server, unsigned short port ); - teTCPError connect ( void ); - teTCPError disconnect( void ); - - // status - bool connected ( void ); - - // packet polling - bool packets ( void ); - tvPacketList& getPackets ( void ); - - // error handaling - teTCPError getLastError ( void ); - teTCPError setError ( teTCPError error ); - - // data read - // generaly only called by the parent - void readData ( void ); - - // data send - teTCPError sendData ( void *data, int len ); - teTCPError sendData ( const char *data, int len ); - teTCPError sendData ( std::string data ); - - // utils - void setReadChunkSize ( unsigned int size ); - unsigned int getReadChunkSize ( void ); - - // data pending listeners - // let the people register a callback class to be called when data is receved - void addListener ( TCPClientDataPendingListener* listener ); - void removeListener ( TCPClientDataPendingListener* listener ); - - TCPsocket socket; - -protected: - // who's your daddy - friend class TCPConnection; - - // only daddy should make us - TCPClientConnection(); - TCPClientConnection( std::string server, unsigned short port, TCPConnection *parentConnection ); - ~TCPClientConnection(); - - TCPConnection *parent; - tvPacketList packetList; - - teTCPError lastError; - IPaddress serverIP; - int readChunkSize; - - // listeners - tvClientDataPendingListenerList dataPendingList; - void callDataPendingListeners ( int count ); -}; - -// server connection classes -class TCPServerConnection; - -class TCPServerConnectedPeer -{ -public: - TCPServerConnectedPeer(); - ~TCPServerConnectedPeer(); - - // data pending - bool packets ( void ); - tvPacketList& getPackets ( void ); - unsigned int getPacketCount ( void ) {return (unsigned int)packetList.size();} - void flushPackets ( void ); - - //TCPServerConnectedPeer& operator = ( const TCPServerConnectedPeer &p ); - - // error handling - teTCPError getLastError ( void ); - teTCPError setError ( teTCPError error ); - - // called by the server class - void connect ( void* _socket ); - bool readData ( void ); - - // data send - teTCPError sendData ( void *data, int len ); - teTCPError sendData ( const char *data, int len ); - teTCPError sendData ( std::string data ); - - // client info - unsigned int getUID ( void ){ return UID; } - void* getParam ( void ) {return param;} - void setParam ( void * p ){ param = p;} - const std::string getHostMask ( void ); - bool getIP ( unsigned char ip[4] ); - -protected: - unsigned int UID; - - TCPsocket socket; - IPaddress address; - teTCPError lastError; - - tvPacketList packetList; - std::string host; - - void *param; -}; - -class TCPServerDataPendingListener -{ -public: - virtual ~TCPServerDataPendingListener(){return;}; - virtual bool connect ( TCPServerConnection *connection, TCPServerConnectedPeer *peer ) = 0; - virtual void pending ( TCPServerConnection *connection, TCPServerConnectedPeer *peer, unsigned int count ) = 0; - virtual void disconnect ( TCPServerConnection *connection, TCPServerConnectedPeer *peer, bool forced = false ){}; -}; - -typedef std::vector<TCPServerDataPendingListener*> tvServerDataPendingListenerList; - -typedef struct -{ - -}trServerConectedPeer; - -// TCP/IP server connection listening for some connections on some port -class TCPServerConnection -{ -public: - TCPServerConnection(); - TCPServerConnection( unsigned short port, unsigned int connections, TCPConnection *parentConnection ); - ~TCPServerConnection(); - - teTCPError listen ( unsigned short port, unsigned int connections ); - teTCPError disconnect( void ); - - // status - bool listening ( void ); - - // info - unsigned short getPort ( void ); - unsigned int getMaxConnections ( void ); - - // error handaling - teTCPError getLastError ( void ); - teTCPError setError ( teTCPError error ); - - // data pending listeners - // let the people register a callback class to be called when data is receved - void addListener ( TCPServerDataPendingListener* listener ); - void removeListener ( TCPServerDataPendingListener* listener ); - - std::vector<TCPServerConnectedPeer*> getPeers ( void ); - TCPServerConnectedPeer* getPeerFromUID ( unsigned int UID ); - - bool disconectPeer ( unsigned int UID ); - bool disconectPeer ( TCPServerConnectedPeer* peer ); - - // update the shizzle - bool update ( void ); - -protected: - // who's your daddy - friend class TCPConnection; - TCPConnection *parent; - - teTCPError lastError; - int maxUsers; - IPaddress serverIP; - TCPsocket socket; - int readChunkSize; - - net_SocketSet socketSet; - std::map<TCPsocket,TCPServerConnectedPeer> peers; - - // listeners - tvServerDataPendingListenerList dataPendingList; -}; - -// master TCP/IP connection manager -// takes care of loading and clearing out the TCP stack if it needs it -// gives out client and server connections -// handles the non blocking updates of connections. -class TCPConnection : public Singleton<TCPConnection> -{ -public: - // initalises the socket system, on windows inits WSA - // called automaticly by the constructor, but exposted - // in case the client needs to reinit the socket system - teTCPError init ( void ); - - // kills the socket system, closes all connections, - // and on windows cleans up the WSA system - void kill ( void ); - - // has all connections check for new data - teTCPError update ( void ); - void setUpdateTimeout ( int timeout ); - - // returns a new client conenction to the specified host and port - TCPClientConnection* newClientConnection ( std::string server, unsigned short port ); - - // returns a new server connection that will listen for the - // specified number of connections on the specfied port - TCPServerConnection* newServerConnection ( unsigned short port, int connections ); - - // disconnects and removes connections - void deleteClientConnection ( TCPClientConnection* connection ); - void deleteServerConnection ( TCPServerConnection* connection ); - - // returns the lost host - std::string getLocalHost ( void ); - -protected: - friend class Singleton<TCPConnection>; - - TCPConnection(); - ~TCPConnection(); - - friend class TCPClientConnection; - friend class TCPServerConnection; - - typedef std::vector<TCPClientConnection*> tvClientConnectionList; - tvClientConnectionList clientConnections; - - typedef std::vector<TCPServerConnection*> tvServerConnectionList; - tvServerConnectionList serverConnections; - - bool addClientSocket ( TCPClientConnection* client ); - - bool removeClientSocket ( TCPClientConnection* client ); - - typedef std::map<TCPsocket, TCPClientConnection* > tmClientSocketMap; - tmClientSocketMap clientSockets; - net_SocketSet clientSocketSet; - - bool initedSocketInterface; - int timeout; -}; - -#endif //_TCP_CONNECTION_H_ - -// Local Variables: *** -// mode: C++ *** -// tab-width: 8 *** -// c-basic-offset: 2 *** -// indent-tabs-mode: t *** -// End: *** -// ex: shiftwidth=2 tabstop=8 Copied: trunk/libirc/src/IRCTextUtils.cxx (from rev 207, trunk/libirc/src/TextUtils.cxx) =================================================================== --- trunk/libirc/src/IRCTextUtils.cxx (rev 0) +++ trunk/libirc/src/IRCTextUtils.cxx 2007-07-25 22:22:25 UTC (rev 209) @@ -0,0 +1,268 @@ +/* bzflag + * Copyright (c) 1993 - 2004 Tim Riker + * + * This package is free software; you can redistribute it and/or + * modify it under the terms of the license found in the file + * named COPYING that should have accompanied this file. + * + * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +// interface header +#include "IRCTextUtils.h" + +// system headers +#include <string> +#include <algorithm> +#include <sstream> +#include <stdarg.h> +#include <vector> + +namespace string_util +{ + std::string vformat(const char* fmt, va_list args) { + // FIXME -- should prevent buffer overflow in all cases + // not all platforms support vsnprintf so we'll use vsprintf and a + // big temporary buffer and hope for the best. + char buffer[8192]; + vsnprintf(buffer, 8192, fmt, args); + return std::string(buffer); + } + + + std::string format(const char* fmt, ...) { + va_list args; + va_start(args, fmt); + std::string result = vformat(fmt, args); + va_end(args); + return result; + } + + + std::string replace_all(const std::string& in, const std::string& replaceMe, const std::string& withMe) + { + std::string result; + std::string::size_type beginPos = 0; + std::string::size_type endPos = 0; + std::ostringstream tempStream; + + endPos = in.find(replaceMe); + if (endPos == std::string::npos) + return in; // can't find anything to replace + if (replaceMe.empty()) return in; // can't replace nothing with something -- can do reverse + + while (endPos != std::string::npos) { + // push the part up to + tempStream << in.substr(beginPos,endPos-beginPos); + tempStream << withMe; + beginPos = endPos + replaceMe.size(); + endPos = in.find(replaceMe,beginPos); + } + tempStream << in.substr(beginPos); + return tempStream.str(); + } + + + std::vector<std::string> tokenize(const std::string& in, const std::string &delims, const int maxTokens, const bool useQuotes){ + std::vector<std::string> tokens; + int numTokens = 0; + bool inQuote = false; + + std::ostringstream currentToken; + + std::string::size_type pos = in.find_first_not_of(delims); + int currentChar = (pos == std::string::npos) ? -1 : in[pos]; + bool enoughTokens = (maxTokens && (numTokens >= (maxTokens-1))); + + while (pos != std::string::npos && !enoughTokens) { + + // get next token + bool tokenDone = false; + bool foundSlash = false; + + currentChar = (pos < in.size()) ? in[pos] : -1; + while ((currentChar != -1) && !tokenDone){ + + tokenDone = false; + + if (delims.find(currentChar) != std::string::npos && !inQuote) { // currentChar is a delim + pos ++; + break; // breaks out of while look + } + + if (!useQuotes){ + currentToken << char(currentChar); + } else { + + switch (currentChar){ + case '\\' : // found a backslash + if (foundSlash){ + currentToken << char(currentChar); + foundSlash = false; + } else { + foundSlash = true; + } + break; + case '\"' : // found a quote + if (foundSlash){ // found \" + currentToken << char(currentChar); + foundSlash = false; + } else { // found unescaped " + if (inQuote){ // exiting a quote + // finish off current token + tokenDone = true; + inQuote = false; + //slurp off one additional delimeter if possible + if (pos+1 < in.size() && + delims.find(in[pos+1]) != std::string::npos) { + pos++; + } + + } else { // entering a quote + // finish off current token + tokenDone = true; + inQuote = true; + } + } + break; + default: + if (foundSlash){ // don't care about slashes except for above cases + currentToken << '\\'; + foundSlash = false; + } + currentToken << char(currentChar); + break; + } + } + + pos++; + currentChar = (pos < in.size()) ? in[pos] : -1; + } // end of getting a Token + + if (currentToken.str().size() > 0){ // if the token is something add to list + tokens.push_back(currentToken.str()); + currentToken.str(""); + numTokens ++; + } + + enoughTokens = (maxTokens && (numTokens >= (maxTokens-1))); + if (enoughTokens){ + break; + } else{ + pos = in.find_first_not_of(delims,pos); + } + + } // end of getting all tokens -- either EOL or max tokens reached + + if (enoughTokens && pos != std::string::npos) { + std::string lastToken = in.substr(pos); + if (lastToken.size() > 0) + tokens.push_back(lastToken); + } + + return tokens; + } + + int parseDuration(const std::string &duration) + { + int durationInt = 0; + int t = 0; + + int len = (int)duration.length(); + for(int i=0; i < len; i++) { + if (isdigit(duration[i])) { + t = t * 10 + (duration[i] - '0'); + } + else if(duration[i] == 'h' || duration[i] == 'H') { + durationInt += (t * 60); + t = 0; + } + else if(duration[i] == 'd' || duration[i] == 'D') { + durationInt += (t * 1440); + t = 0; + } + else if(duration[i] == 'w' || duration[i] == 'w') { + durationInt += (t * 10080); + t = 0; + } + } + durationInt += t; + return durationInt; + } + + std::string url_encode(const std::string &text) + { + char hex[5]; + std::string destination; + for (int i=0; i < (int) text.size(); i++) { + char c = text[i]; + if (isAlphanumeric(c)) { + destination+=c; + } else if (isWhitespace(c)) { + destination+='+'; + } else { + destination+='%'; + sprintf(hex, "%-2.2X", c); + destination.append(hex); + } + } + return destination; + } + + + std::string escape(const std::string &text, char escaper) + { + std::string destination; + for (int i = 0; i < (int) text.size(); i++) { + char c = text[i]; + if (!isAlphanumeric(c)) + destination += escaper; + destination += c; + } + return destination; + } + + std::string unescape(const std::string &text, char escaper) + { + const int len = (int) text.size(); + std::string destination; + for (int i = 0; i < len; i++) { + char c = text[i]; + if (c == escaper) { + if (i < len - 1) + destination += text[++i]; + else + // Should print an error + ; + } else { + destination += c; + } + } + return destination; + } + + int unescape_lookup(const std::string &text, char escaper, char sep) + { + int position = -1; + for (int i = 0; i < (int) text.size(); i++) { + char c = text[i]; + if (c == sep) { + position = i; + break; + } + if (c == escaper) + i++; + } + return position; + } +}; + +// Local Variables: *** +// mode: C++ *** +// tab-width: 8 *** +// c-basic-offset: 2 *** +// indent-tabs-mode: t *** +// End: *** +// ex: shiftwidth=2 tabstop=8 Modified: trunk/libirc/src/Makefile.am =================================================================== --- trunk/libirc/src/Makefile.am 2007-07-25 22:14:44 UTC (rev 208) +++ trunk/libirc/src/Makefile.am 2007-07-25 22:22:25 UTC (rev 209) @@ -4,7 +4,7 @@ libIRC_la_SOURCES = \ TCPConnection.cpp \ - TextUtils.cxx \ + IRCTextUtils.cxx \ ircCommands.cpp \ libIRC.cpp \ IRCClient.cpp \ Deleted: trunk/libirc/src/TextUtils.cxx =================================================================== --- trunk/libirc/src/TextUtils.cxx 2007-07-25 22:14:44 UTC (rev 208) +++ trunk/libirc/src/TextUtils.cxx 2007-07-25 22:22:25 UTC (rev 209) @@ -1,268 +0,0 @@ -/* bzflag - * Copyright (c) 1993 - 2004 Tim Riker - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the license found in the file - * named COPYING that should have accompanied this file. - * - * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -// interface header -#include "IRCTextUtils.h" - -// system headers -#include <string> -#include <algorithm> -#include <sstream> -#include <stdarg.h> -#include <vector> - -namespace string_util -{ - std::string vformat(const char* fmt, va_list args) { - // FIXME -- should prevent buffer overflow in all cases - // not all platforms support vsnprintf so we'll use vsprintf and a - // big temporary buffer and hope for the best. - char buffer[8192]; - vsnprintf(buffer, 8192, fmt, args); - return std::string(buffer); - } - - - std::string format(const char* fmt, ...) { - va_list args; - va_start(args, fmt); - std::string result = vformat(fmt, args); - va_end(args); - return result; - } - - - std::string replace_all(const std::string& in, const std::string& replaceMe, const std::string& withMe) - { - std::string result; - std::string::size_type beginPos = 0; - std::string::size_type endPos = 0; - std::ostringstream tempStream; - - endPos = in.find(replaceMe); - if (endPos == std::string::npos) - return in; // can't find anything to replace - if (replaceMe.empty()) return in; // can't replace nothing with something -- can do reverse - - while (endPos != std::string::npos) { - // push the part up to - tempStream << in.substr(beginPos,endPos-beginPos); - tempStream << withMe; - beginPos = endPos + replaceMe.size(); - endPos = in.find(replaceMe,beginPos); - } - tempStream << in.substr(beginPos); - return tempStream.str(); - } - - - std::vector<std::string> tokenize(const std::string& in, const std::string &delims, const int maxTokens, const bool useQuotes){ - std::vector<std::string> tokens; - int numTokens = 0; - bool inQuote = false; - - std::ostringstream currentToken; - - std::string::size_type pos = in.find_first_not_of(delims); - int currentChar = (pos == std::string::npos) ? -1 : in[pos]; - bool enoughTokens = (maxTokens && (numTokens >= (maxTokens-1))); - - while (pos != std::string::npos && !enoughTokens) { - - // get next token - bool tokenDone = false; - bool foundSlash = false; - - currentChar = (pos < in.size()) ? in[pos] : -1; - while ((currentChar != -1) && !tokenDone){ - - tokenDone = false; - - if (delims.find(currentChar) != std::string::npos && !inQuote) { // currentChar is a delim - pos ++; - break; // breaks out of while look - } - - if (!useQuotes){ - currentToken << char(currentChar); - } else { - - switch (currentChar){ - case '\\' : // found a backslash - if (foundSlash){ - currentToken << char(currentChar); - foundSlash = false; - } else { - foundSlash = true; - } - break; - case '\"' : // found a quote - if (foundSlash){ // found \" - currentToken << char(currentChar); - foundSlash = false; - } else { // found unescaped " - if (inQuote){ // exiting a quote - // finish off current token - tokenDone = true; - inQuote = false; - //slurp off one additional delimeter if possible - if (pos+1 < in.size() && - delims.find(in[pos+1]) != std::string::npos) { - pos++; - } - - } else { // entering a quote - // finish off current token - tokenDone = true; - inQuote = true; - } - } - break; - default: - if (foundSlash){ // don't care about slashes except for above cases - currentToken << '\\'; - foundSlash = false; - } - currentToken << char(currentChar); - break; - } - } - - pos++; - currentChar = (pos < in.size()) ? in[pos] : -1; - } // end of getting a Token - - if (currentToken.str().size() > 0){ // if the token is something add to list - tokens.push_back(currentToken.str()); - currentToken.str(""); - numTokens ++; - } - - enoughTokens = (maxTokens && (numTokens >= (maxTokens-1))); - if (enoughTokens){ - break; - } else{ - pos = in.find_first_not_of(delims,pos); - } - - } // end of getting all tokens -- either EOL or max tokens reached - - if (enoughTokens && pos != std::string::npos) { - std::string lastToken = in.substr(pos); - if (lastToken.size() > 0) - tokens.push_back(lastToken); - } - - return tokens; - } - - int parseDuration(const std::string &duration) - { - int durationInt = 0; - int t = 0; - - int len = (int)duration.length(); - for(int i=0; i < len; i++) { - if (isdigit(duration[i])) { - t = t * 10 + (duration[i] - '0'); - } - else if(duration[i] == 'h' || duration[i] == 'H') { - durationInt += (t * 60); - t = 0; - } - else if(duration[i] == 'd' || duration[i] == 'D') { - durationInt += (t * 1440); - t = 0; - } - else if(duration[i] == 'w' || duration[i] == 'w') { - durationInt += (t * 10080); - t = 0; - } - } - durationInt += t; - return durationInt; - } - - std::string url_encode(const std::string &text) - { - char hex[5]; - std::string destination; - for (int i=0; i < (int) text.size(); i++) { - char c = text[i]; - if (isAlphanumeric(c)) { - destination+=c; - } else if (isWhitespace(c)) { - destination+='+'; - } else { - destination+='%'; - sprintf(hex, "%-2.2X", c); - destination.append(hex); - } - } - return destination; - } - - - std::string escape(const std::string &text, char escaper) - { - std::string destination; - for (int i = 0; i < (int) text.size(); i++) { - char c = text[i]; - if (!isAlphanumeric(c)) - destination += escaper; - destination += c; - } - return destination; - } - - std::string unescape(const std::string &text, char escaper) - { - const int len = (int) text.size(); - std::string destination; - for (int i = 0; i < len; i++) { - char c = text[i]; - if (c == escaper) { - if (i < len - 1) - destination += text[++i]; - else - // Should print an error - ; - } else { - destination += c; - } - } - return destination; - } - - int unescape_lookup(const std::string &text, char escaper, char sep) - { - int position = -1; - for (int i = 0; i < (int) text.size(); i++) { - char c = text[i]; - if (c == sep) { - position = i; - break; - } - if (c == escaper) - i++; - } - return position; - } -}; - -// Local Variables: *** -// mode: C++ *** -// tab-width: 8 *** -// c-basic-offset: 2 *** -// indent-tabs-mode: t *** -// End: *** -// ex: shiftwidth=2 tabstop=8 Modified: trunk/libirc/vc7.1/libirc.vcproj =================================================================== --- trunk/libirc/vc7.1/libirc.vcproj 2007-07-25 22:14:44 UTC (rev 208) +++ trunk/libirc/vc7.1/libirc.vcproj 2007-07-25 22:22:25 UTC (rev 209) @@ -149,7 +149,7 @@ Name="utils" Filter=""> <File - RelativePath="..\src\TextUtils.cxx"> + RelativePath="..\src\IRCTextUtils.cxx"> </File> </Filter> </Filter> Modified: trunk/libirc/vc8/libirc.vcproj =================================================================== --- trunk/libirc/vc8/libirc.vcproj 2007-07-25 22:14:44 UTC (rev 208) +++ trunk/libirc/vc8/libirc.vcproj 2007-07-25 22:22:25 UTC (rev 209) @@ -210,7 +210,7 @@ Name="utils" > <File - RelativePath="..\src\TextUtils.cxx" + RelativePath="..\src\IRCTextUtils.cxx" > </File> </Filter> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |