|
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.
|