int Syncler::syncDir(const string& path){ verbose("syncing directory %s\n",path.c_str()); map<string,Sync::Item>& fdir=from->getItems(path); map<string,Sync::Item>& tdir=to->getItems(path); int res=0; for (auto it=tdir.begin(); it!=tdir.end(); ++it){ if (fdir.count(it->first)==0 || it->second.directory!=fdir[it->first].directory){ it->second.removed=true; cout << "D " << it->second.path << it->second.name << endl; CHECKRES(to->removeItem(it->second)); } } vector<string> morepaths; for (auto it=fdir.begin(); it!=fdir.end(); ++it){ Sync::Item& src=it->second; if (it->second.directory){ morepaths.push_back(src.path+src.name); } if (tdir.count(it->first)==0 || tdir[it->first].removed){ cout << "A " << src.path << src.name << endl; CHECKRES(to->addItem(from->getTransfer(src))); continue; } if (it->second.directory) continue; CHECKRES(syncFile(src,tdir[it->first])); } for (string& x: morepaths){ CHECKRES(syncDir(x)); } return 0; }
int32_t gs_fifobuffer_wb64(GsFIFOBuffer* fifo, int64_t v) { int res = 0; res = gs_fifobuffer_wb32(fifo, v >> 32); CHECKRES(res); res = gs_fifobuffer_wb32(fifo, v); CHECKRES(res); return res; }
int32_t gs_fifobuffer_wb32(GsFIFOBuffer* fifo, int32_t v) { int res = 0; res = gs_fifobuffer_wb16(fifo, v >> 16); CHECKRES(res); res = gs_fifobuffer_wb16(fifo, v); CHECKRES(res); return res; }
int32_t gs_fifobuffer_wl24(GsFIFOBuffer* fifo, int32_t v) { int res = 0; res = gs_fifobuffer_w8(fifo, v); CHECKRES(res); res = gs_fifobuffer_wl16(fifo, v >> 8); CHECKRES(res); return res; }
PLUGININTERFACE int CListInitialise(PLUGINLINK * link) { pluginLink=link; /* #ifdef _DEBUG _CrtSetBreakAlloc(11166); #endif */ HMODULE hKernel = GetModuleHandleA( "kernel32.dll" ); fnTryEnterCriticalSection = ( pfnTryEnterCriticalSection )GetProcAddress( hKernel, "TryEnterCriticalSection" ); HMODULE hUser = GetModuleHandleA( "user32.dll" ); fnGetMenuBarInfo = ( pfnGetMenuBarInfo )GetProcAddress( hUser, "GetMenuBarInfo" ); fnGetScrollBarInfo = ( pfnGetScrollBarInfo )GetProcAddress( hUser, "GetScrollBarInfo" ); fnMsgWaitForMultipleObjectsEx = ( pfnMsgWaitForMultipleObjectsEx )GetProcAddress( hUser, "MsgWaitForMultipleObjectsEx" ); if (( fnGetAncestor = ( pfnGetAncestor )GetProcAddress( hUser, "GetAncestor" )) == NULL ) fnGetAncestor = MyGetAncestor; g_dwMainThreadID = GetCurrentThreadId(); DuplicateHandle(GetCurrentProcess(),GetCurrentThread(),GetCurrentProcess(),&g_hMainThread,0,FALSE,DUPLICATE_SAME_ACCESS); mir_getMMI(&mmi); mir_getUTFI(&utfi); mir_getLI(&li); mir_getTMI(&tmi); CHECKRES ( PreLoadContactListModule ( ) ); CHECKRES ( SubclassClistInterface ( ) ); CHECKRES ( CreateHookableEvents ( ) ); CHECKRES ( XPThemesLoadModule ( ) ); CHECKRES ( SkinEngineLoadModule ( ) ); CHECKRES ( BackgroundsLoadModule ( ) ); CHECKRES ( CluiLoadModule ( ) ); CHECKRES ( ClcLoadModule ( ) ); CHECKRES ( ToolbarButtonLoadModule( ) ); CHECKRES ( ToolbarLoadModule() ); TRACE( "CListInitialise Modern Contact List ... Done\r\n" ); return S_OK; }
extern "C" __declspec(dllexport) int CListInitialise() { mir_getLP( &pluginInfo ); mir_getTMI(&tmi); g_dwMainThreadID = GetCurrentThreadId(); CHECKRES ( PreLoadContactListModule ( ) ); CHECKRES ( SubclassClistInterface ( ) ); CHECKRES ( CreateHookableEvents ( ) ); CHECKRES ( XPThemesLoadModule ( ) ); CHECKRES ( SkinEngineLoadModule ( ) ); CHECKRES ( BackgroundsLoadModule ( ) ); CHECKRES ( CluiLoadModule ( ) ); CHECKRES ( ClcLoadModule ( ) ); CHECKRES ( ToolbarButtonLoadModule( ) ); CHECKRES ( ToolbarLoadModule() ); TRACE("CListInitialise Modern Contact List ... Done\r\n"); return S_OK; }
int Syncler::syncFile(Sync::Item& src,Sync::Item& dst){ bool upd=true; verbose("checking %s%s ",src.path.c_str(),src.name.c_str()); int res=0; do{ verbose("size "); if (src.size!=dst.size){ verbose("%ld -> %ld",dst.size,src.size); break; } bool compcrc=flags.compareCRC; if (flags.compareDate){ verbose("date "); //crooked nail: some mtimes in zip are mtimes-1 if (abs(src.date-dst.date)>1){ if (!flags.modifiedCrc){ verbose("%ld -> %ld",dst.date,src.date); break; } compcrc=true; } } if (compcrc){ verbose("crc "); uLong c1=0,c2=0; c1=from->getCRC(src); c2=to->getCRC(dst); if (c1!=c2){ verbose("%lu -> %lu",c2,c1); break; } } upd=false; }while(0); verbose("\n"); if (upd){ cout << "U " << src.path << src.name << endl; CHECKRES(to->updateItem(dst, from->getTransfer(src))); } return 0; }