summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2005-07-25 22:45:28 (UTC)
committer Michael Krelin <hacker@klever.net>2005-07-25 22:45:28 (UTC)
commitd2f4327f3752ff30c3b0ec7fdd2e63bc1a1db5ee (patch) (unidiff)
tree1b5ddc636cee876fac8e90eb78ca3546a1a631b1
parent10639b71121a3fe7de24fe141d8dbe399fa283ff (diff)
downloaddipstick-d2f4327f3752ff30c3b0ec7fdd2e63bc1a1db5ee.zip
dipstick-d2f4327f3752ff30c3b0ec7fdd2e63bc1a1db5ee.tar.gz
dipstick-d2f4327f3752ff30c3b0ec7fdd2e63bc1a1db5ee.tar.bz2
added ability to parse multiple urls from plaintext selection and bumped versions
git-svn-id: http://svn.klever.net/kin/dipstick/trunk@126 fe716a7a-6dde-0310-88d9-d003556173a8
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--COPYING2
-rw-r--r--DipstickDlg.cpp62
-rw-r--r--DipstickDlg.h2
-rw-r--r--dipstick.rc24
-rw-r--r--help/dipstick.rtf4
-rw-r--r--help/dipstick.xml5
-rw-r--r--install/install.cpp2
-rw-r--r--install/install.rc10
-rw-r--r--resource.h1
-rw-r--r--stdafx.h3
10 files changed, 83 insertions, 32 deletions
diff --git a/COPYING b/COPYING
index 427b0ba..fa23ff9 100644
--- a/COPYING
+++ b/COPYING
@@ -1,19 +1,19 @@
1Copyright (c) 1996-2004 Klever Group (http://www.klever.net/) 1Copyright (c) 1996-2005 Klever Group (http://www.klever.net/)
2 2
3Permission is hereby granted, free of charge, to any person obtaining a copy of 3Permission is hereby granted, free of charge, to any person obtaining a copy of
4this software and associated documentation files (the "Software"), to deal in 4this software and associated documentation files (the "Software"), to deal in
5the Software without restriction, including without limitation the rights to 5the Software without restriction, including without limitation the rights to
6use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 6use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7of the Software, and to permit persons to whom the Software is furnished to do 7of the Software, and to permit persons to whom the Software is furnished to do
8so, subject to the following conditions: 8so, subject to the following conditions:
9 9
10The above copyright notice and this permission notice shall be included in all 10The above copyright notice and this permission notice shall be included in all
11copies or substantial portions of the Software. 11copies or substantial portions of the Software.
12 12
13THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 13THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 14IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 15FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 16AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 17LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 18OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19SOFTWARE. 19SOFTWARE.
diff --git a/DipstickDlg.cpp b/DipstickDlg.cpp
index ace2aff..f27b219 100644
--- a/DipstickDlg.cpp
+++ b/DipstickDlg.cpp
@@ -84,78 +84,81 @@ WORD hi,lo;
84 lo=app->GetProfileInt("Options","IntervalLo",LOWORD(m_Interval)); 84 lo=app->GetProfileInt("Options","IntervalLo",LOWORD(m_Interval));
85 m_Interval=MAKELONG(lo,hi); 85 m_Interval=MAKELONG(lo,hi);
86 m_MaxThreads=app->GetProfileInt("Options","MaxThreads",m_MaxThreads); 86 m_MaxThreads=app->GetProfileInt("Options","MaxThreads",m_MaxThreads);
87 m_PingSize=app->GetProfileInt("Options","PingSize",m_PingSize); 87 m_PingSize=app->GetProfileInt("Options","PingSize",m_PingSize);
88 m_PingsPerHost=app->GetProfileInt("Options","PingsPerHost",m_PingsPerHost); 88 m_PingsPerHost=app->GetProfileInt("Options","PingsPerHost",m_PingsPerHost);
89 m_SortCriteria=app->GetProfileInt("Options","SortBy",m_SortCriteria); 89 m_SortCriteria=app->GetProfileInt("Options","SortBy",m_SortCriteria);
90 hi=app->GetProfileInt("Options","TimeOutHi",HIWORD(m_TimeOut)); 90 hi=app->GetProfileInt("Options","TimeOutHi",HIWORD(m_TimeOut));
91 lo=app->GetProfileInt("Options","TimeOutLo",LOWORD(m_TimeOut)); 91 lo=app->GetProfileInt("Options","TimeOutLo",LOWORD(m_TimeOut));
92 m_TimeOut=MAKELONG(lo,hi); 92 m_TimeOut=MAKELONG(lo,hi);
93 m_bMSWorkAround = app->GetProfileInt("Options","InnermostURL",m_bMSWorkAround); 93 m_bMSWorkAround = app->GetProfileInt("Options","InnermostURL",m_bMSWorkAround);
94 m_bAutoBest = app->GetProfileInt("Options","AutoBest",m_bAutoBest); 94 m_bAutoBest = app->GetProfileInt("Options","AutoBest",m_bAutoBest);
95 m_bSmartAdjust = app->GetProfileInt("Options","SmartAdjust",m_bSmartAdjust); 95 m_bSmartAdjust = app->GetProfileInt("Options","SmartAdjust",m_bSmartAdjust);
96 m_bAdjustInnermost = app->GetProfileInt("Options","AdjustInnermost",m_bAdjustInnermost); 96 m_bAdjustInnermost = app->GetProfileInt("Options","AdjustInnermost",m_bAdjustInnermost);
97 m_bIgnorelative = app->GetProfileInt("Options","IgnoreRelative",m_bIgnorelative); 97 m_bIgnorelative = app->GetProfileInt("Options","IgnoreRelative",m_bIgnorelative);
98 m_impexPath = app->GetProfileString("Options","ImportExportPath",m_impexPath); 98 m_impexPath = app->GetProfileString("Options","ImportExportPath",m_impexPath);
99 //{{AFX_DATA_INIT(CDipstickDlg) 99 //{{AFX_DATA_INIT(CDipstickDlg)
100 //}}AFX_DATA_INIT 100 //}}AFX_DATA_INIT
101 // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 101 // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
102 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 102 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
103 m_bmpBack.LoadBitmap(IDB_DIABACK); 103 m_bmpBack.LoadBitmap(IDB_DIABACK);
104 m_bmpBack.GetBitmap(&m_bitmapBack); 104 m_bmpBack.GetBitmap(&m_bitmapBack);
105CString tmp; 105CString tmp;
106 VERIFY(tmp.LoadString(IDS_REGEX_HTMLURL)); 106 VERIFY(tmp.LoadString(IDS_REGEX_HTMLURL));
107 VERIFY(m_reHTMLURL.Compile(tmp,CRegEx::regExtended|CRegEx::regIgnoreCase)); 107 VERIFY(m_reHTMLURL.Compile(tmp,CRegEx::regExtended|CRegEx::regIgnoreCase));
108 VERIFY(tmp.LoadString(IDS_REGEX_URL));
109 VERIFY(m_reURL.Compile(tmp,CRegEx::regExtended|CRegEx::regIgnoreCase));
108} 110}
109 111
110CDipstickDlg::~CDipstickDlg() 112CDipstickDlg::~CDipstickDlg()
111{ 113{
112} 114}
113 115
114void CDipstickDlg::DoDataExchange(CDataExchange* pDX) 116void CDipstickDlg::DoDataExchange(CDataExchange* pDX)
115{ 117{
116 CDialog::DoDataExchange(pDX); 118 CDialog::DoDataExchange(pDX);
117 //{{AFX_DATA_MAP(CDipstickDlg) 119 //{{AFX_DATA_MAP(CDipstickDlg)
118 DDX_Control(pDX, IDC_ADVANCED, m_AdvancedCtl); 120 DDX_Control(pDX, IDC_ADVANCED, m_AdvancedCtl);
119 DDX_Control(pDX, ID_HELP, m_HelpCtl); 121 DDX_Control(pDX, ID_HELP, m_HelpCtl);
120 DDX_Control(pDX, IDC_EXIT, m_ExitCtl); 122 DDX_Control(pDX, IDC_EXIT, m_ExitCtl);
121 DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); 123 DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl);
122 DDX_Control(pDX, IDC_MANUALPING, m_ManualPingCtl); 124 DDX_Control(pDX, IDC_MANUALPING, m_ManualPingCtl);
123 DDX_Control(pDX, IDC_REMOVE, m_RemoveCtl); 125 DDX_Control(pDX, IDC_REMOVE, m_RemoveCtl);
124 DDX_Control(pDX, IDC_REPINGALL, m_RepingAllCtl); 126 DDX_Control(pDX, IDC_REPINGALL, m_RepingAllCtl);
125 DDX_Control(pDX, IDC_REPING, m_RepingCtl); 127 DDX_Control(pDX, IDC_REPING, m_RepingCtl);
126 DDX_Control(pDX, IDC_CLEAR, m_ClearListCtl); 128 DDX_Control(pDX, IDC_CLEAR, m_ClearListCtl);
127 DDX_Control(pDX, IDC_HOSTLIST, m_HostList); 129 DDX_Control(pDX, IDC_HOSTLIST, m_HostList);
128 //}}AFX_DATA_MAP 130 //}}AFX_DATA_MAP
129} 131}
130 132
131BEGIN_MESSAGE_MAP(CDipstickDlg, CDialog) 133BEGIN_MESSAGE_MAP(CDipstickDlg, CDialog)
132 //{{AFX_MSG_MAP(CDipstickDlg) 134 //{{AFX_MSG_MAP(CDipstickDlg)
133 ON_WM_SYSCOMMAND() 135 ON_WM_SYSCOMMAND()
134 ON_WM_PAINT() 136 ON_WM_PAINT()
135 ON_WM_QUERYDRAGICON() 137 ON_WM_QUERYDRAGICON()
136 ON_WM_DESTROY() 138 ON_WM_DESTROY()
137 ON_BN_CLICKED(IDC_OPTIONS, OnOptions) 139 ON_BN_CLICKED(IDC_OPTIONS, OnOptions)
140 ON_MESSAGE(WM_DNP_URLSPING, OnURLSPing)
138 ON_MESSAGE(WM_DNP_URLPING, OnUrlPing) 141 ON_MESSAGE(WM_DNP_URLPING, OnUrlPing)
139 ON_MESSAGE(WM_DNP_ACTIVITYCOUNT, OnActivityCount) 142 ON_MESSAGE(WM_DNP_ACTIVITYCOUNT, OnActivityCount)
140 ON_MESSAGE(WM_DNP_UPDATEHOSTDATA, OnUpdateHostData) 143 ON_MESSAGE(WM_DNP_UPDATEHOSTDATA, OnUpdateHostData)
141 ON_MESSAGE(WM_DNP_HTML, OnHTMLTransfer) 144 ON_MESSAGE(WM_DNP_HTML, OnHTMLTransfer)
142 ON_NOTIFY(LVN_COLUMNCLICK, IDC_HOSTLIST, OnColumnclickHostlist) 145 ON_NOTIFY(LVN_COLUMNCLICK, IDC_HOSTLIST, OnColumnclickHostlist)
143 ON_WM_WINDOWPOSCHANGING() 146 ON_WM_WINDOWPOSCHANGING()
144 ON_COMMAND(ID_DRAGPAD_OPTIONS, OnDragpadOptions) 147 ON_COMMAND(ID_DRAGPAD_OPTIONS, OnDragpadOptions)
145 ON_COMMAND(ID_DRAGPAD_SHOWMAINWINDOW, OnDragpadShowmainwindow) 148 ON_COMMAND(ID_DRAGPAD_SHOWMAINWINDOW, OnDragpadShowmainwindow)
146 ON_COMMAND(ID_DRAGPAD_HELP, OnDragpadHelp) 149 ON_COMMAND(ID_DRAGPAD_HELP, OnDragpadHelp)
147 ON_COMMAND(ID_DRAGPAD_ABOUT, OnDragpadAbout) 150 ON_COMMAND(ID_DRAGPAD_ABOUT, OnDragpadAbout)
148 ON_COMMAND(ID_DRAGPAD_EXIT, OnDragpadExit) 151 ON_COMMAND(ID_DRAGPAD_EXIT, OnDragpadExit)
149 ON_BN_CLICKED(IDC_MANUALPING, OnManualping) 152 ON_BN_CLICKED(IDC_MANUALPING, OnManualping)
150 ON_COMMAND(ID_DRAGPAD_MANUALPING, OnDragpadManualping) 153 ON_COMMAND(ID_DRAGPAD_MANUALPING, OnDragpadManualping)
151 ON_COMMAND(ID_DRAGPAD_REPINGALL, OnDragpadRepingAll) 154 ON_COMMAND(ID_DRAGPAD_REPINGALL, OnDragpadRepingAll)
152 ON_COMMAND(ID_DRAGPAD_REMOVEALL, OnDragpadRemoveAll) 155 ON_COMMAND(ID_DRAGPAD_REMOVEALL, OnDragpadRemoveAll)
153 ON_BN_CLICKED(IDC_REPING, OnReping) 156 ON_BN_CLICKED(IDC_REPING, OnReping)
154 ON_BN_CLICKED(IDC_REPINGALL, OnRepingall) 157 ON_BN_CLICKED(IDC_REPINGALL, OnRepingall)
155 ON_BN_CLICKED(IDC_CLEAR, OnClear) 158 ON_BN_CLICKED(IDC_CLEAR, OnClear)
156 ON_NOTIFY(LVN_INSERTITEM, IDC_HOSTLIST, OnInsertitemHostlist) 159 ON_NOTIFY(LVN_INSERTITEM, IDC_HOSTLIST, OnInsertitemHostlist)
157 ON_NOTIFY(LVN_DELETEITEM, IDC_HOSTLIST, OnDeleteitemHostlist) 160 ON_NOTIFY(LVN_DELETEITEM, IDC_HOSTLIST, OnDeleteitemHostlist)
158 ON_NOTIFY(LVN_DELETEALLITEMS, IDC_HOSTLIST, OnDeleteallitemsHostlist) 161 ON_NOTIFY(LVN_DELETEALLITEMS, IDC_HOSTLIST, OnDeleteallitemsHostlist)
159 ON_BN_CLICKED(IDC_EXIT, OnExit) 162 ON_BN_CLICKED(IDC_EXIT, OnExit)
160 ON_NOTIFY(LVN_ITEMCHANGED, IDC_HOSTLIST, OnItemchangedHostlist) 163 ON_NOTIFY(LVN_ITEMCHANGED, IDC_HOSTLIST, OnItemchangedHostlist)
161 ON_BN_CLICKED(IDC_REMOVE, OnRemove) 164 ON_BN_CLICKED(IDC_REMOVE, OnRemove)
@@ -1164,120 +1167,159 @@ UINT cfNIF = RegisterClipboardFormat("Netscape Image Format");
1164 break; 1167 break;
1165 if(!(subs=strstr(lps,strSourceURL))) 1168 if(!(subs=strstr(lps,strSourceURL)))
1166 break; 1169 break;
1167 subs = &subs[strlen(strSourceURL)]; 1170 subs = &subs[strlen(strSourceURL)];
1168 LPTSTR eol = strchr(subs,'\r'); 1171 LPTSTR eol = strchr(subs,'\r');
1169 if(!eol) 1172 if(!eol)
1170 break; 1173 break;
1171 (*eol)=0; 1174 (*eol)=0;
1172 CString sourceURL = subs; 1175 CString sourceURL = subs;
1173 if(!sourceURL.GetLength()) 1176 if(!sourceURL.GetLength())
1174 break; 1177 break;
1175 TRACE0("SourceURL = "+sourceURL+"\n"); 1178 TRACE0("SourceURL = "+sourceURL+"\n");
1176 _xferHTML* xf = new _xferHTML; 1179 _xferHTML* xf = new _xferHTML;
1177 VERIFY(xf->src.Crack(sourceURL)); 1180 VERIFY(xf->src.Crack(sourceURL));
1178 LPTSTR htmlBuff = xf->html.GetBuffer(endSelection-startSelection+2); 1181 LPTSTR htmlBuff = xf->html.GetBuffer(endSelection-startSelection+2);
1179 ASSERT(htmlBuff); 1182 ASSERT(htmlBuff);
1180 memmove(htmlBuff,&lps[startSelection],endSelection-startSelection+1); 1183 memmove(htmlBuff,&lps[startSelection],endSelection-startSelection+1);
1181 htmlBuff[endSelection-startSelection+1]=0; 1184 htmlBuff[endSelection-startSelection+1]=0;
1182 xf->html.ReleaseBuffer(); 1185 xf->html.ReleaseBuffer();
1183 if(bTestOnly){ 1186 if(bTestOnly){
1184 rv = m_reHTMLURL.Match(xf->html); 1187 rv = m_reHTMLURL.Match(xf->html);
1185 delete xf; 1188 delete xf;
1186 }else{ 1189 }else{
1187 PostMessage(WM_DNP_HTML,0,(LPARAM)xf); 1190 PostMessage(WM_DNP_HTML,0,(LPARAM)xf);
1191 rv = TRUE;
1188 } 1192 }
1189 }while(FALSE); 1193 }while(FALSE);
1190 GlobalUnlock(hg); 1194 GlobalUnlock(hg);
1191 GlobalFree(hg); 1195 GlobalFree(hg);
1192 return rv; 1196 return rv;
1193 } 1197 }
1194 if(pDO->IsDataAvailable(cfNIF)){ 1198 if(pDO->IsDataAvailable(cfNIF)){
1195 if(!bTestOnly){ 1199 if(!bTestOnly){
1196 HGLOBAL hg = pDO->GetGlobalData(cfNIF); 1200 HGLOBAL hg = pDO->GetGlobalData(cfNIF);
1197 ASSERT(hg); 1201 ASSERT(hg);
1198 LPVOID lpv = GlobalLock(hg); 1202 LPVOID lpv = GlobalLock(hg);
1199 ASSERT(lpv); 1203 ASSERT(lpv);
1200 struct _nif{ 1204 struct _nif{
1201 BYTE data[0x20]; 1205 BYTE data[0x20];
1202 DWORD m_offDescr; 1206 DWORD m_offDescr;
1203 DWORD m_offURL; 1207 DWORD m_offURL;
1204 DWORD m_offToImage; 1208 DWORD m_offToImage;
1205 } *nif = (_nif*)lpv; 1209 } *nif = (_nif*)lpv;
1206 PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)&nif->data[nif->m_offURL])); 1210 PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)&nif->data[nif->m_offURL]));
1207 GlobalUnlock(hg); 1211 GlobalUnlock(hg);
1208 GlobalFree(hg); 1212 GlobalFree(hg);
1209 } 1213 }
1210 return TRUE; 1214 return TRUE;
1211 } 1215 }
1212 if(pDO->IsDataAvailable(CF_TEXT)){ 1216 if(pDO->IsDataAvailable(CF_TEXT)){
1213 if(!bTestOnly){ 1217 BOOL rv = FALSE;
1214 HGLOBAL hg = pDO->GetGlobalData(CF_TEXT); 1218 HGLOBAL hg = pDO->GetGlobalData(CF_TEXT);
1215 ASSERT(hg); 1219 ASSERT(hg);
1216 LPVOID lpv = GlobalLock(hg); 1220 LPVOID lpv = GlobalLock(hg);
1217 ASSERT(lpv); 1221 ASSERT(lpv);
1218 PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)lpv)); 1222 if(bTestOnly){
1219 GlobalUnlock(hg); 1223 rv = m_reURL.Match((LPCSTR)lpv);
1220 GlobalFree(hg); 1224 }else{
1225 CString sel = (LPCSTR)lpv;
1226 if(m_reURL.Match(sel)) {
1227 rv = TRUE;
1228 CString tmp = m_reURL.GetMatch(CRegEx::matchPostMatch);
1229 if(m_reURL.Match(tmp)) {
1230 PostMessage(WM_DNP_URLSPING,0,(LPARAM)new CString((LPCSTR)lpv));
1231 }else{
1232 PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString((LPCTSTR)lpv));
1233 }
1234 }
1221 } 1235 }
1222 return TRUE; 1236 GlobalUnlock(hg);
1237 GlobalFree(hg);
1238 return rv;
1223 } 1239 }
1224 return FALSE; 1240 return FALSE;
1225} 1241}
1226 1242
1227LRESULT CDipstickDlg::OnHTMLTransfer(WPARAM wP, LPARAM lP) 1243LRESULT CDipstickDlg::OnHTMLTransfer(WPARAM wP, LPARAM lP)
1228{ 1244{
1229_xferHTML* xf = (_xferHTML*)lP; 1245_xferHTML* xf = (_xferHTML*)lP;
1230CSelectURLsDlg su; 1246CSelectURLsDlg su;
1231 su.m_bAdjust = m_bSmartAdjust; 1247 su.m_bAdjust = m_bSmartAdjust;
1232 su.m_bAdjustInnermost = m_bAdjustInnermost; 1248 su.m_bAdjustInnermost = m_bAdjustInnermost;
1233 BeginWaitCursor(); 1249 BeginWaitCursor();
1234 while(m_reHTMLURL.Match(xf->html)){ 1250 while(m_reHTMLURL.Match(xf->html)){
1235 CString url = m_reHTMLURL.GetMatch(1); 1251 CString url = m_reHTMLURL.GetMatch(1);
1236 xf->html = m_reHTMLURL.GetMatch(CRegEx::matchPostMatch); 1252 xf->html = m_reHTMLURL.GetMatch(CRegEx::matchPostMatch);
1237 if(CCrackURL::GetHostName(url)==url){ 1253 if(CCrackURL::GetHostName(url)==url){
1238 if(m_bIgnorelative) 1254 if(m_bIgnorelative)
1239 continue; 1255 continue;
1240 CCrackURL cracked; 1256 CCrackURL cracked;
1241 VERIFY(cracked.Crack(url)); 1257 VERIFY(cracked.Crack(url));
1242 cracked.Adjust(xf->src); 1258 cracked.Adjust(xf->src);
1243 url = cracked.Build(); 1259 url = cracked.Build();
1244 } 1260 }
1245 if(!su.m_URLs.Find(url)) 1261 if(!su.m_URLs.Find(url))
1246 VERIFY(su.m_URLs.AddTail(url)); 1262 VERIFY(su.m_URLs.AddTail(url));
1247 } 1263 }
1248 EndWaitCursor(); 1264 EndWaitCursor();
1249 delete xf; 1265 delete xf;
1250 if(su.DoModal()==IDOK){ 1266 if(su.DoModal()==IDOK){
1251 POSITION p = su.m_URLs.GetHeadPosition(); 1267 POSITION p = su.m_URLs.GetHeadPosition();
1252 while(p){ 1268 while(p){
1253 CString url = su.m_URLs.GetNext(p); 1269 CString url = su.m_URLs.GetNext(p);
1254 PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString(url)); 1270 PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString(url));
1255 } 1271 }
1256 } 1272 }
1257 return 0; 1273 return 0;
1258} 1274}
1259 1275
1276LRESULT CDipstickDlg::OnURLSPing(WPARAM wP,LPARAM lP)
1277{
1278CString *sel = (CString*)lP;
1279TRACE1("URLS: %s\n",(LPCTSTR)*sel);
1280CSelectURLsDlg su;
1281 su.m_bAdjust = m_bSmartAdjust;
1282 su.m_bAdjustInnermost = m_bAdjustInnermost;
1283 BeginWaitCursor();
1284 while(m_reURL.Match(*sel)){
1285 CString url = m_reURL.GetMatch(CRegEx::matchMatch);
1286 (*sel) = m_reURL.GetMatch(CRegEx::matchPostMatch);
1287 if(!su.m_URLs.Find(url))
1288 VERIFY(su.m_URLs.AddTail(url));
1289 }
1290 EndWaitCursor();
1291 delete sel;
1292 if(su.DoModal()==IDOK){
1293 POSITION p = su.m_URLs.GetHeadPosition();
1294 while(p){
1295 CString url = su.m_URLs.GetNext(p);
1296 PostMessage(WM_DNP_URLPING,0,(LPARAM)new CString(url));
1297 }
1298 }
1299 return 0;
1300}
1301
1260UINT CPingyHost::PingProc(LPVOID pParam) 1302UINT CPingyHost::PingProc(LPVOID pParam)
1261{ 1303{
1262CPingyHost* pThis = (CPingyHost*)pParam; 1304CPingyHost* pThis = (CPingyHost*)pParam;
1263 ASSERT(pThis->m_Daddy); 1305 ASSERT(pThis->m_Daddy);
1264 return pThis->DoPing(); 1306 return pThis->DoPing();
1265} 1307}
1266 1308
1267UINT CPingyHost::DoPing() 1309UINT CPingyHost::DoPing()
1268{ 1310{
1269CSingleLock slock(&m_mutex); 1311CSingleLock slock(&m_mutex);
1270 if(!slock.Lock(2000)){ 1312 if(!slock.Lock(2000)){
1271 m_Status.LoadString(IDS_PS_FAILEDTOLOCK); 1313 m_Status.LoadString(IDS_PS_FAILEDTOLOCK);
1272 return 1; 1314 return 1;
1273 } 1315 }
1274 m_Pinging = TRUE; 1316 m_Pinging = TRUE;
1275 m_bToPing = FALSE; 1317 m_bToPing = FALSE;
1276 VERIFY(m_Daddy->m_eveStartup.SetEvent()); 1318 VERIFY(m_Daddy->m_eveStartup.SetEvent());
1277 m_Daddy->PostMessage(WM_DNP_UPDATEHOSTDATA,0,(LPARAM)this); 1319 m_Daddy->PostMessage(WM_DNP_UPDATEHOSTDATA,0,(LPARAM)this);
1278in_addr ip; 1320in_addr ip;
1279UINT packets, lost; 1321UINT packets, lost;
1280 packets=lost=0; 1322 packets=lost=0;
1281CICMP* pICMP = NULL; 1323CICMP* pICMP = NULL;
1282UINT dataSize = m_Daddy->m_PingSize; 1324UINT dataSize = m_Daddy->m_PingSize;
1283 intploss = 100; 1325 intploss = 100;
@@ -1562,25 +1604,25 @@ void CDipstickDlg::OnDragpadAdvancedImportlist()
1562{ 1604{
1563 OnAdvancedImportlist(); 1605 OnAdvancedImportlist();
1564} 1606}
1565 1607
1566void CPingyHost::Suicide() 1608void CPingyHost::Suicide()
1567{ 1609{
1568CSingleLock sl(&m_mutex); 1610CSingleLock sl(&m_mutex);
1569 if(sl.Lock(10)){ 1611 if(sl.Lock(10)){
1570 sl.Unlock(); 1612 sl.Unlock();
1571 delete this; 1613 delete this;
1572 }else{ 1614 }else{
1573 if(!AfxBeginThread(CPingyHost::SuicideProc,this)) 1615 if(!AfxBeginThread(CPingyHost::SuicideProc,this))
1574 ASSERT(FALSE); 1616 ASSERT(FALSE);
1575 } 1617 }
1576} 1618}
1577 1619
1578UINT CPingyHost::SuicideProc(LPVOID pParam) 1620UINT CPingyHost::SuicideProc(LPVOID pParam)
1579{ 1621{
1580CPingyHost* pThis = (CPingyHost*)pParam; 1622CPingyHost* pThis = (CPingyHost*)pParam;
1581CSingleLock sl(&pThis->m_mutex); 1623CSingleLock sl(&pThis->m_mutex);
1582 sl.Lock(); 1624 sl.Lock();
1583 VERIFY(sl.Unlock()); 1625 VERIFY(sl.Unlock());
1584 delete pThis; 1626 delete pThis;
1585 return 0; 1627 return 0;
1586} 1628} \ No newline at end of file
diff --git a/DipstickDlg.h b/DipstickDlg.h
index ce9ed22..47c3e01 100644
--- a/DipstickDlg.h
+++ b/DipstickDlg.h
@@ -22,48 +22,50 @@ public:
22 CStringm_HostName; 22 CStringm_HostName;
23 CString m_Status; 23 CString m_Status;
24 DWORD m_IP; 24 DWORD m_IP;
25 ULONG m_MinRTT; 25 ULONG m_MinRTT;
26 ULONG m_AvgRTT; 26 ULONG m_AvgRTT;
27 ULONG m_MaxRTT; 27 ULONG m_MaxRTT;
28 BOOL m_Pinged; 28 BOOL m_Pinged;
29 int m_Packetloss; 29 int m_Packetloss;
30}; 30};
31 31
32 typedef CList<CPingyHost*,CPingyHost*>CHostList; 32 typedef CList<CPingyHost*,CPingyHost*>CHostList;
33 33
34///////////////////////////////////////////////////////////////////////////// 34/////////////////////////////////////////////////////////////////////////////
35// CDipstickDlg dialog 35// CDipstickDlg dialog
36 36
37class CDragPad; 37class CDragPad;
38class CDipstickDlg : public CDialog 38class CDipstickDlg : public CDialog
39{ 39{
40// Construction 40// Construction
41 struct _xferHTML{ 41 struct _xferHTML{
42 CString html; 42 CString html;
43 CCrackURL src; 43 CCrackURL src;
44 }; 44 };
45public: 45public:
46 LRESULT OnURLSPing(WPARAM wP,LPARAM lP);
47 CRegEx m_reURL;
46 BOOL ExportLocations(LPCTSTR file); 48 BOOL ExportLocations(LPCTSTR file);
47 CString m_impexPath; 49 CString m_impexPath;
48 BOOL ImportLocations(LPCTSTR file); 50 BOOL ImportLocations(LPCTSTR file);
49 BOOL m_bIgnorelative; 51 BOOL m_bIgnorelative;
50 CEvent m_eveStartup; 52 CEvent m_eveStartup;
51 UINT volatile m_ActiveThreads; 53 UINT volatile m_ActiveThreads;
52 BOOL m_bAdjustInnermost; 54 BOOL m_bAdjustInnermost;
53 BOOL m_bSmartAdjust; 55 BOOL m_bSmartAdjust;
54 BOOL CollectURLs(COleDataObject* pDO,BOOL bTestOnly=FALSE); 56 BOOL CollectURLs(COleDataObject* pDO,BOOL bTestOnly=FALSE);
55 BOOL IsPasteableClipboard(); 57 BOOL IsPasteableClipboard();
56 void UpdateDragpadTitle(); 58 void UpdateDragpadTitle();
57 BOOL m_bAutoBest; 59 BOOL m_bAutoBest;
58 void RecalcLayout(int cx,int cy); 60 void RecalcLayout(int cx,int cy);
59 CSize m_MinSize; 61 CSize m_MinSize;
60 UINT m_GapY; 62 UINT m_GapY;
61 UINT m_OverY; 63 UINT m_OverY;
62 UINT m_OverX; 64 UINT m_OverX;
63 BOOL m_bMSWorkAround; 65 BOOL m_bMSWorkAround;
64 CRegEx m_reCrackHost; 66 CRegEx m_reCrackHost;
65 CRegEx m_reNestedURL; 67 CRegEx m_reNestedURL;
66 CRegEx m_reHTMLURL; // 1 - URL 68 CRegEx m_reHTMLURL; // 1 - URL
67 CRegEx m_reCrackURL; //3 - schema, 4 - host, 5 - path, 7 - query string 69 CRegEx m_reCrackURL; //3 - schema, 4 - host, 5 - path, 7 - query string
68 BITMAP m_bitmapBack; 70 BITMAP m_bitmapBack;
69 CBitmap m_bmpBack; 71 CBitmap m_bmpBack;
diff --git a/dipstick.rc b/dipstick.rc
index 55f9fde..8797946 100644
--- a/dipstick.rc
+++ b/dipstick.rc
@@ -61,61 +61,60 @@ END
61///////////////////////////////////////////////////////////////////////////// 61/////////////////////////////////////////////////////////////////////////////
62// 62//
63// Icon 63// Icon
64// 64//
65 65
66// Icon with lowest ID value placed first to ensure application icon 66// Icon with lowest ID value placed first to ensure application icon
67// remains consistent on all systems. 67// remains consistent on all systems.
68IDR_MAINFRAME ICON DISCARDABLE "res\\Dipstick.ico" 68IDR_MAINFRAME ICON DISCARDABLE "res\\Dipstick.ico"
69IDI_PINGING ICON DISCARDABLE "res\\pinging.ico" 69IDI_PINGING ICON DISCARDABLE "res\\pinging.ico"
70IDI_PENDING ICON DISCARDABLE "res\\pending.ico" 70IDI_PENDING ICON DISCARDABLE "res\\pending.ico"
71IDI_COMPLETED ICON DISCARDABLE "res\\complete.ico" 71IDI_COMPLETED ICON DISCARDABLE "res\\complete.ico"
72IDI_UNREACHABLE ICON DISCARDABLE "res\\unreach.ico" 72IDI_UNREACHABLE ICON DISCARDABLE "res\\unreach.ico"
73 73
74///////////////////////////////////////////////////////////////////////////// 74/////////////////////////////////////////////////////////////////////////////
75// 75//
76// Dialog 76// Dialog
77// 77//
78 78
79IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 213, 61 79IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 213, 61
80STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU 80STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU
81CAPTION "About Dipstick" 81CAPTION "About Dipstick"
82FONT 8, "MS Sans Serif" 82FONT 8, "MS Sans Serif"
83BEGIN 83BEGIN
84 ICON IDR_MAINFRAME,IDC_STATIC,11,17,21,20 84 ICON IDR_MAINFRAME,IDC_STATIC,11,17,21,20
85 LTEXT "Dipstick, Version 3.0",IDC_STATIC,40,7,89,8, 85 LTEXT "Dipstick, Version 3.1-trunk",IDC_STATIC,40,7,89,8,SS_NOPREFIX
86 SS_NOPREFIX 86 LTEXT "Copyright © 1996-2005 Klever Group",IDC_STATIC,40,25,
87 LTEXT "Copyright © 1996-2004 Klever Group", 87 166,8
88 IDC_STATIC,40,25,166,8
89 DEFPUSHBUTTON "OK",IDOK,174,7,32,14,WS_GROUP 88 DEFPUSHBUTTON "OK",IDOK,174,7,32,14,WS_GROUP
90 PUSHBUTTON "http://www.klever.net/",IDC_KLEVERNET,40,40,91,14 89 PUSHBUTTON "http://www.klever.net/",IDC_KLEVERNET,40,40,91,14
91END 90END
92 91
93IDD_DIPSTICK_DIALOG DIALOGEX 0, 0, 419, 152 92IDD_DIPSTICK_DIALOG DIALOGEX 0, 0, 419, 152
94STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME 93STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
95EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE | WS_EX_CONTEXTHELP | 94EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE | WS_EX_CONTEXTHELP |
96 WS_EX_APPWINDOW 95 WS_EX_APPWINDOW
97CAPTION " Dipstick 3.0" 96CAPTION " Dipstick 3.1-trunk"
98FONT 8, "MS Sans Serif", 0, 0, 0x1 97FONT 8, "MS Sans Serif", 0, 0, 0x1
99BEGIN 98BEGIN
100 CONTROL "List1",IDC_HOSTLIST,"SysListView32",LVS_REPORT | 99 CONTROL "List1",IDC_HOSTLIST,"SysListView32",LVS_REPORT |
101 LVS_SORTASCENDING | LVS_AUTOARRANGE | WS_BORDER | 100 LVS_SORTASCENDING | LVS_AUTOARRANGE | WS_BORDER |
102 WS_TABSTOP,8,8,349,136,WS_EX_CLIENTEDGE 101 WS_TABSTOP,8,8,349,136,WS_EX_CLIENTEDGE
103 PUSHBUTTON "&Manual Ping",IDC_MANUALPING,361,8,50,14 102 PUSHBUTTON "&Manual Ping",IDC_MANUALPING,361,8,50,14
104 PUSHBUTTON "&Reping",IDC_REPING,361,23,50,14,WS_DISABLED 103 PUSHBUTTON "&Reping",IDC_REPING,361,23,50,14,WS_DISABLED
105 PUSHBUTTON "Reping &All",IDC_REPINGALL,361,38,50,14,WS_DISABLED 104 PUSHBUTTON "Reping &All",IDC_REPINGALL,361,38,50,14,WS_DISABLED
106 PUSHBUTTON "R&emove",IDC_REMOVE,361,53,50,14,WS_DISABLED 105 PUSHBUTTON "R&emove",IDC_REMOVE,361,53,50,14,WS_DISABLED
107 PUSHBUTTON "Remove A&ll",IDC_CLEAR,361,68,50,14,WS_DISABLED 106 PUSHBUTTON "Remove A&ll",IDC_CLEAR,361,68,50,14,WS_DISABLED
108 PUSHBUTTON "&Help",ID_HELP,361,99,50,14 107 PUSHBUTTON "&Help",ID_HELP,361,99,50,14
109 PUSHBUTTON "&Options",IDC_OPTIONS,361,114,50,14 108 PUSHBUTTON "&Options",IDC_OPTIONS,361,114,50,14
110 PUSHBUTTON "E&xit Dipstick",IDC_EXIT,361,129,50,14 109 PUSHBUTTON "E&xit Dipstick",IDC_EXIT,361,129,50,14
111 PUSHBUTTON "",IDCANCEL,411,2,6,6,NOT WS_VISIBLE | WS_DISABLED 110 PUSHBUTTON "",IDCANCEL,411,2,6,6,NOT WS_VISIBLE | WS_DISABLED
112 PUSHBUTTON "Ad&vanced",IDC_ADVANCED,361,83,50,11 111 PUSHBUTTON "Ad&vanced",IDC_ADVANCED,361,83,50,11
113END 112END
114 113
115IDD_DRAGPAD DIALOGEX 0, 0, 53, 33 114IDD_DRAGPAD DIALOGEX 0, 0, 53, 33
116STYLE DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION 115STYLE DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION
117EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE | WS_EX_CONTEXTHELP 116EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE | WS_EX_CONTEXTHELP
118CAPTION " Drag URL here" 117CAPTION " Drag URL here"
119FONT 8, "MS Sans Serif", 0, 0, 0x1 118FONT 8, "MS Sans Serif", 0, 0, 0x1
120BEGIN 119BEGIN
121 CONTROL "Animate1",IDC_DNDTARGET,"SysAnimate32",WS_TABSTOP,0,0, 120 CONTROL "Animate1",IDC_DNDTARGET,"SysAnimate32",WS_TABSTOP,0,0,
@@ -242,73 +241,73 @@ STYLE DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | WS_MAXIMIZEBOX | WS_POPUP |
242EXSTYLE WS_EX_CLIENTEDGE 241EXSTYLE WS_EX_CLIENTEDGE
243CAPTION " Select URLs of interest" 242CAPTION " Select URLs of interest"
244FONT 8, "MS Sans Serif", 0, 0, 0x1 243FONT 8, "MS Sans Serif", 0, 0, 0x1
245BEGIN 244BEGIN
246 LISTBOX IDC_URLS,7,7,162,146,LBS_SORT | LBS_NOINTEGRALHEIGHT | 245 LISTBOX IDC_URLS,7,7,162,146,LBS_SORT | LBS_NOINTEGRALHEIGHT |
247 LBS_EXTENDEDSEL | NOT WS_BORDER | WS_VSCROLL | 246 LBS_EXTENDEDSEL | NOT WS_BORDER | WS_VSCROLL |
248 WS_HSCROLL | WS_TABSTOP,WS_EX_STATICEDGE 247 WS_HSCROLL | WS_TABSTOP,WS_EX_STATICEDGE
249 DEFPUSHBUTTON "OK",IDOK,7,155,50,14 248 DEFPUSHBUTTON "OK",IDOK,7,155,50,14
250 PUSHBUTTON "Cancel",IDCANCEL,7,171,50,14 249 PUSHBUTTON "Cancel",IDCANCEL,7,171,50,14
251 CONTROL "&Smart adjust selection",IDC_DOADJUST,"Button", 250 CONTROL "&Smart adjust selection",IDC_DOADJUST,"Button",
252 BS_AUTOCHECKBOX | BS_TOP | WS_TABSTOP,63,157,106,10 251 BS_AUTOCHECKBOX | BS_TOP | WS_TABSTOP,63,157,106,10
253 CONTROL "Adjust by &innermost URL",IDC_ADJUSTINN,"Button", 252 CONTROL "Adjust by &innermost URL",IDC_ADJUSTINN,"Button",
254 BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,63, 253 BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | WS_TABSTOP,63,
255 175,106,10 254 175,106,10
256END 255END
257 256
258 257
259#ifndef _MAC 258#ifndef _MAC
260///////////////////////////////////////////////////////////////////////////// 259/////////////////////////////////////////////////////////////////////////////
261// 260//
262// Version 261// Version
263// 262//
264 263
265VS_VERSION_INFO VERSIONINFO 264VS_VERSION_INFO VERSIONINFO
266 FILEVERSION 3,0,0,0 265 FILEVERSION 3,1,0,0
267 PRODUCTVERSION 3,0,0,0 266 PRODUCTVERSION 3,1,0,0
268 FILEFLAGSMASK 0x3fL 267 FILEFLAGSMASK 0x3fL
269#ifdef _DEBUG 268#ifdef _DEBUG
270 FILEFLAGS 0x9L 269 FILEFLAGS 0x9L
271#else 270#else
272 FILEFLAGS 0x8L 271 FILEFLAGS 0x8L
273#endif 272#endif
274 FILEOS 0x4L 273 FILEOS 0x4L
275 FILETYPE 0x1L 274 FILETYPE 0x1L
276 FILESUBTYPE 0x0L 275 FILESUBTYPE 0x0L
277BEGIN 276BEGIN
278 BLOCK "StringFileInfo" 277 BLOCK "StringFileInfo"
279 BEGIN 278 BEGIN
280 BLOCK "040904b0" 279 BLOCK "040904b0"
281 BEGIN 280 BEGIN
282 VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0" 281 VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0"
283 VALUE "FileDescription", "Dipstick, mirror locator\0" 282 VALUE "FileDescription", "Dipstick, mirror locator\0"
284 VALUE "FileVersion", "3, 0, 0, 0\0" 283 VALUE "FileVersion", "3, 1, 0, 0\0"
285 VALUE "InternalName", "DIPSTICK\0" 284 VALUE "InternalName", "DIPSTICK\0"
286 VALUE "LegalCopyright", "Copyright © 1996-2004 Klever Group (http://www.klever.net/)\0" 285 VALUE "LegalCopyright", "Copyright © 1996-2005 Klever Group (http://www.klever.net/)\0"
287 VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0" 286 VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0"
288 VALUE "OriginalFilename", "DIPSTICK.EXE\0" 287 VALUE "OriginalFilename", "DIPSTICK.EXE\0"
289 VALUE "ProductName", "Dipstick\0" 288 VALUE "ProductName", "Dipstick\0"
290 VALUE "ProductVersion", "3, 0, 0, 0\0" 289 VALUE "ProductVersion", "3, 1, 0, 0\0"
291 END 290 END
292 END 291 END
293 BLOCK "VarFileInfo" 292 BLOCK "VarFileInfo"
294 BEGIN 293 BEGIN
295 VALUE "Translation", 0x409, 1200 294 VALUE "Translation", 0x409, 1200
296 END 295 END
297END 296END
298 297
299#endif // !_MAC 298#endif // !_MAC
300 299
301 300
302///////////////////////////////////////////////////////////////////////////// 301/////////////////////////////////////////////////////////////////////////////
303// 302//
304// DESIGNINFO 303// DESIGNINFO
305// 304//
306 305
307#ifdef APSTUDIO_INVOKED 306#ifdef APSTUDIO_INVOKED
308GUIDELINES DESIGNINFO DISCARDABLE 307GUIDELINES DESIGNINFO DISCARDABLE
309BEGIN 308BEGIN
310 IDD_ABOUTBOX, DIALOG 309 IDD_ABOUTBOX, DIALOG
311 BEGIN 310 BEGIN
312 LEFTMARGIN, 7 311 LEFTMARGIN, 7
313 RIGHTMARGIN, 206 312 RIGHTMARGIN, 206
314 VERTGUIDE, 40 313 VERTGUIDE, 40
@@ -439,69 +438,69 @@ END
439IDB_DIABACK BITMAP DISCARDABLE "shared-data/klever-background.bmp" 438IDB_DIABACK BITMAP DISCARDABLE "shared-data/klever-background.bmp"
440 439
441///////////////////////////////////////////////////////////////////////////// 440/////////////////////////////////////////////////////////////////////////////
442// 441//
443// WAVE 442// WAVE
444// 443//
445 444
446IDW_BESTURL WAVE DISCARDABLE "res\\best.wav" 445IDW_BESTURL WAVE DISCARDABLE "res\\best.wav"
447 446
448///////////////////////////////////////////////////////////////////////////// 447/////////////////////////////////////////////////////////////////////////////
449// 448//
450// String Table 449// String Table
451// 450//
452 451
453STRINGTABLE DISCARDABLE 452STRINGTABLE DISCARDABLE
454BEGIN 453BEGIN
455 IDS_ABOUTBOX "&About Dipstick.." 454 IDS_ABOUTBOX "&About Dipstick.."
456 IDS_PS_FAILEDTOLOCK "Failed to gain access to internal resources. Please, report to Klever." 455 IDS_PS_FAILEDTOLOCK "Failed to gain access to internal resources. Please, report to Klever."
457 IDP_SOCKETS_INIT_FAILED "Windows sockets initialization failed." 456 IDP_SOCKETS_INIT_FAILED "Windows sockets initialization failed."
458 IDS_CSVEXT ".csv" 457 IDS_CSVEXT ".csv"
459 IDS_HN_BADURL "Bad URL" 458 IDS_HN_BADURL "Bad URL"
460 IDS_ABEST_CLEANUP "Remove all locations from list?" 459 IDS_ABEST_CLEANUP "Remove all locations from list?"
461 IDS_ABEST_NONEFOUND "No reachable locations were found." 460 IDS_ABEST_NONEFOUND "No reachable locations were found."
462 IDS_ABEST_TITLE " Dipstick - report" 461 IDS_ABEST_TITLE " Dipstick - report"
463 IDS_DRAGPAD_TITLE " Dipstick 3.0" 462 IDS_DRAGPAD_TITLE " Dipstick 3.1-trunk"
464 IDS_DRAGPAD_URLS " %d/%d URL(s)" 463 IDS_DRAGPAD_URLS " %d/%d URL(s)"
465 IDS_REGEX_HTMLURL "<A[^[:alpha:]][^>]*href[[:space:]]*=[[:space:]]*""?([^[:space:]>""]+)""?[^>]*>" 464 IDS_REGEX_HTMLURL "<A[^[:alpha:]][^>]*href[[:space:]]*=[[:space:]]*""?([^[:space:]>""]+)""?[^>]*>"
466END 465END
467 466
468STRINGTABLE DISCARDABLE 467STRINGTABLE DISCARDABLE
469BEGIN 468BEGIN
470 IDS_KLEVERNET_URL "http://www.klever.net/" 469 IDS_KLEVERNET_URL "http://www.klever.net/"
471 IDS_PS_INTERNALERROR "Internal Error. Please report to Klever." 470 IDS_PS_INTERNALERROR "Internal Error. Please report to Klever."
472 IDS_PS_NETUNREACHABLE "Destination network unreachable" 471 IDS_PS_NETUNREACHABLE "Destination network unreachable"
473 IDS_PS_HOSTUNREACHABLE "Destination host unreachable" 472 IDS_PS_HOSTUNREACHABLE "Destination host unreachable"
474 IDS_PS_PROTUNREACHABLE "Destination protocol unreachable" 473 IDS_PS_PROTUNREACHABLE "Destination protocol unreachable"
475 IDS_PS_PORTUNREACHABLE "Destination port unreachable" 474 IDS_PS_PORTUNREACHABLE "Destination port unreachable"
476 IDS_PS_NORESOURCES "No resources" 475 IDS_PS_NORESOURCES "No resources"
477 IDS_PS_HWERROR "Hardware error" 476 IDS_PS_HWERROR "Hardware error"
478 IDS_PS_BIGPACKET "Packet size is too big" 477 IDS_PS_BIGPACKET "Packet size is too big"
479END 478END
480 479
481STRINGTABLE DISCARDABLE 480STRINGTABLE DISCARDABLE
482BEGIN 481BEGIN
483 IDC_DNDTARGET "Dipstick 3.0, click the right mouse button to display main window, left mouse button for menu" 482 IDC_DNDTARGET "Dipstick 3.1-trunk, click the right mouse button to display main window, left mouse button for menu"
484 IDC_HOST "Host name as specified or resolved by Dipstick" 483 IDC_HOST "Host name as specified or resolved by Dipstick"
485END 484END
486 485
487STRINGTABLE DISCARDABLE 486STRINGTABLE DISCARDABLE
488BEGIN 487BEGIN
489 IDC_URLCAPTION "Universal Resource Locator (URL) associated with this location" 488 IDC_URLCAPTION "Universal Resource Locator (URL) associated with this location"
490 IDC_URL "Universal Resource Locator (URL) associated with this location" 489 IDC_URL "Universal Resource Locator (URL) associated with this location"
491 IDC_HOSTCAPTION "Host name as specified or resolved by Dipstick" 490 IDC_HOSTCAPTION "Host name as specified or resolved by Dipstick"
492 IDC_IPCAPTION "Host's IP address as specified or resolved by Dipstick" 491 IDC_IPCAPTION "Host's IP address as specified or resolved by Dipstick"
493 IDC_TIMESCAPTION "Minmum, maximum and average round trip time in milliseconds. The less the better." 492 IDC_TIMESCAPTION "Minmum, maximum and average round trip time in milliseconds. The less the better."
494 IDC_TIMES "Minmum, maximum and average round trip time in milliseconds. The less the better." 493 IDC_TIMES "Minmum, maximum and average round trip time in milliseconds. The less the better."
495 IDC_LOSSCAPTION "IP packets loss" 494 IDC_LOSSCAPTION "IP packets loss"
496 IDC_LOSS "IP packets loss" 495 IDC_LOSS "IP packets loss"
497 IDC_STATUSCAPTION "Last error occured during attempt to ping this location" 496 IDC_STATUSCAPTION "Last error occured during attempt to ping this location"
498 IDC_STATUS "Last error occured during attempt to ping this location" 497 IDC_STATUS "Last error occured during attempt to ping this location"
499 IDC_OPENURL "Open URL in your default browser" 498 IDC_OPENURL "Open URL in your default browser"
500END 499END
501 500
502STRINGTABLE DISCARDABLE 501STRINGTABLE DISCARDABLE
503BEGIN 502BEGIN
504 IDS_PS_TIMEOUT "Request timed out" 503 IDS_PS_TIMEOUT "Request timed out"
505 IDS_PS_BADROUTE "Bad route" 504 IDS_PS_BADROUTE "Bad route"
506 IDS_PS_TTLEXPTRANSIT "TTL expired in transit" 505 IDS_PS_TTLEXPTRANSIT "TTL expired in transit"
507 IDS_PS_TTLEXPREASM "TTL expired during reassembly" 506 IDS_PS_TTLEXPREASM "TTL expired during reassembly"
@@ -516,48 +515,49 @@ BEGIN
516 IDS_TIP_UNREACHABLE "This location seems to be unreachable" 515 IDS_TIP_UNREACHABLE "This location seems to be unreachable"
517 IDS_PS_FAILEDTORESOLVE "Unable to resolve host IP" 516 IDS_PS_FAILEDTORESOLVE "Unable to resolve host IP"
518END 517END
519 518
520STRINGTABLE DISCARDABLE 519STRINGTABLE DISCARDABLE
521BEGIN 520BEGIN
522 IDS_PS_UNABLETOICMP "Unable to initialize ICMP services" 521 IDS_PS_UNABLETOICMP "Unable to initialize ICMP services"
523 IDS_TIP_PENDING "This location is waiting for it's turn to get pinged" 522 IDS_TIP_PENDING "This location is waiting for it's turn to get pinged"
524 IDS_TIP_COMPLETE "Pinging of this location has been completed" 523 IDS_TIP_COMPLETE "Pinging of this location has been completed"
525 IDS_TIP_PROPSOK "Click OK if you're done with looking and want to dismiss this window" 524 IDS_TIP_PROPSOK "Click OK if you're done with looking and want to dismiss this window"
526 IDS_TIP_INTERVAL "Interval between ping requests in seconds" 525 IDS_TIP_INTERVAL "Interval between ping requests in seconds"
527 IDS_TIP_OPTIONSOK "Click OK to make changes permanent" 526 IDS_TIP_OPTIONSOK "Click OK to make changes permanent"
528 IDS_TIP_OPTIONSCANCEL "Click CANCEL to leave dialog without making any changes" 527 IDS_TIP_OPTIONSCANCEL "Click CANCEL to leave dialog without making any changes"
529 IDS_TIP_PINGING "This location is being pinged at the moment.." 528 IDS_TIP_PINGING "This location is being pinged at the moment.."
530END 529END
531 530
532STRINGTABLE DISCARDABLE 531STRINGTABLE DISCARDABLE
533BEGIN 532BEGIN
534 IDC_MSWORKAROUND "In case of REDIRed URL - test the innermost one" 533 IDC_MSWORKAROUND "In case of REDIRed URL - test the innermost one"
535END 534END
536 535
537STRINGTABLE DISCARDABLE 536STRINGTABLE DISCARDABLE
538BEGIN 537BEGIN
539 IDS_CSVFILTER "Comma Separated Values (*.csv)|*.csv|All Files (*.*)|*.*||" 538 IDS_CSVFILTER "Comma Separated Values (*.csv)|*.csv|All Files (*.*)|*.*||"
539 IDS_REGEX_URL "([a-zA-Z]+://)?[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]*)+(/[^ \t\r\n\\f]*)?"
540END 540END
541 541
542#endif // English (U.S.) resources 542#endif // English (U.S.) resources
543///////////////////////////////////////////////////////////////////////////// 543/////////////////////////////////////////////////////////////////////////////
544 544
545 545
546 546
547#ifndef APSTUDIO_INVOKED 547#ifndef APSTUDIO_INVOKED
548///////////////////////////////////////////////////////////////////////////// 548/////////////////////////////////////////////////////////////////////////////
549// 549//
550// Generated from the TEXTINCLUDE 3 resource. 550// Generated from the TEXTINCLUDE 3 resource.
551// 551//
552#define _AFX_NO_SPLITTER_RESOURCES 552#define _AFX_NO_SPLITTER_RESOURCES
553#define _AFX_NO_OLE_RESOURCES 553#define _AFX_NO_OLE_RESOURCES
554#define _AFX_NO_TRACKER_RESOURCES 554#define _AFX_NO_TRACKER_RESOURCES
555#define _AFX_NO_PROPERTY_RESOURCES 555#define _AFX_NO_PROPERTY_RESOURCES
556 556
557#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 557#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
558#ifdef _WIN32 558#ifdef _WIN32
559LANGUAGE 9, 1 559LANGUAGE 9, 1
560#pragma code_page(1252) 560#pragma code_page(1252)
561#endif 561#endif
562#include "res\Dipstick.rc2" // non-Microsoft Visual C++ edited resources 562#include "res\Dipstick.rc2" // non-Microsoft Visual C++ edited resources
563#include "afxres.rc" // Standard components 563#include "afxres.rc" // Standard components
diff --git a/help/dipstick.rtf b/help/dipstick.rtf
index c91b3f4..839d331 100644
--- a/help/dipstick.rtf
+++ b/help/dipstick.rtf
@@ -1,57 +1,59 @@
1{\rtf1\ansi 1{\rtf1\ansi
2@{\footnote 2@{\footnote
3THIS FILE WAS AUTOMATICALLY GENERATED FROM XML DOCUMENT. 3THIS FILE WAS AUTOMATICALLY GENERATED FROM XML DOCUMENT.
4DO NOT MODIFY THIS FILE DIRECTLY. EDIT XML DOCUMENT INSTEAD 4DO NOT MODIFY THIS FILE DIRECTLY. EDIT XML DOCUMENT INSTEAD
5} 5}
6{\fonttbl{\f0\froman Times New Roman;}{\f1\fswiss Arial;}{\f3\froman Symbol;}}{\colortbl; 6{\fonttbl{\f0\froman Times New Roman;}{\f1\fswiss Arial;}{\f3\froman Symbol;}}{\colortbl;
7 \red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0; 7 \red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
8 \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255; 8 \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;
9 \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128; 9 \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;
10 \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} 10 \red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}
11 11
12\pard\plain\keepn 12\pard\plain\keepn
13#{\footnote About} 13#{\footnote About}
14${\footnote About Dipstick} 14${\footnote About Dipstick}
15K{\footnote about} 15K{\footnote about}
16{ \f1\fs18\b\sb120 About {\b Dipstick}} 16{ \f1\fs18\b\sb120 About {\b Dipstick}}
17\par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b Dipstick} is our award-winning freeware that allows you to evaluate {\i mirror sites} to figure out which one has currently the least traffic. 17\par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b Dipstick} is our award-winning freeware that allows you to evaluate {\i mirror sites} to figure out which one has currently the least traffic.
18\par\sa120\sb120\qj\pard \f1\fs18\sb120 18\par\sa120\sb120\qj\pard \f1\fs18\sb120
19\par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b {\i Enjoy!}} 19\par\sa120\sb120\qj\pard \f1\fs18\sb120 {\b {\i Enjoy!}}
20{ 20{
21\par\pard\plain\sb360\sa120 \f1\fs16 Copyright (c) 1996-2004 {\uldb\cf0 Klever Group (http://www.klever.net/)}{\v %!ExecFile("http://www.klever.net/")} 21\par\pard\plain\sb360\sa120 \f1\fs16 Copyright (c) 1996-2005 {\uldb\cf0 Klever Group (http://www.klever.net/)}{\v %!ExecFile("http://www.klever.net/")}
22\par\qj\sb120\sa120Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 22\par\qj\sb120\sa120Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
23\par The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 23\par The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
24\par \sa360 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24\par \sa360 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25} 25}
26\par \sa0\sb120\ql \f1\fs16 Author: {\b\uldb\cf11 Michael Krelin ({\i hacker@klever.net})}{\v %!ExecFile("mailto:hacker@klever.net")} 26\par \sa0\sb120\ql \f1\fs16 Author: {\b\uldb\cf11 Michael Krelin ({\i hacker@klever.net})}{\v %!ExecFile("mailto:hacker@klever.net")}
27\par \sa0\sb0 Fan mail send to {\i\uldb gefilte@klever.net}{\v %!ExecFile("mailto:gefilte@klever.net")} 27\par \sa0\sb0 Fan mail send to {\i\uldb gefilte@klever.net}{\v %!ExecFile("mailto:gefilte@klever.net")}
28\page 28\page
29 29
30\pard\plain\keepn 30\pard\plain\keepn
31#{\footnote News} 31#{\footnote News}
32${\footnote What's new} 32${\footnote What's new}
33{ \f1\fs18\b\sb120 What's New} 33{ \f1\fs18\b\sb120 What's New}
34\par\pard\plain\f1\fs24\qc\cf2\b 3.1 - July 26th, 2005
35\par\pard\plain\fi0\li0\f1\fs18 \bullet Ability to parse multiple URLs from plaintext selection
34\par\pard\plain\f1\fs24\qc\cf2\b 3.0 - July 11th, 2004 36\par\pard\plain\f1\fs24\qc\cf2\b 3.0 - July 11th, 2004
35\par\pard\plain\fi0\li0\f1\fs18 \bullet Change of {\uldb license}{\v About} and opening the source. 37\par\pard\plain\fi0\li0\f1\fs18 \bullet Change of {\uldb license}{\v About} and opening the source.
36\par\pard\plain\fi0\li0\f1\fs18 \bullet Minor cosmetic changes 38\par\pard\plain\fi0\li0\f1\fs18 \bullet Minor cosmetic changes
37\par\pard\plain\f1\fs24\qc\cf2\b 2.52 - June 3rd, 1998 39\par\pard\plain\f1\fs24\qc\cf2\b 2.52 - June 3rd, 1998
38\par\pard\plain\fi0\li0\f1\fs18 \bullet Now works properly with Winsock 2 for Windows95. Also may start working with non-Microsoft TCP/IP stacks. 40\par\pard\plain\fi0\li0\f1\fs18 \bullet Now works properly with Winsock 2 for Windows95. Also may start working with non-Microsoft TCP/IP stacks.
39\par\pard\plain\fi0\li0\f1\fs18 \bullet Fixed bug that caused GPF when removing all URLs after testing is over and you picked the URL of your choice. 41\par\pard\plain\fi0\li0\f1\fs18 \bullet Fixed bug that caused GPF when removing all URLs after testing is over and you picked the URL of your choice.
40\par\pard\plain\f1\fs24\qc\cf2\b 2.5 - December 30th, 1997 42\par\pard\plain\f1\fs24\qc\cf2\b 2.5 - December 30th, 1997
41\par\pard\plain\fi0\li0\f1\fs18 \bullet Ability to export/import sets of URLs. 43\par\pard\plain\fi0\li0\f1\fs18 \bullet Ability to export/import sets of URLs.
42\par\pard\plain\fi0\li0\f1\fs18 \bullet Copy URL menu command in the Main Window and button in the Best URL window. 44\par\pard\plain\fi0\li0\f1\fs18 \bullet Copy URL menu command in the Main Window and button in the Best URL window.
43\par\pard\plain\fi0\li0\f1\fs18 \bullet Multiple URLs dragging or pasting. Works only for MSIE4 browser. 45\par\pard\plain\fi0\li0\f1\fs18 \bullet Multiple URLs dragging or pasting. Works only for MSIE4 browser.
44\par\pard\plain\fi0\li0\f1\fs18 \bullet Annoying ToolTips removed. 46\par\pard\plain\fi0\li0\f1\fs18 \bullet Annoying ToolTips removed.
45\par\pard\plain\f1\fs24\qc\cf2\b 2.00 - July 1st, 1997 47\par\pard\plain\f1\fs24\qc\cf2\b 2.00 - July 1st, 1997
46\par\pard\plain\fi0\li0\f1\fs18 \bullet Drag'n'drop source added to the Best URL window. 48\par\pard\plain\fi0\li0\f1\fs18 \bullet Drag'n'drop source added to the Best URL window.
47\par\pard\plain\fi0\li0\f1\fs18 \bullet Completed/Total URLs counter added to {\b Dipstick} drag pad. 49\par\pard\plain\fi0\li0\f1\fs18 \bullet Completed/Total URLs counter added to {\b Dipstick} drag pad.
48\par\pard\plain\fi0\li0\f1\fs18 \bullet You may now drag'n'drop URLs from main {\b Dipstick} dialog window. 50\par\pard\plain\fi0\li0\f1\fs18 \bullet You may now drag'n'drop URLs from main {\b Dipstick} dialog window.
49\par\pard\plain\fi0\li0\f1\fs18 \bullet Added ability to paste URLs into {\b Dipstick} instead of dropping. 51\par\pard\plain\fi0\li0\f1\fs18 \bullet Added ability to paste URLs into {\b Dipstick} instead of dropping.
50\par\pard\plain\fi0\li0\f1\fs18 \bullet New install program now lets you install {\b Dipstick} to the location of your choice. 52\par\pard\plain\fi0\li0\f1\fs18 \bullet New install program now lets you install {\b Dipstick} to the location of your choice.
51\par\pard\plain\f1\fs24\qc\cf2\b 1.01 - March 13th, 1997 53\par\pard\plain\f1\fs24\qc\cf2\b 1.01 - March 13th, 1997
52\par\pard\plain\fi0\li0\f1\fs18 \bullet Resizable main {\b Dipstick} dialog window. 54\par\pard\plain\fi0\li0\f1\fs18 \bullet Resizable main {\b Dipstick} dialog window.
53\par\pard\plain\fi0\li0\f1\fs18 \bullet Come up with the best URL automatically. 55\par\pard\plain\fi0\li0\f1\fs18 \bullet Come up with the best URL automatically.
54\par\pard\plain\fi0\li0\f1\fs18 \bullet Workaround for redir.dll 56\par\pard\plain\fi0\li0\f1\fs18 \bullet Workaround for redir.dll
55\par\pard\plain\fi0\li0\f1\fs18 \bullet No more {\b\cf6 MSIE} 3.0 requirement. 57\par\pard\plain\fi0\li0\f1\fs18 \bullet No more {\b\cf6 MSIE} 3.0 requirement.
56\par\pard\plain\fi0\li0\f1\fs18 \bullet Remembers window positions and size as well as columns widths. 58\par\pard\plain\fi0\li0\f1\fs18 \bullet Remembers window positions and size as well as columns widths.
57\par\pard\plain\fi0\li0\f1\fs18 \bullet When manually adding locations - you may specify the URL, not host name as it was before (I still wonder how it came to my mind) 59\par\pard\plain\fi0\li0\f1\fs18 \bullet When manually adding locations - you may specify the URL, not host name as it was before (I still wonder how it came to my mind)
diff --git a/help/dipstick.xml b/help/dipstick.xml
index 4754e47..8ed0383 100644
--- a/help/dipstick.xml
+++ b/help/dipstick.xml
@@ -1,36 +1,39 @@
1<?xml version="1.0"?> 1<?xml version="1.0"?>
2<winhelp> 2<winhelp>
3 <topic id="About" title="About Dipstick" keywords="about"> 3 <topic id="About" title="About Dipstick" keywords="about">
4 <heading scroll="no">About <kin>Dipstick</kin></heading> 4 <heading scroll="no">About <kin>Dipstick</kin></heading>
5 <p><kin>Dipstick</kin> is our award-winning freeware that allows you to evaluate <term>mirror sites</term> to figure out which one has currently the least traffic.</p> 5 <p><kin>Dipstick</kin> is our award-winning freeware that allows you to evaluate <term>mirror sites</term> to figure out which one has currently the least traffic.</p>
6 <p/> 6 <p/>
7 <p><b><i>Enjoy!</i></b></p> 7 <p><b><i>Enjoy!</i></b></p>
8 <license years="1996-2004"/> 8 <license years="1996-2005"/>
9 <credits/> 9 <credits/>
10 </topic> 10 </topic>
11 <topic id="News" title="What's new"> 11 <topic id="News" title="What's new">
12 <heading scroll="no">What's New</heading> 12 <heading scroll="no">What's New</heading>
13 <newsfor version="3.1" date="July 26th, 2005">
14 <ni>Ability to parse multiple URLs from plaintext selection</ni>
15 </newsfor>
13 <newsfor version="3.0" date="July 11th, 2004"> 16 <newsfor version="3.0" date="July 11th, 2004">
14 <ni>Change of <a href="#About">license</a> and opening the source.</ni> 17 <ni>Change of <a href="#About">license</a> and opening the source.</ni>
15 <ni>Minor cosmetic changes</ni> 18 <ni>Minor cosmetic changes</ni>
16 </newsfor> 19 </newsfor>
17 <newsfor version="2.52" date="June 3rd, 1998"> 20 <newsfor version="2.52" date="June 3rd, 1998">
18 <ni>Now works properly with Winsock 2 for Windows95. Also may start working with non-Microsoft TCP/IP stacks.</ni> 21 <ni>Now works properly with Winsock 2 for Windows95. Also may start working with non-Microsoft TCP/IP stacks.</ni>
19 <ni>Fixed bug that caused GPF when removing all URLs after testing is over and you picked the URL of your choice.</ni> 22 <ni>Fixed bug that caused GPF when removing all URLs after testing is over and you picked the URL of your choice.</ni>
20 </newsfor> 23 </newsfor>
21 <newsfor version="2.5" date="December 30th, 1997"> 24 <newsfor version="2.5" date="December 30th, 1997">
22 <ni>Ability to export/import sets of URLs.</ni> 25 <ni>Ability to export/import sets of URLs.</ni>
23 <ni>Copy URL menu command in the Main Window and button in the Best URL window.</ni> 26 <ni>Copy URL menu command in the Main Window and button in the Best URL window.</ni>
24 <ni>Multiple URLs dragging or pasting. Works only for MSIE4 browser.</ni> 27 <ni>Multiple URLs dragging or pasting. Works only for MSIE4 browser.</ni>
25 <ni>Annoying ToolTips removed.</ni> 28 <ni>Annoying ToolTips removed.</ni>
26 </newsfor> 29 </newsfor>
27 <newsfor version="2.00" date="July 1st, 1997"> 30 <newsfor version="2.00" date="July 1st, 1997">
28 <ni>Drag'n'drop source added to the Best URL window.</ni> 31 <ni>Drag'n'drop source added to the Best URL window.</ni>
29 <ni>Completed/Total URLs counter added to <kin>Dipstick</kin> drag pad.</ni> 32 <ni>Completed/Total URLs counter added to <kin>Dipstick</kin> drag pad.</ni>
30 <ni>You may now drag'n'drop URLs from main <kin>Dipstick</kin> dialog window.</ni> 33 <ni>You may now drag'n'drop URLs from main <kin>Dipstick</kin> dialog window.</ni>
31 <ni>Added ability to paste URLs into <kin>Dipstick</kin> instead of dropping.</ni> 34 <ni>Added ability to paste URLs into <kin>Dipstick</kin> instead of dropping.</ni>
32 <ni>New install program now lets you install <kin>Dipstick</kin> to the location of your choice.</ni> 35 <ni>New install program now lets you install <kin>Dipstick</kin> to the location of your choice.</ni>
33 </newsfor> 36 </newsfor>
34 <newsfor version="1.01" date="March 13th, 1997"> 37 <newsfor version="1.01" date="March 13th, 1997">
35 <ni>Resizable main <kin>Dipstick</kin> dialog window.</ni> 38 <ni>Resizable main <kin>Dipstick</kin> dialog window.</ni>
36 <ni>Come up with the best URL automatically.</ni> 39 <ni>Come up with the best URL automatically.</ni>
diff --git a/install/install.cpp b/install/install.cpp
index 296f3a3..1d91bc2 100644
--- a/install/install.cpp
+++ b/install/install.cpp
@@ -1,30 +1,30 @@
1#include "resource.h" 1#include "resource.h"
2#include "../shared-code/install.h" 2#include "../shared-code/install.h"
3 3
4#define KINNAME "Dipstick" 4#define KINNAME "Dipstick"
5#define KINSHORT KINNAME 5#define KINSHORT KINNAME
6#define VERSION "3.0" 6#define VERSION "3.1-trunk"
7 7
8BOOL Install(void) 8BOOL Install(void)
9{ 9{
10STRING dPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group",KINSHORT "Path"); 10STRING dPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group",KINSHORT "Path");
11STRING kPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group","KINPath"); 11STRING kPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group","KINPath");
12LPCSTR qPath = ((LPCSTR)dPath)?(LPCSTR)dPath:(((LPCSTR)kPath)?(LPSTR)kPath:"C:\\Program Files\\Klever\\Nothings"); 12LPCSTR qPath = ((LPCSTR)dPath)?(LPCSTR)dPath:(((LPCSTR)kPath)?(LPSTR)kPath:"C:\\Program Files\\Klever\\Nothings");
13STRING path = REQUESTPATH(" " KINNAME " " VERSION,"\nEnter destination path:",qPath); 13STRING path = REQUESTPATH(" " KINNAME " " VERSION,"\nEnter destination path:",qPath);
14 if(!path) 14 if(!path)
15 return NULL; 15 return NULL;
16 16
17 #ifdefK_ANNED 17 #ifdefK_ANNED
18STRING sysDir(_MAX_PATH); 18STRING sysDir(_MAX_PATH);
19 GetSystemDirectory(sysDir,_MAX_PATH); 19 GetSystemDirectory(sysDir,_MAX_PATH);
20 INSTALLFILE("mfc42.dl_",sysDir,"mfc42.dll"); 20 INSTALLFILE("mfc42.dl_",sysDir,"mfc42.dll");
21#endif 21#endif
22 22
23 MAKE_PATH(path); 23 MAKE_PATH(path);
24STRING shortPath = GET_SHORT_PATH(path); 24STRING shortPath = GET_SHORT_PATH(path);
25 if(!shortPath){ 25 if(!shortPath){
26 MessageBox(NULL,"Failed to install " KINNAME " " VERSION " in specified directory",NULL,MB_ICONERROR|MB_OK); 26 MessageBox(NULL,"Failed to install " KINNAME " " VERSION " in specified directory",NULL,MB_ICONERROR|MB_OK);
27 return FALSE; 27 return FALSE;
28 } 28 }
29 29
30 if(!( 30 if(!(
diff --git a/install/install.rc b/install/install.rc
index 016c554..2bdee9c 100644
--- a/install/install.rc
+++ b/install/install.rc
@@ -110,73 +110,73 @@ END
1103 TEXTINCLUDE DISCARDABLE 1103 TEXTINCLUDE DISCARDABLE
111BEGIN 111BEGIN
112 "#include ""custom.rch""\0" 112 "#include ""custom.rch""\0"
113END 113END
114 114
115#endif // APSTUDIO_INVOKED 115#endif // APSTUDIO_INVOKED
116 116
117 117
118///////////////////////////////////////////////////////////////////////////// 118/////////////////////////////////////////////////////////////////////////////
119// 119//
120// Icon 120// Icon
121// 121//
122 122
123// Icon with lowest ID value placed first to ensure application icon 123// Icon with lowest ID value placed first to ensure application icon
124// remains consistent on all systems. 124// remains consistent on all systems.
125IDI_ICON ICON DISCARDABLE "../shared-data/install-icon.ico" 125IDI_ICON ICON DISCARDABLE "../shared-data/install-icon.ico"
126 126
127#ifndef _MAC 127#ifndef _MAC
128///////////////////////////////////////////////////////////////////////////// 128/////////////////////////////////////////////////////////////////////////////
129// 129//
130// Version 130// Version
131// 131//
132 132
133VS_VERSION_INFO VERSIONINFO 133VS_VERSION_INFO VERSIONINFO
134 FILEVERSION 3,0,0,0 134 FILEVERSION 3,1,0,0
135 PRODUCTVERSION 3,0,0,0 135 PRODUCTVERSION 3,1,0,0
136 FILEFLAGSMASK 0x3fL 136 FILEFLAGSMASK 0x3fL
137#ifdef _DEBUG 137#ifdef _DEBUG
138 FILEFLAGS 0x1L 138 FILEFLAGS 0x1L
139#else 139#else
140 FILEFLAGS 0x0L 140 FILEFLAGS 0x0L
141#endif 141#endif
142 FILEOS 0x40004L 142 FILEOS 0x40004L
143 FILETYPE 0x1L 143 FILETYPE 0x1L
144 FILESUBTYPE 0x0L 144 FILESUBTYPE 0x0L
145BEGIN 145BEGIN
146 BLOCK "StringFileInfo" 146 BLOCK "StringFileInfo"
147 BEGIN 147 BEGIN
148 BLOCK "040904b0" 148 BLOCK "040904b0"
149 BEGIN 149 BEGIN
150 VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0" 150 VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0"
151 VALUE "FileDescription", "INSTALL: Dipstick, mirror locator\0" 151 VALUE "FileDescription", "INSTALL: Dipstick, mirror locator\0"
152 VALUE "FileVersion", "3, 0, 0, 0\0" 152 VALUE "FileVersion", "3, 1, 0, 0\0"
153 VALUE "InternalName", "INSTALL\0" 153 VALUE "InternalName", "INSTALL\0"
154 VALUE "LegalCopyright", "Copyright © 1996-2004 Klever Group (http://www.klever.net/)\0" 154 VALUE "LegalCopyright", "Copyright © 1996-2005 Klever Group (http://www.klever.net/)\0"
155 VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0" 155 VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0"
156 VALUE "OriginalFilename", "INSTALL.EXE\0" 156 VALUE "OriginalFilename", "INSTALL.EXE\0"
157 VALUE "ProductName", "Dipstick\0" 157 VALUE "ProductName", "Dipstick\0"
158 VALUE "ProductVersion", "3, 0, 0, 0\0" 158 VALUE "ProductVersion", "3, 1, 0, 0\0"
159 END 159 END
160 END 160 END
161 BLOCK "VarFileInfo" 161 BLOCK "VarFileInfo"
162 BEGIN 162 BEGIN
163 VALUE "Translation", 0x409, 1200 163 VALUE "Translation", 0x409, 1200
164 END 164 END
165END 165END
166 166
167#endif // !_MAC 167#endif // !_MAC
168 168
169#endif // English (U.S.) resources 169#endif // English (U.S.) resources
170///////////////////////////////////////////////////////////////////////////// 170/////////////////////////////////////////////////////////////////////////////
171 171
172 172
173 173
174#ifndef APSTUDIO_INVOKED 174#ifndef APSTUDIO_INVOKED
175///////////////////////////////////////////////////////////////////////////// 175/////////////////////////////////////////////////////////////////////////////
176// 176//
177// Generated from the TEXTINCLUDE 3 resource. 177// Generated from the TEXTINCLUDE 3 resource.
178// 178//
179#include "custom.rch" 179#include "custom.rch"
180///////////////////////////////////////////////////////////////////////////// 180/////////////////////////////////////////////////////////////////////////////
181#endif // not APSTUDIO_INVOKED 181#endif // not APSTUDIO_INVOKED
182 182
diff --git a/resource.h b/resource.h
index 2af32cb..2f7b81e 100644
--- a/resource.h
+++ b/resource.h
@@ -1,45 +1,46 @@
1//{{NO_DEPENDENCIES}} 1//{{NO_DEPENDENCIES}}
2// Microsoft Developer Studio generated include file. 2// Microsoft Developer Studio generated include file.
3// Used by Dipstick.rc 3// Used by Dipstick.rc
4// 4//
5#define IDM_ABOUTBOX 0x0010 5#define IDM_ABOUTBOX 0x0010
6#define IDD_ABOUTBOX 100 6#define IDD_ABOUTBOX 100
7#define IDS_ABOUTBOX 101 7#define IDS_ABOUTBOX 101
8#define IDD_DIPSTICK_DIALOG 102 8#define IDD_DIPSTICK_DIALOG 102
9#define IDS_REGEX_NESTEDURL 102 9#define IDS_REGEX_NESTEDURL 102
10#define IDS_PS_FAILEDTOLOCK 102 10#define IDS_PS_FAILEDTOLOCK 102
11#define IDP_SOCKETS_INIT_FAILED 103 11#define IDP_SOCKETS_INIT_FAILED 103
12#define IDS_REGEX_CRACKHOST 104 12#define IDS_REGEX_CRACKHOST 104
13#define IDS_CSVEXT 104 13#define IDS_CSVEXT 104
14#define IDS_HN_BADURL 105 14#define IDS_HN_BADURL 105
15#define IDS_ABEST_CLEANUP 106 15#define IDS_ABEST_CLEANUP 106
16#define IDS_ABEST_NONEFOUND 107 16#define IDS_ABEST_NONEFOUND 107
17#define IDS_ABEST_TITLE 108 17#define IDS_ABEST_TITLE 108
18#define IDS_DRAGPAD_TITLE 109 18#define IDS_DRAGPAD_TITLE 109
19#define IDS_DRAGPAD_URLS 110 19#define IDS_DRAGPAD_URLS 110
20#define IDS_REGEX_HTMLURL 111 20#define IDS_REGEX_HTMLURL 111
21#define IDS_CSVFILTER 112 21#define IDS_CSVFILTER 112
22#define IDS_REGEX_URL 113
22#define IDR_MAINFRAME 128 23#define IDR_MAINFRAME 128
23#define IDD_DRAGPAD 129 24#define IDD_DRAGPAD 129
24#define IDR_DNDAVI 130 25#define IDR_DNDAVI 130
25#define IDD_OPTIONS 132 26#define IDD_OPTIONS 132
26#define IDR_MENU 133 27#define IDR_MENU 133
27#define IDD_MANUALHOST 134 28#define IDD_MANUALHOST 134
28#define IDD_PROPS 135 29#define IDD_PROPS 135
29#define IDI_PINGING 136 30#define IDI_PINGING 136
30#define IDI_PENDING 137 31#define IDI_PENDING 137
31#define IDI_COMPLETED 138 32#define IDI_COMPLETED 138
32#define IDI_UNREACHABLE 139 33#define IDI_UNREACHABLE 139
33#define IDB_DIABACK 140 34#define IDB_DIABACK 140
34#define IDD_AUTOBEST 141 35#define IDD_AUTOBEST 141
35#define IDW_BESTURL 142 36#define IDW_BESTURL 142
36#define IDR_DRAGAVI 143 37#define IDR_DRAGAVI 143
37#define IDD_URLS 145 38#define IDD_URLS 145
38#define IDC_HOSTLIST 1002 39#define IDC_HOSTLIST 1002
39#define IDC_DNDTARGET 1011 40#define IDC_DNDTARGET 1011
40#define IDC_OPTIONS 1013 41#define IDC_OPTIONS 1013
41#define IDC_NPINGS 1014 42#define IDC_NPINGS 1014
42#define IDC_PACKETSIZE 1015 43#define IDC_PACKETSIZE 1015
43#define IDC_TIMEOUT 1016 44#define IDC_TIMEOUT 1016
44#define IDC_INTERVAL 1017 45#define IDC_INTERVAL 1017
45#define IDC_KLEVERNET 1017 46#define IDC_KLEVERNET 1017
diff --git a/stdafx.h b/stdafx.h
index 06ef43f..ed0fe4e 100644
--- a/stdafx.h
+++ b/stdafx.h
@@ -8,29 +8,30 @@
8#include <afxwin.h> // MFC core and standard components 8#include <afxwin.h> // MFC core and standard components
9#include <afxext.h> // MFC extensions 9#include <afxext.h> // MFC extensions
10#ifndef _AFX_NO_AFXCMN_SUPPORT 10#ifndef _AFX_NO_AFXCMN_SUPPORT
11 #include <afxcmn.h> // MFC support for Windows 95 Common Controls 11 #include <afxcmn.h> // MFC support for Windows 95 Common Controls
12#endif // _AFX_NO_AFXCMN_SUPPORT 12#endif // _AFX_NO_AFXCMN_SUPPORT
13 13
14 #include <afxsock.h> // MFC socket extensions 14 #include <afxsock.h> // MFC socket extensions
15 15
16#include <afxole.h> 16#include <afxole.h>
17#include <afxtempl.h> 17#include <afxtempl.h>
18#include <afxmt.h> 18#include <afxmt.h>
19 19
20#include <winsock.h> 20#include <winsock.h>
21#include "shared-code/ms_icmp.h" 21#include "shared-code/ms_icmp.h"
22#include "shared-code/ip_icmp.h" 22#include "shared-code/ip_icmp.h"
23 23
24#include "shared-code/kICMP.h" 24#include "shared-code/kICMP.h"
25#include "shared-code/RegEx.h" 25#include "shared-code/RegEx.h"
26#include "CrackURL.h" 26#include "CrackURL.h"
27 27
28 enum{ 28 enum{
29 WM_DNP_ACTIVITYCOUNT = WM_USER+16, 29 WM_DNP_ACTIVITYCOUNT = WM_USER+16,
30 WM_DNP_URLPING, 30 WM_DNP_URLPING,
31 WM_DNP_UPDATEHOSTDATA, 31 WM_DNP_UPDATEHOSTDATA,
32 WM_DNP_HTML 32 WM_DNP_HTML,
33 WM_DNP_URLSPING
33}; 34};
34#include <MMSystem.h> 35#include <MMSystem.h>
35// CG: The following line was added by the Windows Multimedia component. 36// CG: The following line was added by the Windows Multimedia component.
36#pragma comment(lib, "winmm.lib") 37#pragma comment(lib, "winmm.lib")