From: <arn...@us...> - 2007-12-14 19:50:38
|
Revision: 944 http://dcplusplus.svn.sourceforge.net/dcplusplus/?rev=944&view=rev Author: arnetheduck Date: 2007-12-14 11:50:32 -0800 (Fri, 14 Dec 2007) Log Message: ----------- linuxdc++ patches Modified Paths: -------------- dcplusplus/trunk/changelog.txt dcplusplus/trunk/dcpp/HashManager.cpp dcplusplus/trunk/dcpp/SettingsManager.cpp dcplusplus/trunk/dcpp/SettingsManager.h dcplusplus/trunk/dcpp/ShareManager.cpp dcplusplus/trunk/dcpp/Text.cpp dcplusplus/trunk/dcpp/Util.h Modified: dcplusplus/trunk/changelog.txt =================================================================== --- dcplusplus/trunk/changelog.txt 2007-12-14 16:40:43 UTC (rev 943) +++ dcplusplus/trunk/changelog.txt 2007-12-14 19:50:32 UTC (rev 944) @@ -1,4 +1,7 @@ --- 0.704 2007-12-14 -- +-- 0.705 -- +* Several patches for better *nix compatibility of the core (thanks steven sheehy et al) + +-- 0.704 2007-12-14 -- * Hub lists added to utilize Coral's distributed network (ullner) * Use system header arrows on common controls 6+ (thanks poy) * Fixed badly drawn arrows (thanks poy) Modified: dcplusplus/trunk/dcpp/HashManager.cpp =================================================================== --- dcplusplus/trunk/dcpp/HashManager.cpp 2007-12-14 16:40:43 UTC (rev 943) +++ dcplusplus/trunk/dcpp/HashManager.cpp 2007-12-14 19:50:32 UTC (rev 944) @@ -601,7 +601,7 @@ static const int64_t BUF_SIZE = 0x1000000 - (0x1000000 % getpagesize()); -bool HashManager::Hasher::fastHash(const string& filename, u_int8_t* , TigerTree& tth, int64_t size, CRC32Filter* xcrc32) { +bool HashManager::Hasher::fastHash(const string& filename, uint8_t* , TigerTree& tth, int64_t size, CRC32Filter* xcrc32) { int fd = open(Text::fromUtf8(filename).c_str(), O_RDONLY); if(fd == -1) return false; @@ -611,7 +611,7 @@ int64_t size_read = 0; void *buf = 0; - u_int32_t lastRead = GET_TICK(); + uint32_t lastRead = GET_TICK(); while(pos <= size) { if(size_left > 0) { size_read = std::min(size_left, BUF_SIZE); @@ -624,10 +624,10 @@ madvise(buf, size_read, MADV_SEQUENTIAL | MADV_WILLNEED); if(SETTING(MAX_HASH_SPEED) > 0) { - u_int32_t now = GET_TICK(); - u_int32_t minTime = size_read * 1000LL / (SETTING(MAX_HASH_SPEED) * 1024LL * 1024LL); + uint32_t now = GET_TICK(); + uint32_t minTime = size_read * 1000LL / (SETTING(MAX_HASH_SPEED) * 1024LL * 1024LL); if(lastRead + minTime > now) { - u_int32_t diff = now - lastRead; + uint32_t diff = now - lastRead; Thread::sleep(minTime - diff); } lastRead = lastRead + minTime; @@ -643,7 +643,7 @@ (*xcrc32)(buf, size_read); { Lock l(cs); - currentSize = max(static_cast<u_int64_t>(currentSize - size_read), static_cast<u_int64_t>(0)); + currentSize = max(static_cast<uint64_t>(currentSize - size_read), static_cast<uint64_t>(0)); } if(size_left <= 0) { Modified: dcplusplus/trunk/dcpp/SettingsManager.cpp =================================================================== --- dcplusplus/trunk/dcpp/SettingsManager.cpp 2007-12-14 16:40:43 UTC (rev 943) +++ dcplusplus/trunk/dcpp/SettingsManager.cpp 2007-12-14 19:50:32 UTC (rev 944) @@ -76,7 +76,7 @@ "OpenWaitingUsers", "BoldWaitingUsers", "OpenSystemLog", "BoldSystemLog", "AutoRefreshTime", "UseTLS", "AutoSearchLimit", "AltSortOrder", "AutoKickNoFavs", "PromptPassword", "SpyFrameIgnoreTthSearches", "DontDlAlreadyQueued", "MaxCommandLength", "AllowUntrustedHubs", "AllowUntrustedClients", - "TLSPort", "FastHash", "SortFavUsersFirst", "ShowShellMenu", "MinSegmentSize", + "TLSPort", "FastHash", "SortFavUsersFirst", "ShowShellMenu", "MinSegmentSize", "FollowLinks", "SENTRY", // Int64 "TotalUpload", "TotalDownload", @@ -270,6 +270,7 @@ setDefault(SORT_FAVUSERS_FIRST, false); setDefault(SHOW_SHELL_MENU, false); setDefault(MIN_SEGMENT_SIZE, 1024); + setDefault(FOLLOW_LINKS, false); #ifdef _WIN32 setDefault(MAIN_WINDOW_STATE, SW_SHOWNORMAL); Modified: dcplusplus/trunk/dcpp/SettingsManager.h =================================================================== --- dcplusplus/trunk/dcpp/SettingsManager.h 2007-12-14 16:40:43 UTC (rev 943) +++ dcplusplus/trunk/dcpp/SettingsManager.h 2007-12-14 19:50:32 UTC (rev 944) @@ -88,7 +88,7 @@ OPEN_WAITING_USERS, BOLD_WAITING_USERS, OPEN_SYSTEM_LOG, BOLD_SYSTEM_LOG, AUTO_REFRESH_TIME, USE_TLS, AUTO_SEARCH_LIMIT, ALT_SORT_ORDER, AUTO_KICK_NO_FAVS, PROMPT_PASSWORD, SPY_FRAME_IGNORE_TTH_SEARCHES, DONT_DL_ALREADY_QUEUED, MAX_COMMAND_LENGTH, ALLOW_UNTRUSTED_HUBS, ALLOW_UNTRUSTED_CLIENTS, - TLS_PORT, FAST_HASH, SORT_FAVUSERS_FIRST, SHOW_SHELL_MENU, MIN_SEGMENT_SIZE, + TLS_PORT, FAST_HASH, SORT_FAVUSERS_FIRST, SHOW_SHELL_MENU, MIN_SEGMENT_SIZE, FOLLOW_LINKS, INT_LAST }; enum Int64Setting { INT64_FIRST = INT_LAST + 1, Modified: dcplusplus/trunk/dcpp/ShareManager.cpp =================================================================== --- dcplusplus/trunk/dcpp/ShareManager.cpp 2007-12-14 16:40:43 UTC (rev 943) +++ dcplusplus/trunk/dcpp/ShareManager.cpp 2007-12-14 19:50:32 UTC (rev 944) @@ -552,6 +552,10 @@ return ((dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) || (cFileName[0] == L'.')); } + bool isLink() { + return false; + } + int64_t getSize() { return (int64_t)nFileSizeLow | ((int64_t)nFileSizeHigh)<<32; } @@ -621,6 +625,12 @@ if (!ent) return false; return ent->d_name[0] == '.'; } + bool isLink() { + struct stat inode; + if (!ent) return false; + if (lstat((base + PATH_SEPARATOR + ent->d_name).c_str(), &inode) == -1) return false; + return S_ISLNK(inode.st_mode); + } int64_t getSize() { struct stat inode; if (!ent) return false; @@ -669,8 +679,10 @@ if(name == "." || name == "..") continue; - if(!BOOLSETTING(SHARE_HIDDEN) && i->isHidden() ) + if(!BOOLSETTING(SHARE_HIDDEN) && i->isHidden()) continue; + if(!BOOLSETTING(FOLLOW_LINKS) && i->isLink()) + continue; if(i->isDirectory()) { string newName = aName + name + PATH_SEPARATOR; Modified: dcplusplus/trunk/dcpp/Text.cpp =================================================================== --- dcplusplus/trunk/dcpp/Text.cpp 2007-12-14 16:40:43 UTC (rev 943) +++ dcplusplus/trunk/dcpp/Text.cpp 2007-12-14 19:50:32 UTC (rev 944) @@ -307,11 +307,15 @@ } const string& toUtf8(const string& str, const string& fromCharset, string& tmp) throw() { - if(str.empty() || fromCharset == utf8 || toLower(fromCharset, tmp) == utf8) { + if(str.empty()) { return str; } - + #ifdef _WIN32 + if (fromCharset == utf8 || toLower(fromCharset, tmp) == utf8) { + return str; + } + return acpToUtf8(str, tmp); #else return convert(str, tmp, fromCharset, utf8); @@ -319,11 +323,15 @@ } const string& fromUtf8(const string& str, const string& toCharset, string& tmp) throw() { - if(str.empty() || toCharset == utf8 || toLower(toCharset, tmp) == utf8) { + if(str.empty()) { return str; } - + #ifdef _WIN32 + if (toCharset == utf8 || toLower(toCharset, tmp) == utf8) { + return str; + } + return utf8ToAcp(str, tmp); #else return convert(str, tmp, utf8, toCharset); @@ -331,10 +339,12 @@ } const string& convert(const string& str, string& tmp, const string& fromCharset, const string& toCharset) throw() { - if(str.empty() || Util::stricmp(fromCharset, toCharset) == 0) + if(str.empty()) return str; #ifdef _WIN32 + if (Util::stricmp(fromCharset, toCharset) == 0) + return str; if(toCharset == utf8 || toLower(toCharset, tmp) == utf8) return acpToUtf8(str, tmp); if(fromCharset == utf8 || toLower(fromCharset, tmp) == utf8) Modified: dcplusplus/trunk/dcpp/Util.h =================================================================== --- dcplusplus/trunk/dcpp/Util.h 2007-12-14 16:40:43 UTC (rev 943) +++ dcplusplus/trunk/dcpp/Util.h 2007-12-14 19:50:32 UTC (rev 944) @@ -207,7 +207,7 @@ #ifdef _WIN32 return _atoi64(aString.c_str()); #else - return atoll(aString.c_str()); + return strtoll(aString.c_str(), (char **)NULL, 10); #endif } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |