Changeset 285


Ignore:
Timestamp:
09/10/07 16:13:58 (13 years ago)
Author:
Eoin
Message:

Torrent internals improvements.

Files:
12 edited

Legend:

Unmodified
Added
Removed
  • Halite.iss

    r283 r285  
    3838Source: bin\msvc-8.0\release\asynch-exceptions-on\runtime-link-static\threading-multi\Halite.exe; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
    3939 
    40 Source: lang\out\x86\Dutch.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
    41 Source: lang\out\x86\French.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
    42 Source: lang\out\x86\German.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
    43 Source: lang\out\x86\Italian.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
    44 Source: lang\out\x86\Norwegian.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
    45 Source: lang\out\x86\Polish.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
    46 Source: lang\out\x86\Russian.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
    47 Source: lang\out\x86\Slovenian.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
    48 Source: lang\out\x86\Turkish.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
     40Source: lang\bin\x86\Dutch.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
     41Source: lang\bin\x86\French.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
     42Source: lang\bin\x86\German.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
     43Source: lang\bin\x86\Italian.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
     44Source: lang\bin\x86\Norwegian.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
     45Source: lang\bin\x86\Polish.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
     46Source: lang\bin\x86\Russian.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
     47Source: lang\bin\x86\Slovenian.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
     48Source: lang\bin\x86\Turkish.dll; DestDir: {app}; Check: not Is64BitInstallMode; Flags: ignoreversion 32bit 
    4949 
    5050Source: bin\msvc-8.0\release\address-model-64\asynch-exceptions-on\runtime-link-static\threading-multi\Halite.exe; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
    5151 
    52 Source: lang\out\x64\Dutch.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
    53 Source: lang\out\x64\French.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
    54 Source: lang\out\x64\German.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
    55 Source: lang\out\x64\Italian.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
    56 Source: lang\out\x64\Norwegian.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
    57 Source: lang\out\x64\Polish.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
    58 Source: lang\out\x64\Russian.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
    59 Source: lang\out\x64\Slovenian.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
    60 Source: lang\out\x64\Turkish.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
     52Source: lang\bin\x64\Dutch.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
     53Source: lang\bin\x64\French.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
     54Source: lang\bin\x64\German.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
     55Source: lang\bin\x64\Italian.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
     56Source: lang\bin\x64\Norwegian.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
     57Source: lang\bin\x64\Polish.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
     58Source: lang\bin\x64\Russian.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
     59Source: lang\bin\x64\Slovenian.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
     60Source: lang\bin\x64\Turkish.dll; DestDir: {app}; Check: Is64BitInstallMode; Flags: ignoreversion 64bit 
    6161 
    6262Source: Readme.txt; DestDir: {app}; Flags: ignoreversion isreadme 
  • Halite.pnproj

    r283 r285  
    1 <Project name="Halite"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res" path="res\"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res24" path="res24\"><File path="ad.ico"></File><File path="ae.ico"></File><File path="af.ico"></File><File path="ag.ico"></File><File path="ai.ico"></File><File path="al.ico"></File><File path="am.ico"></File><File path="an.ico"></File><File path="ao.ico"></File><File path="ar.ico"></File><File path="as.ico"></File><File path="at.ico"></File><File path="au.ico"></File><File path="aw.ico"></File><File path="ax.ico"></File><File path="az.ico"></File><File path="ba.ico"></File><File path="bb.ico"></File><File path="bd.ico"></File><File path="be.ico"></File><File path="bf.ico"></File><File path="bg.ico"></File><File path="bh.ico"></File><File path="bi.ico"></File><File path="bj.ico"></File><File path="bm.ico"></File><File path="bn.ico"></File><File path="bo.ico"></File><File path="br.ico"></File><File path="bs.ico"></File><File path="bt.ico"></File><File path="bw.ico"></File><File path="by.ico"></File><File path="bz.ico"></File><File path="ca.ico"></File><File path="cc.ico"></File><File path="cd.ico"></File><File path="cf.ico"></File><File path="cg.ico"></File><File path="ch.ico"></File><File path="ci.ico"></File><File path="ck.ico"></File><File path="cl.ico"></File><File path="cm.ico"></File><File path="cn.ico"></File><File path="co.ico"></File><File path="cr.ico"></File><File path="cu.ico"></File><File path="cv.ico"></File><File path="cx.ico"></File><File path="cy.ico"></File><File path="cz.ico"></File><File path="de.ico"></File><File path="dj.ico"></File><File path="dk.ico"></File><File path="dm.ico"></File><File path="do.ico"></File><File path="dz.ico"></File><File path="ec.ico"></File><File path="ee.ico"></File><File path="eg.ico"></File><File path="eh.ico"></File><File path="er.ico"></File><File path="es.ico"></File><File path="et.ico"></File><File path="fi.ico"></File><File path="fj.ico"></File><File path="fk.ico"></File><File path="fm.ico"></File><File path="fo.ico"></File><File path="fr.ico"></File><File path="ga.ico"></File><File path="gb.ico"></File><File path="gd.ico"></File><File path="ge.ico"></File><File path="gg.ico"></File><File path="gh.ico"></File><File path="gi.ico"></File><File path="gk.ico"></File><File path="gl.ico"></File><File path="gm.ico"></File><File path="gn.ico"></File><File path="gp.ico"></File><File path="gq.ico"></File><File path="gr.ico"></File><File path="gs.ico"></File><File path="gt.ico"></File><File path="gu.ico"></File><File path="gw.ico"></File><File path="gy.ico"></File><File path="hk.ico"></File><File path="hn.ico"></File><File path="hr.ico"></File><File path="ht.ico"></File><File path="hu.ico"></File><File path="Icons.h"></File><File path="Icons.rc"></File><File path="id.ico"></File><File path="ie.ico"></File><File path="il.ico"></File><File path="im.ico"></File><File path="in.ico"></File><File path="io.ico"></File><File path="iq.ico"></File><File path="ir.ico"></File><File path="is.ico"></File><File path="it.ico"></File><File path="je.ico"></File><File path="jm.ico"></File><File path="jo.ico"></File><File path="jp.ico"></File><File path="ke.ico"></File><File path="kg.ico"></File><File path="kh.ico"></File><File path="ki.ico"></File><File path="km.ico"></File><File path="kn.ico"></File><File path="kp.ico"></File><File path="kr.ico"></File><File path="kw.ico"></File><File path="ky.ico"></File><File path="kz.ico"></File><File path="la.ico"></File><File path="lb.ico"></File><File path="lc.ico"></File><File path="li.ico"></File><File path="lk.ico"></File><File path="lr.ico"></File><File path="ls.ico"></File><File path="lt.ico"></File><File path="lu.ico"></File><File path="lv.ico"></File><File path="ly.ico"></File><File path="ma.ico"></File><File path="mc.ico"></File><File path="md.ico"></File><File path="me.ico"></File><File path="mg.ico"></File><File path="mh.ico"></File><File path="mk.ico"></File><File path="ml.ico"></File><File path="mm.ico"></File><File path="mn.ico"></File><File path="mo.ico"></File><File path="mp.ico"></File><File path="mq.ico"></File><File path="mr.ico"></File><File path="ms.ico"></File><File path="mt.ico"></File><File path="mu.ico"></File><File path="mv.ico"></File><File path="mw.ico"></File><File path="mx.ico"></File><File path="my.ico"></File><File path="mz.ico"></File><File path="na.ico"></File><File path="nc.ico"></File><File path="ne.ico"></File><File path="nf.ico"></File><File path="ng.ico"></File><File path="ni.ico"></File><File path="nl.ico"></File><File path="no.ico"></File><File path="not.ico"></File><File path="np.ico"></File><File path="nr.ico"></File><File path="nu.ico"></File><File path="nz.ico"></File><File path="om.ico"></File><File path="pa.ico"></File><File path="pe.ico"></File><File path="pf.ico"></File><File path="pg.ico"></File><File path="ph.ico"></File><File path="pk.ico"></File><File path="pl.ico"></File><File path="pm.ico"></File><File path="pn.ico"></File><File path="pr.ico"></File><File path="ps.ico"></File><File path="pt.ico"></File><File path="pw.ico"></File><File path="py.ico"></File><File path="qa.ico"></File><File path="ro.ico"></File><File path="rs.ico"></File><File path="ru.ico"></File><File path="rw.ico"></File><File path="sa.ico"></File><File path="sb.ico"></File><File path="sc.ico"></File><File path="sd.ico"></File><File path="se.ico"></File><File path="sg.ico"></File><File path="sh.ico"></File><File path="si.ico"></File><File path="sk.ico"></File><File path="sl.ico"></File><File path="sm.ico"></File><File path="sn.ico"></File><File path="so.ico"></File><File path="sr.ico"></File><File path="st.ico"></File><File path="sv.ico"></File><File path="sy.ico"></File><File path="sz.ico"></File><File path="tc.ico"></File><File path="td.ico"></File><File path="Template.rc"></File><File path="tf.ico"></File><File path="tg.ico"></File><File path="th.ico"></File><File path="tj.ico"></File><File path="tk.ico"></File><File path="tl.ico"></File><File path="tm.ico"></File><File path="tn.ico"></File><File path="to.ico"></File><File path="tr.ico"></File><File path="tt.ico"></File><File path="tv.ico"></File><File path="tw.ico"></File><File path="tz.ico"></File><File path="ua.ico"></File><File path="ug.ico"></File><File path="us.ico"></File><File path="uy.ico"></File><File path="uz.ico"></File><File path="va.ico"></File><File path="vc.ico"></File><File path="ve.ico"></File><File path="vg.ico"></File><File path="vi.ico"></File><File path="vn.ico"></File><File path="vu.ico"></File><File path="wf.ico"></File><File path="ws.ico"></File><File path="ye.ico"></File><File path="yu.ico"></File><File path="za.ico"></File><File path="zm.ico"></File><File path="zw.ico"></File></MagicFolder><File path="afxres.h"></File><File path="English.rtf"></File><File path="Halite.aps"></File><File path="Halite.ico"></File><File path="Halite.rc"></File><File path="Manifest.xml"></File><File path="resource.h"></File><File path="toolbar.bmp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="src" path="src\"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="advtabs" path="advtabs\"><File path="Debug.cpp"></File><File path="Debug.hpp"></File><File path="Files.cpp"></File><File path="Files.hpp"></File><File path="Peers.cpp"></File><File path="Peers.hpp"></File><File path="ThemeTestDialog.hpp"></File><File path="Torrent.cpp"></File><File path="Torrent.hpp"></File><File path="Tracker.cpp"></File><File path="Tracker.hpp"></File><File path="TrackerAddDialog.hpp"></File><File path="TrackerListView.cpp"></File><File path="TrackerListView.hpp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="global" path="global\"><File path="InheritEnum.hpp"></File><File path="ini.cpp"></File><File path="ini.hpp"></File><File path="ini_adapter.cpp"></File><File path="ini_adapter.hpp"></File><File path="logger.cpp"></File><File path="logger.hpp"></File><File path="string_conv.cpp"></File><File path="string_conv.hpp"></File><File path="tinyxml.cpp"></File><File path="tinyxml.hpp"></File><File path="tinyxmlerror.cpp"></File><File path="tinyxmlparser.cpp"></File><File path="unicode.hpp"></File><File path="utf8.hpp"></File><File path="wtl_app.cpp"></File><File path="wtl_app.hpp"></File></MagicFolder><File path="AdvHaliteDialog.cpp"></File><File path="AdvHaliteDialog.hpp"></File><File path="ConfigOptions.cpp"></File><File path="ConfigOptions.hpp"></File><File path="CSSFileDialog.hpp"></File><File path="DdxEx.hpp"></File><File path="DebugDialog.hpp"></File><File path="DropFileTarget.h"></File><File path="halConfig.cpp"></File><File path="halConfig.hpp"></File><File path="halEvent.cpp"></File><File path="halEvent.hpp"></File><File path="Halite.cpp"></File><File path="Halite.hpp"></File><File path="HaliteDialog.cpp"></File><File path="HaliteDialog.hpp"></File><File path="HaliteDialogBase.hpp"></File><File path="HaliteEditCtrl.hpp"></File><File path="HaliteIni.hpp"></File><File path="HaliteListManager.hpp"></File><File path="HaliteListView.cpp"></File><File path="HaliteListView.hpp"></File><File path="HaliteListViewCtrl.hpp"></File><File path="HaliteSortListViewCtrl.hpp"></File><File path="HaliteTabCtrl.hpp"></File><File path="HaliteTabPage.hpp"></File><File path="HaliteUpdateLock.hpp"></File><File path="HaliteWindow.cpp"></File><File path="HaliteWindow.hpp"></File><File path="halTorrent.cpp"></File><File path="halTorrent.hpp"></File><File path="halTorrentInternal.hpp"></File><File path="halXmlRpc.cpp"></File><File path="halXmlRpc.hpp"></File><File path="NTray.cpp"></File><File path="NTray.hpp"></File><File path="ProgressDialog.hpp"></File><File path="SimpleHtml.h"></File><File path="SplashDialog.hpp"></File><File path="SSFileDialog.hpp"></File><File path="stdAfx.cpp"></File><File path="stdAfx.hpp"></File><File path="UxthemeWrapper.cpp"></File><File path="UxthemeWrapper.hpp"></File><File path="WinAPIMutex.hpp"></File><File path="WinAPIWaitableTimer.hpp"></File></MagicFolder><File path="Jamfile.v2"></File></Project> 
     1<Project name="Halite"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res" path="res\"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res24" path="res24\"><File path="ad.ico"></File><File path="ae.ico"></File><File path="af.ico"></File><File path="ag.ico"></File><File path="ai.ico"></File><File path="al.ico"></File><File path="am.ico"></File><File path="an.ico"></File><File path="ao.ico"></File><File path="ar.ico"></File><File path="as.ico"></File><File path="at.ico"></File><File path="au.ico"></File><File path="aw.ico"></File><File path="ax.ico"></File><File path="az.ico"></File><File path="ba.ico"></File><File path="bb.ico"></File><File path="bd.ico"></File><File path="be.ico"></File><File path="bf.ico"></File><File path="bg.ico"></File><File path="bh.ico"></File><File path="bi.ico"></File><File path="bj.ico"></File><File path="bm.ico"></File><File path="bn.ico"></File><File path="bo.ico"></File><File path="br.ico"></File><File path="bs.ico"></File><File path="bt.ico"></File><File path="bw.ico"></File><File path="by.ico"></File><File path="bz.ico"></File><File path="ca.ico"></File><File path="cc.ico"></File><File path="cd.ico"></File><File path="cf.ico"></File><File path="cg.ico"></File><File path="ch.ico"></File><File path="ci.ico"></File><File path="ck.ico"></File><File path="cl.ico"></File><File path="cm.ico"></File><File path="cn.ico"></File><File path="co.ico"></File><File path="cr.ico"></File><File path="cu.ico"></File><File path="cv.ico"></File><File path="cx.ico"></File><File path="cy.ico"></File><File path="cz.ico"></File><File path="de.ico"></File><File path="dj.ico"></File><File path="dk.ico"></File><File path="dm.ico"></File><File path="do.ico"></File><File path="dz.ico"></File><File path="ec.ico"></File><File path="ee.ico"></File><File path="eg.ico"></File><File path="eh.ico"></File><File path="er.ico"></File><File path="es.ico"></File><File path="et.ico"></File><File path="fi.ico"></File><File path="fj.ico"></File><File path="fk.ico"></File><File path="fm.ico"></File><File path="fo.ico"></File><File path="fr.ico"></File><File path="ga.ico"></File><File path="gb.ico"></File><File path="gd.ico"></File><File path="ge.ico"></File><File path="gg.ico"></File><File path="gh.ico"></File><File path="gi.ico"></File><File path="gk.ico"></File><File path="gl.ico"></File><File path="gm.ico"></File><File path="gn.ico"></File><File path="gp.ico"></File><File path="gq.ico"></File><File path="gr.ico"></File><File path="gs.ico"></File><File path="gt.ico"></File><File path="gu.ico"></File><File path="gw.ico"></File><File path="gy.ico"></File><File path="hk.ico"></File><File path="hn.ico"></File><File path="hr.ico"></File><File path="ht.ico"></File><File path="hu.ico"></File><File path="Icons.h"></File><File path="Icons.rc"></File><File path="id.ico"></File><File path="ie.ico"></File><File path="il.ico"></File><File path="im.ico"></File><File path="in.ico"></File><File path="io.ico"></File><File path="iq.ico"></File><File path="ir.ico"></File><File path="is.ico"></File><File path="it.ico"></File><File path="je.ico"></File><File path="jm.ico"></File><File path="jo.ico"></File><File path="jp.ico"></File><File path="ke.ico"></File><File path="kg.ico"></File><File path="kh.ico"></File><File path="ki.ico"></File><File path="km.ico"></File><File path="kn.ico"></File><File path="kp.ico"></File><File path="kr.ico"></File><File path="kw.ico"></File><File path="ky.ico"></File><File path="kz.ico"></File><File path="la.ico"></File><File path="lb.ico"></File><File path="lc.ico"></File><File path="li.ico"></File><File path="lk.ico"></File><File path="lr.ico"></File><File path="ls.ico"></File><File path="lt.ico"></File><File path="lu.ico"></File><File path="lv.ico"></File><File path="ly.ico"></File><File path="ma.ico"></File><File path="mc.ico"></File><File path="md.ico"></File><File path="me.ico"></File><File path="mg.ico"></File><File path="mh.ico"></File><File path="mk.ico"></File><File path="ml.ico"></File><File path="mm.ico"></File><File path="mn.ico"></File><File path="mo.ico"></File><File path="mp.ico"></File><File path="mq.ico"></File><File path="mr.ico"></File><File path="ms.ico"></File><File path="mt.ico"></File><File path="mu.ico"></File><File path="mv.ico"></File><File path="mw.ico"></File><File path="mx.ico"></File><File path="my.ico"></File><File path="mz.ico"></File><File path="na.ico"></File><File path="nc.ico"></File><File path="ne.ico"></File><File path="nf.ico"></File><File path="ng.ico"></File><File path="ni.ico"></File><File path="nl.ico"></File><File path="no.ico"></File><File path="not.ico"></File><File path="np.ico"></File><File path="nr.ico"></File><File path="nu.ico"></File><File path="nz.ico"></File><File path="om.ico"></File><File path="pa.ico"></File><File path="pe.ico"></File><File path="pf.ico"></File><File path="pg.ico"></File><File path="ph.ico"></File><File path="pk.ico"></File><File path="pl.ico"></File><File path="pm.ico"></File><File path="pn.ico"></File><File path="pr.ico"></File><File path="ps.ico"></File><File path="pt.ico"></File><File path="pw.ico"></File><File path="py.ico"></File><File path="qa.ico"></File><File path="ro.ico"></File><File path="rs.ico"></File><File path="ru.ico"></File><File path="rw.ico"></File><File path="sa.ico"></File><File path="sb.ico"></File><File path="sc.ico"></File><File path="sd.ico"></File><File path="se.ico"></File><File path="sg.ico"></File><File path="sh.ico"></File><File path="si.ico"></File><File path="sk.ico"></File><File path="sl.ico"></File><File path="sm.ico"></File><File path="sn.ico"></File><File path="so.ico"></File><File path="sr.ico"></File><File path="st.ico"></File><File path="sv.ico"></File><File path="sy.ico"></File><File path="sz.ico"></File><File path="tc.ico"></File><File path="td.ico"></File><File path="Template.rc"></File><File path="tf.ico"></File><File path="tg.ico"></File><File path="th.ico"></File><File path="tj.ico"></File><File path="tk.ico"></File><File path="tl.ico"></File><File path="tm.ico"></File><File path="tn.ico"></File><File path="to.ico"></File><File path="tr.ico"></File><File path="tt.ico"></File><File path="tv.ico"></File><File path="tw.ico"></File><File path="tz.ico"></File><File path="ua.ico"></File><File path="ug.ico"></File><File path="us.ico"></File><File path="uy.ico"></File><File path="uz.ico"></File><File path="va.ico"></File><File path="vc.ico"></File><File path="ve.ico"></File><File path="vg.ico"></File><File path="vi.ico"></File><File path="vn.ico"></File><File path="vu.ico"></File><File path="wf.ico"></File><File path="ws.ico"></File><File path="ye.ico"></File><File path="yu.ico"></File><File path="za.ico"></File><File path="zm.ico"></File><File path="zw.ico"></File></MagicFolder><File path="afxres.h"></File><File path="English.rtf"></File><File path="Halite.aps"></File><File path="Halite.ico"></File><File path="Halite.rc"></File><File path="Icons.rc"></File><File path="Manifest.xml"></File><File path="resource.h"></File><File path="toolbar.bmp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="src" path="src\"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="advtabs" path="advtabs\"><File path="Debug.cpp"></File><File path="Debug.hpp"></File><File path="Files.cpp"></File><File path="Files.hpp"></File><File path="Peers.cpp"></File><File path="Peers.hpp"></File><File path="ThemeTestDialog.hpp"></File><File path="Torrent.cpp"></File><File path="Torrent.hpp"></File><File path="Tracker.cpp"></File><File path="Tracker.hpp"></File><File path="TrackerAddDialog.hpp"></File><File path="TrackerListView.cpp"></File><File path="TrackerListView.hpp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="global" path="global\"><File path="InheritEnum.hpp"></File><File path="ini.cpp"></File><File path="ini.hpp"></File><File path="ini_adapter.cpp"></File><File path="ini_adapter.hpp"></File><File path="logger.cpp"></File><File path="logger.hpp"></File><File path="string_conv.cpp"></File><File path="string_conv.hpp"></File><File path="tinyxml.cpp"></File><File path="tinyxml.hpp"></File><File path="tinyxmlerror.cpp"></File><File path="tinyxmlparser.cpp"></File><File path="unicode.hpp"></File><File path="utf8.hpp"></File><File path="wtl_app.cpp"></File><File path="wtl_app.hpp"></File></MagicFolder><File path="AdvHaliteDialog.cpp"></File><File path="AdvHaliteDialog.hpp"></File><File path="ConfigOptions.cpp"></File><File path="ConfigOptions.hpp"></File><File path="CSSFileDialog.hpp"></File><File path="DdxEx.hpp"></File><File path="DebugDialog.hpp"></File><File path="DropFileTarget.h"></File><File path="halConfig.cpp"></File><File path="halConfig.hpp"></File><File path="halEvent.cpp"></File><File path="halEvent.hpp"></File><File path="Halite.cpp"></File><File path="Halite.hpp"></File><File path="HaliteDialog.cpp"></File><File path="HaliteDialog.hpp"></File><File path="HaliteDialogBase.hpp"></File><File path="HaliteEditCtrl.hpp"></File><File path="HaliteIni.hpp"></File><File path="HaliteListManager.hpp"></File><File path="HaliteListView.cpp"></File><File path="HaliteListView.hpp"></File><File path="HaliteListViewCtrl.hpp"></File><File path="HaliteSortListViewCtrl.hpp"></File><File path="HaliteTabCtrl.hpp"></File><File path="HaliteTabPage.hpp"></File><File path="HaliteUpdateLock.hpp"></File><File path="HaliteWindow.cpp"></File><File path="HaliteWindow.hpp"></File><File path="halTorrent.cpp"></File><File path="halTorrent.hpp"></File><File path="halTorrentInternal.hpp"></File><File path="halXmlRpc.cpp"></File><File path="halXmlRpc.hpp"></File><File path="NTray.cpp"></File><File path="NTray.hpp"></File><File path="ProgressDialog.hpp"></File><File path="SimpleHtml.h"></File><File path="SplashDialog.hpp"></File><File path="SSFileDialog.hpp"></File><File path="stdAfx.cpp"></File><File path="stdAfx.hpp"></File><File path="UxthemeWrapper.cpp"></File><File path="UxthemeWrapper.hpp"></File><File path="WinAPIMutex.hpp"></File><File path="WinAPIWaitableTimer.hpp"></File></MagicFolder><File path="Jamfile.v2"></File></Project> 
  • Jamfile.v2

    r283 r285  
    3939RESOURCES = 
    4040        Halite.rc 
    41 #       Icons.rc 
    4241        ; 
    4342 
  • res/Halite.rc

    r283 r285  
    88#include "afxres.h" 
    99 
     10#include "../src/halTorrent.cpp" 
     11 
    1012STRINGTABLE  
    1113BEGIN 
     
    1315END 
    1416 
    15 IDR_ABOUT_TEXT      HALITE_RTF_RES_TYPE                    "English.rtf" 
     17IDR_ABOUT_TEXT HALITE_RTF_RES_TYPE "English.rtf" 
    1618 
    1719IDD_ADVOVERVIEW DIALOGEX 0, 0, 313, 121 
     
    467469    HAL_PORT_OPEN                 "Port %1% open" 
    468470    HAL_VERSION_STRING            HALITE_VERSION_STRING 
    469         HAL_EVENT_EXP                 "Exception caught; %1%, from %2%." 
    470         HAL_EVENT_XML_EXP             "XML exception: %1%." 
    471         HAL_EVENT_UNICODE_EXP         "Unicode exception: %1%." 
    472         HAL_EVENT_UNCLASSIFIED            "Bittorrent Event: %1%." 
    473         HAL_EVENT_PEER                            "Peer Event: %1%." 
    474         HAL_EVENT_TRACKER                         "Tracker Event: %1%." 
    475         HAL_EVENT_DEBUG                           "Debug Event: %1%." 
    476471        HAL_FOLDER_SELECT                         "Select a directory to save the downloads to. Select cancel to accept default 'incoming' location." 
    477472        HAL_TORRENT_TAB                           "Torrent" 
     
    575570IDR_APP_ICON        ICON          "Halite.ico" 
    576571IDR_MAINFRAME       BITMAP        "toolbar.bmp" 
     572 
     573STRINGTABLE  
     574BEGIN 
     575        LBT_EVENT_TORRENT_FINISHED    "Torrent %1% finished." 
     576        HAL_EVENT_XML_EXP             "XML exception: %1%." 
     577        HAL_EVENT_UNICODE_EXP         "Unicode exception: %1%." 
     578        HAL_EVENT_UNCLASSIFIED            "Bittorrent Event: %1%." 
     579        HAL_EVENT_PEER                            "Peer Event: %1%." 
     580        HAL_EVENT_TRACKER                         "Tracker Event: %1%." 
     581        HAL_EVENT_DEBUG                           "Debug Event: %1%." 
     582END 
  • res/resource.h

    r283 r285  
    280280#define IDC_SEEDS                                               40122 
    281281#define IDC_OVERHEAD                                    40123 
    282 //#define IDC_ETA                                                       40124 
    283 //#define IDC_RATIO                                             40125 
    284          
    285 //#define IDC_NAME_STATUS                                       40126 
    286282#define IDC_PEERS                                               40127 
    287 //#define IDC_TRANSFERED                                        40128 
    288283#define IDD_ADVFILES                                    40129 
    289284#define IDC_CONTAINER                                   40130 
  • src/Halite.cpp

    r268 r285  
    44//    (See accompanying file LICENSE_1_0.txt or copy at 
    55//          http://www.boost.org/LICENSE_1_0.txt) 
    6     
     6 
     7#define HALITE_GUID L"HALITE-{E3A8BF7D-962F-476E-886B-FECEDD2F0FC7}" 
     8#define WMU_ARE_YOU_ME_STRING  L"WMU_ARE_YOU_ME_HALITE-{E3A8BF7D-962F-476E-886B-FECEDD2F0FC7}" 
     9#pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") 
     10 
    711#include "stdAfx.hpp" 
    812#include "WinAPIMutex.hpp" 
  • src/HaliteDialog.cpp

    r268 r285  
    1616 
    1717HaliteDialog::HaliteDialog(HaliteWindow& halWindow) : 
    18                 dialogBaseClass(halWindow) 
     18        dialogBaseClass(halWindow) 
    1919{} 
    2020 
  • src/HaliteTabPage.hpp

    r268 r285  
    1818                MSG_WM_CTLCOLORDLG(OnCltColorDlg) 
    1919                MSG_WM_CTLCOLORBTN(OnCltColor) 
    20 //              MSG_WM_CTLCOLOREDIT(OnCltColor) 
     20//              MSG_WM_CTLCOLOREDIT(OnCltColorEdit) 
    2121                MSG_WM_CTLCOLORSTATIC(OnCltColor) 
    2222 
     
    4343        } 
    4444         
     45 
    4546        LRESULT OnCltColorDlg(HDC hDC, HWND hWnd) 
    4647        { 
     
    8182                return (LRESULT)::GetStockObject(HOLLOW_BRUSH); 
    8283        } 
     84         
     85        LRESULT OnCltColorEdit(HDC hDC, HWND hWnd) 
     86        { 
     87                SetMsgHandled(true); 
     88 
     89    SetTextColor(hDC, RGB(255,0,0));            // red 
     90   // SetBkColor(hDC, RGB(255,255,0));            // yellow 
     91    return (LRESULT)::GetSysColorBrush(COLOR_WINDOW);   // hilight colour 
     92 
     93        } 
    8394}; 
  • src/halEvent.hpp

    r281 r285  
    77#pragma once 
    88 
     9#ifndef RC_INVOKED 
     10 
    911#include <string> 
    1012#include <vector> 
     
    2628         
    2729        enum codes { 
     30                noEvent = 0, 
    2831                unclassified = HAL_EVENT_UNCLASSIFIED, 
    2932                debugEvent = HAL_EVENT_DEBUG, 
     
    103106        {} 
    104107         
    105         virtual std::wstring msg() 
    106         { 
    107                 return (wformat(hal::app().res_wstr(code())) % msg_).str(); 
     108        EventGeneral(Event::eventLevel l, boost::posix_time::ptime t, std::wstring m) : 
     109                EventDetail(l, t, Event::noEvent), 
     110                msg_(m) 
     111        {} 
     112         
     113        EventGeneral(Event::eventLevel l, boost::posix_time::ptime t, wformat f) : 
     114                EventDetail(l, t, Event::noEvent), 
     115                msg_(f.str()) 
     116        {} 
     117         
     118        virtual std::wstring msg() 
     119        { 
     120                if (Event::noEvent != code()) 
     121                        return (wformat(hal::app().res_wstr(code())) % msg_).str(); 
     122                else 
     123                        return msg_; 
    108124        } 
    109125         
     
    244260}; 
    245261 
     262 
    246263}// namespace hal 
     264 
     265#endif 
  • src/halTorrent.cpp

    r282 r285  
    44//    (See accompanying file LICENSE_1_0.txt or copy at 
    55//          http://www.boost.org/LICENSE_1_0.txt) 
     6 
     7#define LBT_EVENT_TORRENT_FINISHED                                      80001 
     8 
     9#ifndef RC_INVOKED 
    610 
    711#include "stdAfx.hpp" 
     
    432436                timer_.async_wait(bind(&BitTorrent_impl::pop_alerts, this)); 
    433437        } 
     438         
     439        struct 
     440        { 
     441                /*      event().post(shared_ptr<EventDetail>( 
     442                                new EventPeerAlert(lbtAlertToHalEvent(p_alert->severity()),  
     443                                        p_alert->timestamp(), hal::str_to_wstr(p_alert->msg()))));                       
     444                } 
     445                else 
     446                { 
     447                        event().post(shared_ptr<EventDetail>( 
     448                                new EventLibtorrent(lbtAlertToHalEvent(p_alert->severity()),  
     449                                        p_alert->timestamp(), Event::unclassified, hal::str_to_wstr(p_alert->msg())))); 
     450                                                         
     451*/ 
     452/*              void operator()(lbt::tracker_warning_alert const& a) 
     453                { 
     454                        std::cout << "Tracker warning: " << a.msg << std::endl; 
     455                } 
     456*/ 
     457                void operator()(lbt::torrent_finished_alert const& a) 
     458                { 
     459                        event().post(shared_ptr<EventDetail>( 
     460                                new EventGeneral(Event::info, a.timestamp(), 
     461                                        wformat(hal::app().res_wstr(LBT_EVENT_TORRENT_FINISHED))  
     462                                                % hal::from_utf8(a.handle.get_torrent_info().name()) 
     463                        )       )       );                       
     464                } 
     465                 
     466        } alertHandler_; 
    434467         
    435468        lbt::entry prepTorrent(wpath filename, wpath saveDirectory); 
     
    9991032        torrentsContainer.reserve(pimpl->torrents.size()); 
    10001033         
    1001         for (TorrentMap::const_iterator i=pimpl->torrents.begin(), e=pimpl->torrents.end(); i != e; ++i) 
     1034        for (TorrentMap::iterator i=pimpl->torrents.begin(), e=pimpl->torrents.end(); i != e; ++i) 
    10021035        { 
    10031036                torrentsContainer.push_back((*i).second.getTorrentDetail_ptr()); 
     
    10111044        try { 
    10121045         
    1013         TorrentMap::const_iterator i = pimpl->torrents.find(filename); 
     1046        TorrentMap::iterator i = pimpl->torrents.find(filename); 
    10141047         
    10151048        if (i != pimpl->torrents.end()) 
     
    10431076        torrentDetails_.torrents_.reserve(pimpl->torrents.size()); 
    10441077         
    1045         for (TorrentMap::const_iterator i=pimpl->torrents.begin(), e=pimpl->torrents.end(); i != e; ++i) 
     1078        for (TorrentMap::iterator i=pimpl->torrents.begin(), e=pimpl->torrents.end(); i != e; ++i) 
    10461079        {        
    10471080                string utf8Filename = hal::to_utf8((*i).second.filename()); 
     
    16361669         
    16371670}; 
     1671 
     1672#endif 
  • src/halTorrentInternal.hpp

    r282 r285  
    145145        {} 
    146146         
    147         TorrentDetail_ptr getTorrentDetail_ptr() const; 
     147        TorrentDetail_ptr getTorrentDetail_ptr(); 
    148148        void setTransferSpeed(float down, float up); 
    149149        void setConnectionLimit(int maxConn, int maxUpload); 
    150         void setTransferSpeed(); 
    151         void setConnectionLimit(); 
    152150        pair<float, float> getTransferSpeed(); 
    153151        pair<int, int> getConnectionLimit(); 
     
    156154        {  
    157155                if (ratio < 0) ratio = 0; 
    158                  
    159                 handle_.set_ratio(ratio); 
    160156                ratio_ = ratio;  
    161         } 
    162          
    163         void setRatio() 
    164         {                
    165                 handle_.set_ratio(ratio_); 
     157                 
     158                applyRatio(); 
    166159        } 
    167160         
     
    171164        } 
    172165         
    173         void setResolveCountries() 
    174         { 
    175                 handle_.resolve_countries(resolve_countries_); 
    176         } 
    177          
    178166        void addToSession() 
    179167        { 
     
    182170                        string dir = to_utf8(save_directory_); 
    183171                         
    184         //              if (lbt::supports_sparse_files(dir)) 
    185         //                      event().post(shared_ptr<EventDetail>(new EventInfo(L"True."))); 
    186         //              else 
    187         //                      event().post(shared_ptr<EventDetail>(new EventInfo(L"False."))); 
    188                                          
    189172                        handle_ = the_session_->add_torrent(metadata_,  
    190173                                dir, resumedata_, 
     
    196179        } 
    197180         
     181        bool inSession() const  
     182        {  
     183                return (in_session_ && the_session_);  
     184        } 
     185         
    198186        void resume() 
    199187        { 
     
    240228        unsigned state() const { return state_; } 
    241229         
    242         void setTrackerLogin() 
    243         { 
    244                 if (trackerUsername_ != L"") 
    245                 { 
    246                         handle_.set_tracker_login(hal::to_utf8(trackerUsername_), 
    247                                 hal::to_utf8(trackerPassword_)); 
    248                 } 
    249         } 
    250          
    251230        void setTrackerLogin(wstring username, wstring password) 
    252231        { 
    253232                trackerUsername_ = username; 
    254233                trackerPassword_ = password; 
    255                 setTrackerLogin(); 
     234                 
     235                applyTrackerLogin(); 
    256236        }        
    257237         
     
    273253        void resetTrackers() 
    274254        { 
    275                 handle_.replace_trackers(torrent_trackers_);             
    276                 trackers_.clear();       
     255                if (inSession()) 
     256                { 
     257                        handle_.replace_trackers(torrent_trackers_);             
     258                        trackers_.clear(); 
     259                } 
    277260        } 
    278261         
    279262        const std::vector<TrackerDetail>& getTrackers() 
    280263        { 
    281                 if (trackers_.empty()) 
     264                if (inSession() && trackers_.empty()) 
    282265                { 
    283266                        std::vector<lbt::announce_entry> trackers = handle_.trackers(); 
     
    292275        } 
    293276         
    294         void applyTrackers() 
    295         { 
    296                 if (torrent_trackers_.empty()) 
    297                         torrent_trackers_ = handle_.trackers(); 
    298                  
    299                 if (!trackers_.empty()) 
    300                 { 
    301                         std::vector<lbt::announce_entry> trackers; 
    302                          
    303                         foreach (const TrackerDetail& tracker, trackers_) 
    304                         { 
    305                                 trackers.push_back( 
    306                                         lbt::announce_entry(hal::to_utf8(tracker.url))); 
    307                                 trackers.back().tier = tracker.tier; 
    308                         } 
    309                         handle_.replace_trackers(trackers); 
    310                 } 
    311         } 
    312          
    313277        void setTrackers(const std::vector<TrackerDetail>& trackerDetails) 
    314278        { 
     
    329293                } 
    330294        } 
    331          
    332         void applyFilePriorities() 
    333         {                
    334                 if (in_session_ && the_session_)  
    335                 { 
    336                         if (!filePriorities_.empty()) 
    337                                 handle_.prioritize_files(filePriorities_); 
    338                 } 
    339         } 
    340  
    341         bool inSession() const { return in_session_; } 
     295 
    342296        const wstring& saveDirectory() { return save_directory_; } 
    343297         
     
    393347                resumedata_ = resumedata; 
    394348        } 
    395          
    396         void applySettings() 
    397         {                
    398                 setTransferSpeed(); 
    399                 setConnectionLimit(); 
    400                 setRatio(); 
    401                 applyTrackers(); 
    402                 applyFilePriorities(); 
    403                 setResolveCountries(); 
    404         } 
    405          
     349 
    406350        std::vector<lbt::peer_info>& peers() { return peers_; } 
    407351         
    408         void updatePeers() const 
    409         { 
    410                 if (in_session_) 
     352        void updatePeers() 
     353        { 
     354                if (inSession()) 
    411355                        handle_.get_peer_info(peers_); 
    412356                else 
     
    423367        } 
    424368 
    425         void getFileDetails(FileDetails& fileDetails) const 
    426         { 
    427                 if (in_session_) 
     369        void getFileDetails(FileDetails& fileDetails) 
     370        { 
     371                if (inSession()) 
    428372                { 
    429373                        lbt::torrent_info info = handle_.get_torrent_info(); 
     
    451395        } 
    452396 
    453 private: 
     397private:                 
     398        void applySettings() 
     399        {                
     400                applyTransferSpeed(); 
     401                applyConnectionLimit(); 
     402                applyRatio(); 
     403                applyTrackers(); 
     404                applyTrackerLogin(); 
     405                applyFilePriorities(); 
     406                applyResolveCountries(); 
     407        } 
     408         
     409        void applyTransferSpeed() 
     410        { 
     411                if (inSession()) 
     412                { 
     413                        int down = (transferLimit_.first > 0) ? static_cast<int>(transferLimit_.first*1024) : -1; 
     414                        handle_.set_download_limit(down); 
     415                         
     416                        int up = (transferLimit_.second > 0) ? static_cast<int>(transferLimit_.second*1024) : -1; 
     417                        handle_.set_upload_limit(up); 
     418                } 
     419        } 
     420 
     421        void applyConnectionLimit() 
     422        { 
     423                if (inSession()) 
     424                { 
     425                        handle_.set_max_connections(connections_); 
     426                        handle_.set_max_uploads(uploads_); 
     427                } 
     428        } 
     429         
     430        void applyRatio() 
     431        {  
     432                if (inSession()) 
     433                        handle_.set_ratio(ratio_); 
     434        } 
     435         
     436        void applyTrackers() 
     437        { 
     438                if (inSession()) 
     439                { 
     440                        if (torrent_trackers_.empty()) 
     441                                torrent_trackers_ = handle_.trackers(); 
     442                         
     443                        if (!trackers_.empty()) 
     444                        { 
     445                                std::vector<lbt::announce_entry> trackers; 
     446                                 
     447                                foreach (const TrackerDetail& tracker, trackers_) 
     448                                { 
     449                                        trackers.push_back( 
     450                                                lbt::announce_entry(hal::to_utf8(tracker.url))); 
     451                                        trackers.back().tier = tracker.tier; 
     452                                } 
     453                                handle_.replace_trackers(trackers); 
     454                        } 
     455                } 
     456        } 
     457         
     458        void applyTrackerLogin() 
     459        { 
     460                if (inSession()) 
     461                { 
     462                        if (trackerUsername_ != L"") 
     463                        { 
     464                                handle_.set_tracker_login(hal::to_utf8(trackerUsername_), 
     465                                        hal::to_utf8(trackerPassword_)); 
     466                        } 
     467                } 
     468        } 
     469         
     470        void applyFilePriorities() 
     471        {                
     472                if (inSession())  
     473                { 
     474                        if (!filePriorities_.empty()) 
     475                                handle_.prioritize_files(filePriorities_); 
     476                } 
     477        }        
     478         
     479        void applyResolveCountries() 
     480        { 
     481                if (inSession()) 
     482                        handle_.resolve_countries(resolve_countries_); 
     483        } 
     484         
    454485        static libtorrent::session* the_session_; 
    455486         
     
    465496        std::wstring filename_; 
    466497        std::wstring save_directory_; 
    467         mutable libtorrent::torrent_handle handle_;      
     498        libtorrent::torrent_handle handle_;      
    468499         
    469500        libtorrent::entry metadata_; 
     
    473504        std::wstring trackerPassword_; 
    474505         
    475         mutable boost::int64_t totalUploaded_; 
    476         mutable boost::int64_t totalBase_; 
     506        boost::int64_t totalUploaded_; 
     507        boost::int64_t totalBase_; 
    477508         
    478509        TransferTracker<boost::int64_t> payloadUploaded_; 
     
    487518        std::vector<TrackerDetail> trackers_; 
    488519        std::vector<lbt::announce_entry> torrent_trackers_; 
    489         mutable std::vector<lbt::peer_info> peers_;      
    490         mutable std::vector<int> filePriorities_; 
    491          
    492         mutable lbt::torrent_status statusMemory_; 
     520        std::vector<lbt::peer_info> peers_;      
     521        std::vector<int> filePriorities_; 
     522         
     523        lbt::torrent_status statusMemory_; 
    493524}; 
    494525 
     
    498529void TorrentInternal::setConnectionLimit(int maxConn, int maxUpload) 
    499530{ 
    500         handle_.set_max_connections(maxConn); 
    501         handle_.set_max_uploads(maxUpload); 
    502  
    503531        connections_ =  maxConn; 
    504532        uploads_ = maxUpload; 
    505 } 
    506  
    507 void TorrentInternal::setConnectionLimit() 
    508 { 
    509         handle_.set_max_connections(connections_); 
    510         handle_.set_max_uploads(uploads_); 
     533         
     534        applyConnectionLimit(); 
    511535} 
    512536 
     
    517541 
    518542void TorrentInternal::setTransferSpeed(float download, float upload) 
    519 { 
    520         int down = (download > 0) ? static_cast<int>(download*1024) : -1; 
    521         handle_.set_download_limit(down); 
    522         int up = (upload > 0) ? static_cast<int>(upload*1024) : -1; 
    523         handle_.set_upload_limit(up); 
    524          
     543{        
    525544        transferLimit_ = make_pair(download, upload); 
    526 } 
    527  
    528 void TorrentInternal::setTransferSpeed() 
    529 { 
    530         int down = (transferLimit_.first > 0) ? static_cast<int>(transferLimit_.first*1024) : -1; 
    531         handle_.set_download_limit(down); 
    532         int up = (transferLimit_.second > 0) ? static_cast<int>(transferLimit_.second*1024) : -1; 
    533         handle_.set_upload_limit(up); 
     545         
     546        applyTransferSpeed(); 
    534547} 
    535548 
     
    539552} 
    540553 
    541 TorrentDetail_ptr TorrentInternal::getTorrentDetail_ptr() const 
     554TorrentDetail_ptr TorrentInternal::getTorrentDetail_ptr() 
    542555{        
    543556        try 
  • src/stdAfx.hpp

    r268 r285  
    1717#endif 
    1818 
    19 #define HALITE_GUID L"HALITE-{E3A8BF7D-962F-476E-886B-FECEDD2F0FC7}" 
    20 #define WMU_ARE_YOU_ME_STRING  L"WMU_ARE_YOU_ME_HALITE-{E3A8BF7D-962F-476E-886B-FECEDD2F0FC7}" 
    2119#define HALITE_SENDING_CMD 68816889 
    22  
    23 #pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") 
    2420 
    2521#include <winsock2.h> 
Note: See TracChangeset for help on using the changeset viewer.