summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--PumpKINDlg.cpp8
-rw-r--r--install/install.cpp2
-rw-r--r--install/install.rc8
-rw-r--r--pumpkin.rc10
4 files changed, 16 insertions, 12 deletions
diff --git a/PumpKINDlg.cpp b/PumpKINDlg.cpp
index 1e6d03f..0b3bf41 100644
--- a/PumpKINDlg.cpp
+++ b/PumpKINDlg.cpp
@@ -1029,387 +1029,391 @@ BOOL CWRQSocket::OnTFTP(tftp* p)
1029} 1029}
1030 1030
1031void tftp::SetOpcode(WORD op) 1031void tftp::SetOpcode(WORD op)
1032{ 1032{
1033 opcode = REVERSEBYTES(op); 1033 opcode = REVERSEBYTES(op);
1034} 1034}
1035void tftp::tftpDATA::SetBlock(WORD b) 1035void tftp::tftpDATA::SetBlock(WORD b)
1036{ 1036{
1037 block=REVERSEBYTES(b); 1037 block=REVERSEBYTES(b);
1038} 1038}
1039WORD tftp::tftpDATA::Block() 1039WORD tftp::tftpDATA::Block()
1040{ 1040{
1041 return REVERSEBYTES(block); 1041 return REVERSEBYTES(block);
1042} 1042}
1043WORD tftp::tftpACK::Block() 1043WORD tftp::tftpACK::Block()
1044{ 1044{
1045 return REVERSEBYTES(block); 1045 return REVERSEBYTES(block);
1046} 1046}
1047void tftp::tftpACK::SetBlock(WORD b) 1047void tftp::tftpACK::SetBlock(WORD b)
1048{ 1048{
1049 block = REVERSEBYTES(b); 1049 block = REVERSEBYTES(b);
1050} 1050}
1051WORD tftp::tftpERROR::Code() 1051WORD tftp::tftpERROR::Code()
1052{ 1052{
1053 return REVERSEBYTES(code); 1053 return REVERSEBYTES(code);
1054} 1054}
1055void tftp::tftpERROR::SetCode(WORD c) 1055void tftp::tftpERROR::SetCode(WORD c)
1056{ 1056{
1057 code = REVERSEBYTES(c); 1057 code = REVERSEBYTES(c);
1058} 1058}
1059 1059
1060 1060
1061CString tftp::errMessage() 1061CString tftp::errMessage()
1062{ 1062{
1063CString rv; 1063CString rv;
1064 if(memchr(data.m_ERROR.data,0,length-(tftpHdrSize-tftpSlackSize)-sizeof(data.m_ERROR.code))) 1064 if(memchr(data.m_ERROR.data,0,length-(tftpHdrSize-tftpSlackSize)-sizeof(data.m_ERROR.code)))
1065 rv = (LPCTSTR)data.m_ERROR.data; 1065 rv = (LPCTSTR)data.m_ERROR.data;
1066 return rv; 1066 return rv;
1067} 1067}
1068 1068
1069void CXferSocket::Destroy(BOOL success) 1069void CXferSocket::Destroy(BOOL success)
1070{ 1070{
1071 if(m_wndResolver){ 1071 if(m_wndResolver){
1072 delete m_wndResolver; 1072 delete m_wndResolver;
1073 m_wndResolver=NULL; 1073 m_wndResolver=NULL;
1074 } 1074 }
1075 SetTry(); 1075 SetTry();
1076 m_Daddy->m_bnw.StartSound( 1076 m_Daddy->m_bnw.StartSound(
1077 success 1077 success
1078 ? m_Daddy->m_bnwSuccess 1078 ? m_Daddy->m_bnwSuccess
1079 : m_Daddy->m_bnwAbort 1079 : m_Daddy->m_bnwAbort
1080 ); 1080 );
1081 if(m_File.m_hFile!=CFile::hFileNull){ 1081 if(m_File.m_hFile!=CFile::hFileNull){
1082 TRY{ 1082 TRY{
1083 m_File.Close(); 1083 m_File.Close();
1084 }CATCH(CFileException,e){ 1084 }CATCH(CFileException,e){
1085 TRACE0("Error closing file\n"); 1085 TRACE0("Error closing file\n");
1086 }END_CATCH 1086 }END_CATCH
1087 } 1087 }
1088 ASSERT(m_Daddy); 1088 ASSERT(m_Daddy);
1089 m_Daddy->KillTimer(m_hSocket); 1089 m_Daddy->KillTimer(m_hSocket);
1090 m_Daddy->m_Xfers.RemoveKey(m_hSocket); 1090 m_Daddy->m_Xfers.RemoveKey(m_hSocket);
1091LV_FINDINFO lvf; 1091LV_FINDINFO lvf;
1092 memset(&lvf,0,sizeof(lvf)); 1092 memset(&lvf,0,sizeof(lvf));
1093 lvf.flags=LVFI_PARAM; 1093 lvf.flags=LVFI_PARAM;
1094 lvf.lParam=(LPARAM)this; 1094 lvf.lParam=(LPARAM)this;
1095int i = m_Daddy->m_List.FindItem(&lvf); 1095int i = m_Daddy->m_List.FindItem(&lvf);
1096 if(i>=0) 1096 if(i>=0)
1097 m_Daddy->m_List.DeleteItem(i); 1097 m_Daddy->m_List.DeleteItem(i);
1098 delete this; 1098 delete this;
1099} 1099}
1100 1100
1101void CPumpKINDlg::LogLine(LPCTSTR str) 1101void CPumpKINDlg::LogLine(LPCTSTR str)
1102{ 1102{
1103 ASSERT(m_LogLength); 1103 ASSERT(m_LogLength);
1104 while(m_Log.GetCount()>m_LogLength && m_Log.GetCount()!=LB_ERR){ 1104 while(m_Log.GetCount()>m_LogLength && m_Log.GetCount()!=LB_ERR){
1105 CTime *t = (CTime*)m_Log.GetItemData(0); 1105 CTime *t = (CTime*)m_Log.GetItemData(0);
1106 if(((DWORD)t)!=LB_ERR){ 1106 if(((DWORD)t)!=LB_ERR){
1107 ASSERT(t); 1107 ASSERT(t);
1108 m_LogTimes.RemoveKey(t); 1108 m_LogTimes.RemoveKey(t);
1109 delete t; 1109 delete t;
1110 } 1110 }
1111 m_Log.DeleteString(0); 1111 m_Log.DeleteString(0);
1112 } 1112 }
1113int i = m_Log.AddString(str); 1113int i = m_Log.AddString(str);
1114 ASSERT(i!=LB_ERR); 1114 ASSERT(i!=LB_ERR);
1115CTime *t = new CTime(CTime::GetCurrentTime()); 1115CTime *t = new CTime(CTime::GetCurrentTime());
1116 m_Log.SetItemData(i,(DWORD)(m_LogTimes[t]=t)); 1116 m_Log.SetItemData(i,(DWORD)(m_LogTimes[t]=t));
1117 m_Log.SetCurSel(i); 1117 m_Log.SetCurSel(i);
1118} 1118}
1119 1119
1120void CPumpKINDlg::LogLine(UINT msgID) 1120void CPumpKINDlg::LogLine(UINT msgID)
1121{ 1121{
1122CString tmp; 1122CString tmp;
1123 tmp.Format(msgID); 1123 tmp.Format(msgID);
1124 LogLine(tmp); 1124 LogLine(tmp);
1125} 1125}
1126 1126
1127void CXferSocket::TurnSlashes(CString& fn,BOOL bBack) 1127void CXferSocket::TurnSlashes(CString& fn,BOOL bBack)
1128{ 1128{
1129 ints = fn.Find(bBack?'/':'\\'); 1129 ints = fn.Find(bBack?'/':'\\');
1130 while(s>=0){ 1130 while(s>=0){
1131 fn.SetAt(s,bBack?'\\':'/'); 1131 fn.SetAt(s,bBack?'\\':'/');
1132 s = fn.Find(bBack?'/':'\\'); 1132 s = fn.Find(bBack?'/':'\\');
1133 } 1133 }
1134} 1134}
1135 1135
1136CString CXferSocket::ApplyRoot(LPCTSTR fileName) 1136CString CXferSocket::ApplyRoot(LPCTSTR fileName)
1137{ 1137{
1138 ASSERT(m_Daddy); 1138 ASSERT(m_Daddy);
1139CString fn = fileName; 1139CString fn = fileName;
1140CString rv = m_Daddy->m_TFTPRoot; 1140CString rv = m_Daddy->m_TFTPRoot;
1141 if(rv.IsEmpty()) 1141 if(rv.IsEmpty())
1142 rv = "."; 1142 rv = ".";
1143 if(rv[rv.GetLength()-1]!='\\') 1143 if(rv[rv.GetLength()-1]!='\\')
1144 rv+="\\"; 1144 rv+="\\";
1145 while((!fn.IsEmpty()) && fn[0]=='\\') 1145 while((!fn.IsEmpty()) && fn[0]=='\\')
1146 fn=fn.Mid(1); 1146 fn=fn.Mid(1);
1147 rv+=fn; 1147 rv+=fn;
1148 return rv; 1148 return rv;
1149} 1149}
1150 1150
1151void CPumpKINDlg::OnOptions() 1151void CPumpKINDlg::OnOptions()
1152{ 1152{
1153CPropertySheet cps(IDS_TITLE_OPTIONS,this); 1153CPropertySheet cps(IDS_TITLE_OPTIONS,this);
1154CPropsServer server; 1154CPropsServer server;
1155CPropsNetwork network; 1155CPropsNetwork network;
1156CPropsSounds sounds; 1156CPropsSounds sounds;
1157 1157
1158 server.m_RRQMode=m_RRQMode; 1158 server.m_RRQMode=m_RRQMode;
1159 server.m_TFTPRoot=m_TFTPRoot; 1159 server.m_TFTPRoot=m_TFTPRoot;
1160 server.m_TFTPSubdirs=m_bTFTPSubdirs; 1160 server.m_TFTPSubdirs=m_bTFTPSubdirs;
1161 server.m_WRQMode=m_WRQMode; 1161 server.m_WRQMode=m_WRQMode;
1162 server.m_PromptTimeOut=m_PromptTimeOut; 1162 server.m_PromptTimeOut=m_PromptTimeOut;
1163 1163
1164 network.m_ListenPort=m_ListenPort; 1164 network.m_ListenPort=m_ListenPort;
1165 network.m_SpeakPort=m_SpeakPort; 1165 network.m_SpeakPort=m_SpeakPort;
1166 network.m_TimeOut=m_TFTPTimeOut.GetTotalSeconds(); 1166 network.m_TimeOut=m_TFTPTimeOut.GetTotalSeconds();
1167 network.m_BlockSize=m_BlockSize; 1167 network.m_BlockSize=m_BlockSize;
1168 1168
1169 sounds.m_Request = m_bnwRequest; 1169 sounds.m_Request = m_bnwRequest;
1170 sounds.m_Success = m_bnwSuccess; 1170 sounds.m_Success = m_bnwSuccess;
1171 sounds.m_Abort = m_bnwAbort; 1171 sounds.m_Abort = m_bnwAbort;
1172 1172
1173 cps.AddPage(&server); 1173 cps.AddPage(&server);
1174 cps.AddPage(&network); 1174 cps.AddPage(&network);
1175 cps.AddPage(&sounds); 1175 cps.AddPage(&sounds);
1176 if(cps.DoModal()==IDOK){ 1176 if(cps.DoModal()==IDOK){
1177 m_RRQMode=server.m_RRQMode; 1177 m_RRQMode=server.m_RRQMode;
1178 m_TFTPRoot=server.m_TFTPRoot; 1178 m_TFTPRoot=server.m_TFTPRoot;
1179 m_bTFTPSubdirs=server.m_TFTPSubdirs; 1179 m_bTFTPSubdirs=server.m_TFTPSubdirs;
1180 m_WRQMode=server.m_WRQMode; 1180 m_WRQMode=server.m_WRQMode;
1181 m_PromptTimeOut=server.m_PromptTimeOut; 1181 m_PromptTimeOut=server.m_PromptTimeOut;
1182 1182
1183 m_ListenPort=network.m_ListenPort; 1183 m_ListenPort=network.m_ListenPort;
1184 m_SpeakPort=network.m_SpeakPort; 1184 m_SpeakPort=network.m_SpeakPort;
1185 m_TFTPTimeOut=CTimeSpan(network.m_TimeOut); 1185 m_TFTPTimeOut=CTimeSpan(network.m_TimeOut);
1186 m_BlockSize=network.m_BlockSize; 1186 m_BlockSize=network.m_BlockSize;
1187 1187
1188 m_bnwRequest = sounds.m_Request; 1188 m_bnwRequest = sounds.m_Request;
1189 m_bnwSuccess = sounds.m_Success; 1189 m_bnwSuccess = sounds.m_Success;
1190 m_bnwAbort = sounds.m_Abort; 1190 m_bnwAbort = sounds.m_Abort;
1191 } 1191 }
1192} 1192}
1193 1193
1194BOOL CRRQSocket::ConfirmRequest() 1194BOOL CRRQSocket::ConfirmRequest()
1195{ 1195{
1196CConfirmRRQDlg cd(NULL); 1196CConfirmRRQDlg cd(NULL);
1197 cd.m_Daddy=this; 1197 cd.m_Daddy=this;
1198 cd.m_File=m_FileName; 1198 cd.m_File=m_FileName;
1199 cd.m_Host=inet_ntoa(m_Peer.sin_addr); 1199 cd.m_Host=inet_ntoa(m_Peer.sin_addr);
1200 if(cd.DoModal()==IDOK) 1200 if(cd.DoModal()==IDOK)
1201 return TRUE; 1201 return TRUE;
1202 return FALSE; 1202 return FALSE;
1203} 1203}
1204 1204
1205CWRQSocket::CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin) 1205CWRQSocket::CWRQSocket(CPumpKINDlg* daddy,LPCTSTR fileName,LPCTSTR type,SOCKADDR_IN *sin)
1206 : CXferSocket(daddy,fileName,type,sin) 1206 : CXferSocket(daddy,fileName,type,sin)
1207{ 1207{
1208 state=stateNone; 1208 state=stateNone;
1209 m_ACK=0; 1209 m_ACK=0;
1210 m_LastSlack=0; 1210 m_LastSlack=0;
1211 m_bResume=FALSE; 1211 m_bResume=FALSE;
1212} 1212}
1213 1213
1214BOOL CWRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName) 1214BOOL CWRQSocket::Create(LPCTSTR localFile,LPCTSTR hostName)
1215{ 1215{
1216 if(!CAsyncSocket::Create(0,SOCK_DGRAM)) 1216 if(!CAsyncSocket::Create(0,SOCK_DGRAM))
1217 return FALSE; 1217 return FALSE;
1218 ASSERT(m_Daddy); 1218 ASSERT(m_Daddy);
1219 ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName); 1219 ASSERT(m_Peer.sin_addr.s_addr!=INADDR_NONE || hostName);
1220 m_Daddy->m_Xfers[m_hSocket]=this; 1220 m_Daddy->m_Xfers[m_hSocket]=this;
1221 TurnSlashes(m_FileName,TRUE);
1222 UpdateList(); 1221 UpdateList();
1223CString fn = localFile?ApplyRootGently(localFile):ApplyRoot(m_FileName); 1222CString lf;
1223 if(!localFile) {
1224 lf = m_FileName;
1225 TurnSlashes(lf,TRUE);
1226 }
1227CString fn = localFile?ApplyRootGently(localFile):ApplyRoot(lf);
1224 if(!localFile){// This is an incoming request.. 1228 if(!localFile){// This is an incoming request..
1225 if(CheckBadRelativeness(m_FileName)){ 1229 if(CheckBadRelativeness(m_FileName)){
1226 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); 1230 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS);
1227 return TRUE; 1231 return TRUE;
1228 } 1232 }
1229 BOOL exists; 1233 BOOL exists;
1230 if(!_access((LPCTSTR)fn,0)) 1234 if(!_access((LPCTSTR)fn,0))
1231 m_Rename=exists=TRUE; 1235 m_Rename=exists=TRUE;
1232 else 1236 else
1233 m_Rename=exists=FALSE; 1237 m_Rename=exists=FALSE;
1234 // *** m_WRQMode only if server transfer 1238 // *** m_WRQMode only if server transfer
1235 switch(m_Daddy->m_WRQMode){ 1239 switch(m_Daddy->m_WRQMode){
1236 case CPumpKINDlg::wrqTakeAll: 1240 case CPumpKINDlg::wrqTakeAll:
1237 if(exists){ 1241 if(exists){
1238 if(!RenameFile(fn)){ 1242 if(!RenameFile(fn)){
1239 Deny(tftp::errDiskFull,IDS_TFTP_ERROR_FAILEDTORENAME); 1243 Deny(tftp::errDiskFull,IDS_TFTP_ERROR_FAILEDTORENAME);
1240 return TRUE; 1244 return TRUE;
1241 } 1245 }
1242 } 1246 }
1243 break; 1247 break;
1244 case CPumpKINDlg::wrqConfirmIfExists: 1248 case CPumpKINDlg::wrqConfirmIfExists:
1245 if(!exists) 1249 if(!exists)
1246 break; 1250 break;
1247 case CPumpKINDlg::wrqAlwaysConfirm: 1251 case CPumpKINDlg::wrqAlwaysConfirm:
1248 if(exists) 1252 if(exists)
1249 m_bResume=TRUE; 1253 m_bResume=TRUE;
1250 if(ConfirmRequest()){ 1254 if(ConfirmRequest()){
1251 if(m_Rename){ 1255 if(m_Rename){
1252 RenameFile(fn); 1256 RenameFile(fn);
1253 if(SaveAs(fn)) 1257 if(SaveAs(fn))
1254 break; 1258 break;
1255 }else 1259 }else
1256 break; 1260 break;
1257 } 1261 }
1258 case CPumpKINDlg::wrqDenyAll: 1262 case CPumpKINDlg::wrqDenyAll:
1259 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS); 1263 Deny(tftp::errAccessViolation,IDS_TFTP_ERROR_ACCESS);
1260 return TRUE; 1264 return TRUE;
1261 } 1265 }
1262 } 1266 }
1263CFileException e; 1267CFileException e;
1264 if(!m_File.Open( 1268 if(!m_File.Open(
1265 fn, 1269 fn,
1266 m_bResume 1270 m_bResume
1267 ?(CFile::modeWrite|CFile::shareDenyWrite) 1271 ?(CFile::modeWrite|CFile::shareDenyWrite)
1268 :(CFile::modeCreate|CFile::modeWrite|CFile::shareDenyWrite), 1272 :(CFile::modeCreate|CFile::modeWrite|CFile::shareDenyWrite),
1269 &e 1273 &e
1270 )){ 1274 )){
1271 if(localFile){// Outgoing request 1275 if(localFile){// Outgoing request
1272 CString tmp; 1276 CString tmp;
1273 tmp.Format(IDS_LOG_FAILEDTOOPEN,fn); 1277 tmp.Format(IDS_LOG_FAILEDTOOPEN,fn);
1274 m_Daddy->LogLine(tmp); 1278 m_Daddy->LogLine(tmp);
1275 return FALSE; 1279 return FALSE;
1276 }else{ 1280 }else{
1277 Deny(&e); 1281 Deny(&e);
1278 return TRUE; 1282 return TRUE;
1279 } 1283 }
1280 } 1284 }
1281 if(hostName){ 1285 if(hostName){
1282 m_HostName=hostName; 1286 m_HostName=hostName;
1283 1287
1284 CString tmp; 1288 CString tmp;
1285 tmp.Format(IDS_LOG_REQUESTING,m_FileName,m_HostName); 1289 tmp.Format(IDS_LOG_REQUESTING,m_FileName,m_HostName);
1286 m_Daddy->LogLine(tmp); 1290 m_Daddy->LogLine(tmp);
1287 1291
1288 CString inAddr = hostName; 1292 CString inAddr = hostName;
1289 int at = inAddr.Find('@'); 1293 int at = inAddr.Find('@');
1290 if(at>=0) 1294 if(at>=0)
1291 inAddr=inAddr.Mid(at+1); 1295 inAddr=inAddr.Mid(at+1);
1292 if((m_Peer.sin_addr.s_addr=inet_addr((LPCTSTR)inAddr))==INADDR_NONE){ 1296 if((m_Peer.sin_addr.s_addr=inet_addr((LPCTSTR)inAddr))==INADDR_NONE){
1293 ASSERT(!m_wndResolver); 1297 ASSERT(!m_wndResolver);
1294 m_wndResolver = new CResolver(this); 1298 m_wndResolver = new CResolver(this);
1295 ASSERT(m_wndResolver); 1299 ASSERT(m_wndResolver);
1296 return m_wndResolver->Resolve(); 1300 return m_wndResolver->Resolve();
1297 }else{ 1301 }else{
1298 OnHostKnown(); 1302 OnHostKnown();
1299 return TRUE; 1303 return TRUE;
1300 } 1304 }
1301 } 1305 }
1302CString v; 1306CString v;
1303tftp::tftpOptions oack; 1307tftp::tftpOptions oack;
1304 if(m_Options.Lookup(tftpoTSize,v)){ 1308 if(m_Options.Lookup(tftpoTSize,v)){
1305 m_xferSize=atol(v); 1309 m_xferSize=atol(v);
1306 if(!m_xferSize){ 1310 if(!m_xferSize){
1307 Deny(tftp::errOption,IDS_TFTP_ERROR_TSIZE); 1311 Deny(tftp::errOption,IDS_TFTP_ERROR_TSIZE);
1308 return TRUE; 1312 return TRUE;
1309 } 1313 }
1310 } 1314 }
1311 if(m_Options.Lookup(tftpoBSize,v)){ 1315 if(m_Options.Lookup(tftpoBSize,v)){
1312 m_blkSize=atoi(v); 1316 m_blkSize=atoi(v);
1313 if(!m_blkSize){// *** Do more about sanity check 1317 if(!m_blkSize){// *** Do more about sanity check
1314 Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE); 1318 Deny(tftp::errOption,IDS_TFTP_ERROR_BSIZE);
1315 return TRUE; 1319 return TRUE;
1316 } 1320 }
1317 v.Format("%u",m_blkSize); 1321 v.Format("%u",m_blkSize);
1318 oack[tftpoBSize]=v; 1322 oack[tftpoBSize]=v;
1319 } 1323 }
1320 if(m_Options.Lookup(tftpoTOut,v)){ 1324 if(m_Options.Lookup(tftpoTOut,v)){
1321 m_timeOut=atoi(v); 1325 m_timeOut=atoi(v);
1322 if(!m_timeOut){// *** Do more about sanity check 1326 if(!m_timeOut){// *** Do more about sanity check
1323 Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT); 1327 Deny(tftp::errOption,IDS_TFTP_ERROR_TOUT);
1324 return TRUE; 1328 return TRUE;
1325 } 1329 }
1326 v.Format("%u",m_timeOut); 1330 v.Format("%u",m_timeOut);
1327 oack[tftpoTOut]=v; 1331 oack[tftpoTOut]=v;
1328 } 1332 }
1329 if(m_Options.Lookup(tftpoXResume,v) && m_bResume){ 1333 if(m_Options.Lookup(tftpoXResume,v) && m_bResume){
1330 m_ACK=m_File.GetLength()/m_blkSize; 1334 m_ACK=m_File.GetLength()/m_blkSize;
1331 v.Format("%u",m_ACK); 1335 v.Format("%u",m_ACK);
1332 oack[tftpoXResume]=v; 1336 oack[tftpoXResume]=v;
1333 }else 1337 }else
1334 m_ACK=0; 1338 m_ACK=0;
1335 state=stateXfer; 1339 state=stateXfer;
1336 if(oack.GetCount()){ 1340 if(oack.GetCount()){
1337 tftp *p = tftp::Allocate(tftp::tftpOACK::tftpSize(&oack)); 1341 tftp *p = tftp::Allocate(tftp::tftpOACK::tftpSize(&oack));
1338 ASSERT(p); 1342 ASSERT(p);
1339 p->SetOpcode(tftp::opOACK); 1343 p->SetOpcode(tftp::opOACK);
1340 p->data.m_OACK.Set(&oack); 1344 p->data.m_OACK.Set(&oack);
1341 PostTFTP(p,TRUE); 1345 PostTFTP(p,TRUE);
1342 }else 1346 }else
1343 DoXfer(); 1347 DoXfer();
1344 return TRUE; 1348 return TRUE;
1345} 1349}
1346 1350
1347BOOL CWRQSocket::ConfirmRequest() 1351BOOL CWRQSocket::ConfirmRequest()
1348{ 1352{
1349CConfirmWRQDlg cd(NULL); 1353CConfirmWRQDlg cd(NULL);
1350 cd.m_Daddy=this; 1354 cd.m_Daddy=this;
1351 cd.m_File=m_FileName; 1355 cd.m_File=m_FileName;
1352 cd.m_Host=inet_ntoa(m_Peer.sin_addr); 1356 cd.m_Host=inet_ntoa(m_Peer.sin_addr);
1353 switch(cd.DoModal()){ 1357 switch(cd.DoModal()){
1354 case IDOK: 1358 case IDOK:
1355 m_Rename=FALSE; 1359 m_Rename=FALSE;
1356 m_bResume=FALSE; 1360 m_bResume=FALSE;
1357 return TRUE; 1361 return TRUE;
1358 case IDC_RENAME: 1362 case IDC_RENAME:
1359 m_bResume=FALSE; 1363 m_bResume=FALSE;
1360 m_Rename=TRUE; 1364 m_Rename=TRUE;
1361 return TRUE; 1365 return TRUE;
1362 case IDC_RESUME: 1366 case IDC_RESUME:
1363 m_Rename=FALSE; 1367 m_Rename=FALSE;
1364 m_bResume=TRUE; 1368 m_bResume=TRUE;
1365 return TRUE; 1369 return TRUE;
1366 case IDCANCEL: 1370 case IDCANCEL:
1367 return FALSE; 1371 return FALSE;
1368 } 1372 }
1369 return FALSE; 1373 return FALSE;
1370} 1374}
1371 1375
1372BOOL CWRQSocket::RenameFile(CString& fn) 1376BOOL CWRQSocket::RenameFile(CString& fn)
1373{ 1377{
1374CString renamed = fn; 1378CString renamed = fn;
1375 if(fn.IsEmpty()) 1379 if(fn.IsEmpty())
1376 return FALSE; 1380 return FALSE;
1377 if(fn[fn.GetLength()-1]==')'){ 1381 if(fn[fn.GetLength()-1]==')'){
1378 int op = fn.ReverseFind('('); 1382 int op = fn.ReverseFind('(');
1379 if(op>0 && fn[op-1]==' '){ 1383 if(op>0 && fn[op-1]==' '){
1380 if(fn.Mid(op+1,fn.GetLength()-op-2).SpanExcluding("0123456789").IsEmpty()) 1384 if(fn.Mid(op+1,fn.GetLength()-op-2).SpanExcluding("0123456789").IsEmpty())
1381 renamed = renamed.Left(op-1); 1385 renamed = renamed.Left(op-1);
1382 } 1386 }
1383 } 1387 }
1384CString testFN; 1388CString testFN;
1385 for(UINT tmp=0;tmp<32768;tmp++){ 1389 for(UINT tmp=0;tmp<32768;tmp++){
1386 testFN.Format("%s (%u)",(LPCTSTR)renamed,tmp); 1390 testFN.Format("%s (%u)",(LPCTSTR)renamed,tmp);
1387 if(!_access((LPCTSTR)testFN,0)) 1391 if(!_access((LPCTSTR)testFN,0))
1388 continue; 1392 continue;
1389 fn=testFN; 1393 fn=testFN;
1390 return TRUE; 1394 return TRUE;
1391 } 1395 }
1392 return FALSE; 1396 return FALSE;
1393} 1397}
1394 1398
1395BOOL CWRQSocket::SaveAs(CString& fn) 1399BOOL CWRQSocket::SaveAs(CString& fn)
1396{ 1400{
1397CFileDialog cfd(FALSE,NULL,fn,OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST,NULL,m_Daddy); 1401CFileDialog cfd(FALSE,NULL,fn,OFN_EXPLORER|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_PATHMUSTEXIST,NULL,m_Daddy);
1398CString title; 1402CString title;
1399 title.LoadString(IDS_RENAME_TITLE); 1403 title.LoadString(IDS_RENAME_TITLE);
1400 cfd.m_ofn.lpstrTitle=(LPCTSTR)title; 1404 cfd.m_ofn.lpstrTitle=(LPCTSTR)title;
1401 if(cfd.DoModal()!=IDOK) 1405 if(cfd.DoModal()!=IDOK)
1402 return FALSE; 1406 return FALSE;
1403 fn = cfd.GetPathName(); 1407 fn = cfd.GetPathName();
1404 return TRUE; 1408 return TRUE;
1405} 1409}
1406 1410
1407void CWRQSocket::DoXfer() 1411void CWRQSocket::DoXfer()
1408{ 1412{
1409tftp *p = tftp::Allocate(tftp::tftpACK::tftpSize()); 1413tftp *p = tftp::Allocate(tftp::tftpACK::tftpSize());
1410 ASSERT(p); 1414 ASSERT(p);
1411 p->SetOpcode(tftp::opACK); 1415 p->SetOpcode(tftp::opACK);
1412 p->data.m_ACK.SetBlock(m_ACK); 1416 p->data.m_ACK.SetBlock(m_ACK);
1413 TRACE1("WRQ-ACK-%u\n",m_ACK); 1417 TRACE1("WRQ-ACK-%u\n",m_ACK);
1414 PostTFTP(p,TRUE);// *** ??? Hope this is right 1418 PostTFTP(p,TRUE);// *** ??? Hope this is right
1415} 1419}
diff --git a/install/install.cpp b/install/install.cpp
index 62f1e20..6fa4ae4 100644
--- a/install/install.cpp
+++ b/install/install.cpp
@@ -1,67 +1,67 @@
1#include "resource.h" 1#include "resource.h"
2#include "../shared-code/install.h" 2#include "../shared-code/install.h"
3 3
4 #defineKINAME "PumpKIN 2.5" 4 #defineKINAME "PumpKIN 2.5.1-trunk"
5#define SKINAME "PumpKIN" 5#define SKINAME "PumpKIN"
6 6
7BOOL Install(void) 7BOOL Install(void)
8{ 8{
9STRING dPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group",SKINAME "Path"); 9STRING dPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group",SKINAME "Path");
10STRING kPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group","KINPath"); 10STRING kPath = strFETCH_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group","KINPath");
11LPCSTR qPath = ((LPCSTR)dPath)?(LPCSTR)dPath:(((LPCSTR)kPath)?(LPSTR)kPath:"C:\\Program Files\\Klever\\Nothings"); 11LPCSTR qPath = ((LPCSTR)dPath)?(LPCSTR)dPath:(((LPCSTR)kPath)?(LPSTR)kPath:"C:\\Program Files\\Klever\\Nothings");
12STRING path = REQUESTPATH(" " KINAME,"\nEnter destination path:",qPath); 12STRING path = REQUESTPATH(" " KINAME,"\nEnter destination path:",qPath);
13 if(!path) 13 if(!path)
14 return NULL; 14 return NULL;
15 15
16 #ifdefK_ANNED 16 #ifdefK_ANNED
17STRING sysDir(_MAX_PATH); 17STRING sysDir(_MAX_PATH);
18 GetSystemDirectory(sysDir,_MAX_PATH); 18 GetSystemDirectory(sysDir,_MAX_PATH);
19 INSTALLFILE("mfc42.dl_",sysDir,"mfc42.dll"); 19 INSTALLFILE("mfc42.dl_",sysDir,"mfc42.dll");
20#endif 20#endif
21 21
22 MAKE_PATH(path); 22 MAKE_PATH(path);
23STRING shortPath = GET_SHORT_PATH(path); 23STRING shortPath = GET_SHORT_PATH(path);
24 if(!shortPath){ 24 if(!shortPath){
25 MessageBox(NULL,"Failed to install " KINAME " in specified directory",NULL,MB_ICONERROR|MB_OK); 25 MessageBox(NULL,"Failed to install " KINAME " in specified directory",NULL,MB_ICONERROR|MB_OK);
26 return FALSE; 26 return FALSE;
27 } 27 }
28 28
29 if(!( 29 if(!(
30 INSTALLFILE(SKINAME ".ex_",path,SKINAME ".exe") && 30 INSTALLFILE(SKINAME ".ex_",path,SKINAME ".exe") &&
31 INSTALLFILE(SKINAME ".hl_",path,SKINAME ".hlp") && 31 INSTALLFILE(SKINAME ".hl_",path,SKINAME ".hlp") &&
32 INSTALLFILE(SKINAME ".cn_",path,SKINAME ".cnt") 32 INSTALLFILE(SKINAME ".cn_",path,SKINAME ".cnt")
33 )){ 33 )){
34 MessageBox(NULL,"Failed to install " KINAME " in specified directory",NULL,MB_ICONERROR|MB_OK); 34 MessageBox(NULL,"Failed to install " KINAME " in specified directory",NULL,MB_ICONERROR|MB_OK);
35 return FALSE; 35 return FALSE;
36 } 36 }
37 ADDMENU("Klever Group",SKINAME,path, SKINAME ".exe"); 37 ADDMENU("Klever Group",SKINAME,path, SKINAME ".exe");
38 38
39 strSET_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group",SKINAME "Path",path); 39 strSET_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group",SKINAME "Path",path);
40 strSET_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group","KINPath",path); 40 strSET_REG_KEY(HKEY_LOCAL_MACHINE,"Software\\Klever Group","KINPath",path);
41 41
42FILE* inf=CREATE_INF_FILE(path,SKINAME ".INF"); 42FILE* inf=CREATE_INF_FILE(path,SKINAME ".INF");
43 if(!inf){ 43 if(!inf){
44 MessageBox(NULL,"Failed to install " KINAME,NULL,MB_ICONERROR|MB_OK); 44 MessageBox(NULL,"Failed to install " KINAME,NULL,MB_ICONERROR|MB_OK);
45 return FALSE; 45 return FALSE;
46 } 46 }
47 INF_FILE_HEADER(inf); 47 INF_FILE_HEADER(inf);
48 INF_FILE_SECTION(inf,"Uninstall"); 48 INF_FILE_SECTION(inf,"Uninstall");
49 fprintf(inf,"AddReg=kFiles\nDelReg=kReg\nUpdateInis=kMenu\n"); 49 fprintf(inf,"AddReg=kFiles\nDelReg=kReg\nUpdateInis=kMenu\n");
50 INF_FILE_SECTION(inf,"kFiles"); 50 INF_FILE_SECTION(inf,"kFiles");
51 INF_REMOVE_ROOT(inf,SKINAME "Files",shortPath); 51 INF_REMOVE_ROOT(inf,SKINAME "Files",shortPath);
52 INF_REMOVE_FILE(inf,SKINAME "Files",SKINAME ".exe"); 52 INF_REMOVE_FILE(inf,SKINAME "Files",SKINAME ".exe");
53 INF_REMOVE_HELP_FILE(inf,SKINAME "Files",SKINAME); 53 INF_REMOVE_HELP_FILE(inf,SKINAME "Files",SKINAME);
54 INF_REMOVE_FILE(inf,SKINAME "Files",SKINAME ".inf"); 54 INF_REMOVE_FILE(inf,SKINAME "Files",SKINAME ".inf");
55 INF_FILE_SECTION(inf,"kReg"); 55 INF_FILE_SECTION(inf,"kReg");
56 INF_UNINSTALL_REG(inf,SKINAME); 56 INF_UNINSTALL_REG(inf,SKINAME);
57 INF_FILE_SECTION(inf,"kMenu"); 57 INF_FILE_SECTION(inf,"kMenu");
58 INF_MENU_GROUP(inf,1,"Klever Group"); 58 INF_MENU_GROUP(inf,1,"Klever Group");
59 INF_MENU_ITEM(inf,1,SKINAME); 59 INF_MENU_ITEM(inf,1,SKINAME);
60 fclose(inf); 60 fclose(inf);
61 61
62 REG_UNINSTALL_COMMAND(SKINAME,"Klever " KINAME,shortPath,SKINAME ".INF","Uninstall"); 62 REG_UNINSTALL_COMMAND(SKINAME,"Klever " KINAME,shortPath,SKINAME ".INF","Uninstall");
63 63
64 MessageBox(NULL,KINAME " installed successfully, you may now run it from 'Programs/Klever Group' menu or remove it using Control Panel Add/Remove Programs applet."," Rejoice!",MB_ICONINFORMATION|MB_OK); 64 MessageBox(NULL,KINAME " installed successfully, you may now run it from 'Programs/Klever Group' menu or remove it using Control Panel Add/Remove Programs applet."," Rejoice!",MB_ICONINFORMATION|MB_OK);
65 65
66 return TRUE; 66 return TRUE;
67} 67}
diff --git a/install/install.rc b/install/install.rc
index b1a3037..30907ad 100644
--- a/install/install.rc
+++ b/install/install.rc
@@ -1,182 +1,182 @@
1//Microsoft Developer Studio generated resource script. 1//Microsoft Developer Studio generated resource script.
2// 2//
3#include "resource.h" 3#include "resource.h"
4 4
5#define APSTUDIO_READONLY_SYMBOLS 5#define APSTUDIO_READONLY_SYMBOLS
6///////////////////////////////////////////////////////////////////////////// 6/////////////////////////////////////////////////////////////////////////////
7// 7//
8// Generated from the TEXTINCLUDE 2 resource. 8// Generated from the TEXTINCLUDE 2 resource.
9// 9//
10#include "afxres.h" 10#include "afxres.h"
11 11
12///////////////////////////////////////////////////////////////////////////// 12/////////////////////////////////////////////////////////////////////////////
13#undef APSTUDIO_READONLY_SYMBOLS 13#undef APSTUDIO_READONLY_SYMBOLS
14 14
15///////////////////////////////////////////////////////////////////////////// 15/////////////////////////////////////////////////////////////////////////////
16// English (U.S.) resources 16// English (U.S.) resources
17 17
18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
19#ifdef _WIN32 19#ifdef _WIN32
20LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 20LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
21#pragma code_page(1252) 21#pragma code_page(1252)
22#endif //_WIN32 22#endif //_WIN32
23 23
24///////////////////////////////////////////////////////////////////////////// 24/////////////////////////////////////////////////////////////////////////////
25// 25//
26// Dialog 26// Dialog
27// 27//
28 28
29#if defined(APSTUDIO_INVOKED) || defined(FALSE) 29#if defined(APSTUDIO_INVOKED) || defined(FALSE)
30#if defined(APSTUDIO_INVOKED) 30#if defined(APSTUDIO_INVOKED)
31IDD_INSTALLING$(FALSE) DIALOGEX 0, 0, 200, 74 31IDD_INSTALLING$(FALSE) DIALOGEX 0, 0, 200, 74
32#else 32#else
33IDD_INSTALLING DIALOGEX 0, 0, 200, 74 33IDD_INSTALLING DIALOGEX 0, 0, 200, 74
34#endif 34#endif
35STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP 35STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP
36FONT 8, "MS Sans Serif", 0, 0, 0x1 36FONT 8, "MS Sans Serif", 0, 0, 0x1
37BEGIN 37BEGIN
38 PUSHBUTTON "Cancel",IDCANCEL,143,53,50,14,BS_CENTER | BS_VCENTER | 38 PUSHBUTTON "Cancel",IDCANCEL,143,53,50,14,BS_CENTER | BS_VCENTER |
39 BS_NOTIFY | BS_FLAT,WS_EX_DLGMODALFRAME 39 BS_NOTIFY | BS_FLAT,WS_EX_DLGMODALFRAME
40 CONTROL "Animate1",IDC_DISKS,"SysAnimate32",ACS_TRANSPARENT | 40 CONTROL "Animate1",IDC_DISKS,"SysAnimate32",ACS_TRANSPARENT |
41 ACS_AUTOPLAY | WS_TABSTOP,161,7,32,32 41 ACS_AUTOPLAY | WS_TABSTOP,161,7,32,32
42 LTEXT "",IDC_STATE,7,7,150,32,SS_NOPREFIX | SS_NOTIFY 42 LTEXT "",IDC_STATE,7,7,150,32,SS_NOPREFIX | SS_NOTIFY
43 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",0x0,7,45, 43 CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",0x0,7,45,
44 186,7,WS_EX_DLGMODALFRAME 44 186,7,WS_EX_DLGMODALFRAME
45END 45END
46#endif 46#endif
47 47
48IDD_PATH DIALOGEX 0, 0, 255, 73 48IDD_PATH DIALOGEX 0, 0, 255, 73
49STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | WS_POPUP | 49STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | DS_CENTER | WS_POPUP |
50 WS_VISIBLE | WS_CAPTION 50 WS_VISIBLE | WS_CAPTION
51EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE 51EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
52FONT 8, "MS Sans Serif", 0, 0, 0x1 52FONT 8, "MS Sans Serif", 0, 0, 0x1
53BEGIN 53BEGIN
54 LTEXT "",IDC_PROMPT,7,7,241,30 54 LTEXT "",IDC_PROMPT,7,7,241,30
55 EDITTEXT IDC_PATH,7,37,195,12,ES_AUTOHSCROLL 55 EDITTEXT IDC_PATH,7,37,195,12,ES_AUTOHSCROLL
56 PUSHBUTTON "B&rowse..",IDC_BROWSE,208,37,40,12 56 PUSHBUTTON "B&rowse..",IDC_BROWSE,208,37,40,12
57 DEFPUSHBUTTON "OK",IDOK,69,52,50,14 57 DEFPUSHBUTTON "OK",IDOK,69,52,50,14
58 PUSHBUTTON "Cancel",IDCANCEL,135,52,50,14 58 PUSHBUTTON "Cancel",IDCANCEL,135,52,50,14
59END 59END
60 60
61 61
62///////////////////////////////////////////////////////////////////////////// 62/////////////////////////////////////////////////////////////////////////////
63// 63//
64// DESIGNINFO 64// DESIGNINFO
65// 65//
66 66
67#ifdef APSTUDIO_INVOKED 67#ifdef APSTUDIO_INVOKED
68GUIDELINES DESIGNINFO DISCARDABLE 68GUIDELINES DESIGNINFO DISCARDABLE
69BEGIN 69BEGIN
70 "IDD_INSTALLING$(FALSE)", DIALOG 70 "IDD_INSTALLING$(FALSE)", DIALOG
71 BEGIN 71 BEGIN
72 LEFTMARGIN, 7 72 LEFTMARGIN, 7
73 RIGHTMARGIN, 193 73 RIGHTMARGIN, 193
74 TOPMARGIN, 7 74 TOPMARGIN, 7
75 BOTTOMMARGIN, 67 75 BOTTOMMARGIN, 67
76 HORZGUIDE, 39 76 HORZGUIDE, 39
77 END 77 END
78 78
79 IDD_PATH, DIALOG 79 IDD_PATH, DIALOG
80 BEGIN 80 BEGIN
81 LEFTMARGIN, 7 81 LEFTMARGIN, 7
82 RIGHTMARGIN, 248 82 RIGHTMARGIN, 248
83 VERTGUIDE, 202 83 VERTGUIDE, 202
84 VERTGUIDE, 208 84 VERTGUIDE, 208
85 TOPMARGIN, 7 85 TOPMARGIN, 7
86 BOTTOMMARGIN, 66 86 BOTTOMMARGIN, 66
87 HORZGUIDE, 37 87 HORZGUIDE, 37
88 END 88 END
89END 89END
90#endif // APSTUDIO_INVOKED 90#endif // APSTUDIO_INVOKED
91 91
92 92
93#ifdef APSTUDIO_INVOKED 93#ifdef APSTUDIO_INVOKED
94///////////////////////////////////////////////////////////////////////////// 94/////////////////////////////////////////////////////////////////////////////
95// 95//
96// TEXTINCLUDE 96// TEXTINCLUDE
97// 97//
98 98
991 TEXTINCLUDE DISCARDABLE 991 TEXTINCLUDE DISCARDABLE
100BEGIN 100BEGIN
101 "resource.h\0" 101 "resource.h\0"
102END 102END
103 103
1042 TEXTINCLUDE DISCARDABLE 1042 TEXTINCLUDE DISCARDABLE
105BEGIN 105BEGIN
106 "#include ""afxres.h""\r\n" 106 "#include ""afxres.h""\r\n"
107 "\0" 107 "\0"
108END 108END
109 109
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 2,5,0,0 134 FILEVERSION 2,5,1,0
135 PRODUCTVERSION 2,5,0,0 135 PRODUCTVERSION 2,5,1,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: PumpKIN, tftp client/daemon\0" 151 VALUE "FileDescription", "INSTALL: PumpKIN, tftp client/daemon\0"
152 VALUE "FileVersion", "2, 5, 0, 0\0" 152 VALUE "FileVersion", "2, 5, 1, 0\0"
153 VALUE "InternalName", "INSTALL\0" 153 VALUE "InternalName", "INSTALL\0"
154 VALUE "LegalCopyright", "Copyright © 1997-2004 Klever Group (http://www.klever.net/)\0" 154 VALUE "LegalCopyright", "Copyright © 1997-2004 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", "PumpKIN\0" 157 VALUE "ProductName", "PumpKIN\0"
158 VALUE "ProductVersion", "2, 5, 0, 0\0" 158 VALUE "ProductVersion", "2, 5, 1, 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/pumpkin.rc b/pumpkin.rc
index 67e5b24..7380e12 100644
--- a/pumpkin.rc
+++ b/pumpkin.rc
@@ -1,505 +1,505 @@
1//Microsoft Developer Studio generated resource script. 1//Microsoft Developer Studio generated resource script.
2// 2//
3#include "resource.h" 3#include "resource.h"
4 4
5#define APSTUDIO_READONLY_SYMBOLS 5#define APSTUDIO_READONLY_SYMBOLS
6///////////////////////////////////////////////////////////////////////////// 6/////////////////////////////////////////////////////////////////////////////
7// 7//
8// Generated from the TEXTINCLUDE 2 resource. 8// Generated from the TEXTINCLUDE 2 resource.
9// 9//
10#include "afxres.h" 10#include "afxres.h"
11 11
12///////////////////////////////////////////////////////////////////////////// 12/////////////////////////////////////////////////////////////////////////////
13#undef APSTUDIO_READONLY_SYMBOLS 13#undef APSTUDIO_READONLY_SYMBOLS
14 14
15///////////////////////////////////////////////////////////////////////////// 15/////////////////////////////////////////////////////////////////////////////
16// English (U.S.) resources 16// English (U.S.) resources
17 17
18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) 18#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
19#ifdef _WIN32 19#ifdef _WIN32
20LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 20LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
21#pragma code_page(1252) 21#pragma code_page(1252)
22#endif //_WIN32 22#endif //_WIN32
23 23
24#ifdef APSTUDIO_INVOKED 24#ifdef APSTUDIO_INVOKED
25///////////////////////////////////////////////////////////////////////////// 25/////////////////////////////////////////////////////////////////////////////
26// 26//
27// TEXTINCLUDE 27// TEXTINCLUDE
28// 28//
29 29
301 TEXTINCLUDE DISCARDABLE 301 TEXTINCLUDE DISCARDABLE
31BEGIN 31BEGIN
32 "resource.h\0" 32 "resource.h\0"
33END 33END
34 34
352 TEXTINCLUDE DISCARDABLE 352 TEXTINCLUDE DISCARDABLE
36BEGIN 36BEGIN
37 "#include ""afxres.h""\r\n" 37 "#include ""afxres.h""\r\n"
38 "\0" 38 "\0"
39END 39END
40 40
413 TEXTINCLUDE DISCARDABLE 413 TEXTINCLUDE DISCARDABLE
42BEGIN 42BEGIN
43 "#define _AFX_NO_SPLITTER_RESOURCES\r\n" 43 "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
44 "#define _AFX_NO_OLE_RESOURCES\r\n" 44 "#define _AFX_NO_OLE_RESOURCES\r\n"
45 "#define _AFX_NO_TRACKER_RESOURCES\r\n" 45 "#define _AFX_NO_TRACKER_RESOURCES\r\n"
46 "#define _AFX_NO_PROPERTY_RESOURCES\r\n" 46 "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
47 "\r\n" 47 "\r\n"
48 "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" 48 "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
49 "#ifdef _WIN32\r\n" 49 "#ifdef _WIN32\r\n"
50 "LANGUAGE 9, 1\r\n" 50 "LANGUAGE 9, 1\r\n"
51 "#pragma code_page(1252)\r\n" 51 "#pragma code_page(1252)\r\n"
52 "#endif\r\n" 52 "#endif\r\n"
53 "#include ""res\\PumpKIN.rc2"" // non-Microsoft Visual C++ edited resources\r\n" 53 "#include ""res\\PumpKIN.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
54 "#include ""afxres.rc"" // Standard components\r\n" 54 "#include ""afxres.rc"" // Standard components\r\n"
55 "#endif\0" 55 "#endif\0"
56END 56END
57 57
58#endif // APSTUDIO_INVOKED 58#endif // APSTUDIO_INVOKED
59 59
60 60
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.
68IDI_RRQ ICON DISCARDABLE "res\\wrq.ico" 68IDI_RRQ ICON DISCARDABLE "res\\wrq.ico"
69IDI_WRQ ICON DISCARDABLE "res\\rrq.ico" 69IDI_WRQ ICON DISCARDABLE "res\\rrq.ico"
70IDI_BROWSE ICON DISCARDABLE "shared-data/browse-icon.ico" 70IDI_BROWSE ICON DISCARDABLE "shared-data/browse-icon.ico"
71IDR_MAINFRAME ICON DISCARDABLE "res\\pumpkin.ico" 71IDR_MAINFRAME ICON DISCARDABLE "res\\pumpkin.ico"
72IDI_PLAY ICON DISCARDABLE "shared-data/play-icon.ico" 72IDI_PLAY ICON DISCARDABLE "shared-data/play-icon.ico"
73 73
74///////////////////////////////////////////////////////////////////////////// 74/////////////////////////////////////////////////////////////////////////////
75// 75//
76// Dialog 76// Dialog
77// 77//
78 78
79IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 74 79IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 217, 74
80STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 80STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
81CAPTION "About PumpKIN" 81CAPTION "About PumpKIN"
82FONT 8, "MS Sans Serif" 82FONT 8, "MS Sans Serif"
83BEGIN 83BEGIN
84 ICON IDR_MAINFRAME,IDC_STATIC,7,17,18,20 84 ICON IDR_MAINFRAME,IDC_STATIC,7,17,18,20
85 LTEXT "PumpKIN, Version 2.5",IDC_STATIC,40,15,119,8,SS_NOPREFIX 85 LTEXT "PumpKIN, Version 2.5.1-trunk",IDC_STATIC,40,15,119,8,SS_NOPREFIX
86 LTEXT "Copyright © 1997-2004 Klever Group",IDC_STATIC,40,30,170, 86 LTEXT "Copyright © 1997-2004 Klever Group",IDC_STATIC,40,30,170,
87 8 87 8
88 DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP 88 DEFPUSHBUTTON "OK",IDOK,178,7,32,14,WS_GROUP
89 PUSHBUTTON "http://www.klever.net/",IDC_KLEVERNET,124,53,86,14 89 PUSHBUTTON "http://www.klever.net/",IDC_KLEVERNET,124,53,86,14
90END 90END
91 91
92IDD_PUMPKIN_DIALOG DIALOGEX 0, 0, 362, 191 92IDD_PUMPKIN_DIALOG DIALOGEX 0, 0, 362, 191
93STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | 93STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION |
94 WS_SYSMENU 94 WS_SYSMENU
95EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW 95EXSTYLE WS_EX_ACCEPTFILES | WS_EX_APPWINDOW
96CAPTION " PumpKIN" 96CAPTION " PumpKIN"
97FONT 8, "MS Sans Serif", 0, 0, 0x1 97FONT 8, "MS Sans Serif", 0, 0, 0x1
98BEGIN 98BEGIN
99 CONTROL "List1",IDC_CONNECTIONS,"SysListView32",LVS_REPORT | 99 CONTROL "List1",IDC_CONNECTIONS,"SysListView32",LVS_REPORT |
100 LVS_AUTOARRANGE | WS_BORDER | WS_TABSTOP,7,7,295,108, 100 LVS_AUTOARRANGE | WS_BORDER | WS_TABSTOP,7,7,295,108,
101 WS_EX_DLGMODALFRAME 101 WS_EX_DLGMODALFRAME
102 PUSHBUTTON "&Get File",IDC_GET,305,7,50,17,BS_NOTIFY, 102 PUSHBUTTON "&Get File",IDC_GET,305,7,50,17,BS_NOTIFY,
103 WS_EX_CLIENTEDGE 103 WS_EX_CLIENTEDGE
104 PUSHBUTTON "&Put File",IDC_PUT,305,25,50,17,BS_NOTIFY, 104 PUSHBUTTON "&Put File",IDC_PUT,305,25,50,17,BS_NOTIFY,
105 WS_EX_CLIENTEDGE 105 WS_EX_CLIENTEDGE
106 PUSHBUTTON "&Abort xfer",IDC_ABORT,305,43,50,17,BS_NOTIFY, 106 PUSHBUTTON "&Abort xfer",IDC_ABORT,305,43,50,17,BS_NOTIFY,
107 WS_EX_CLIENTEDGE 107 WS_EX_CLIENTEDGE
108 PUSHBUTTON "&Options",IDC_OPTIONS,305,61,50,17,BS_NOTIFY, 108 PUSHBUTTON "&Options",IDC_OPTIONS,305,61,50,17,BS_NOTIFY,
109 WS_EX_CLIENTEDGE 109 WS_EX_CLIENTEDGE
110 PUSHBUTTON "E&xit",IDC_EXIT,305,79,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE 110 PUSHBUTTON "E&xit",IDC_EXIT,305,79,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE
111 PUSHBUTTON "&Help",ID_HELP,305,97,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE 111 PUSHBUTTON "&Help",ID_HELP,305,97,50,17,BS_NOTIFY,WS_EX_CLIENTEDGE
112 LISTBOX IDC_LOG,7,115,348,69,LBS_USETABSTOPS | LBS_NOSEL | 112 LISTBOX IDC_LOG,7,115,348,69,LBS_USETABSTOPS | LBS_NOSEL |
113 WS_VSCROLL | WS_HSCROLL,WS_EX_DLGMODALFRAME 113 WS_VSCROLL | WS_HSCROLL,WS_EX_DLGMODALFRAME
114 PUSHBUTTON "..",IDCANCEL,0,183,6,7,NOT WS_VISIBLE | NOT WS_TABSTOP 114 PUSHBUTTON "..",IDCANCEL,0,183,6,7,NOT WS_VISIBLE | NOT WS_TABSTOP
115END 115END
116 116
117IDD_PROPS_SERVER DIALOG DISCARDABLE 0, 0, 210, 154 117IDD_PROPS_SERVER DIALOG DISCARDABLE 0, 0, 210, 154
118STYLE WS_CHILD | WS_DISABLED | WS_CAPTION 118STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
119CAPTION "Server" 119CAPTION "Server"
120FONT 8, "MS Sans Serif" 120FONT 8, "MS Sans Serif"
121BEGIN 121BEGIN
122 GROUPBOX "TFTP filesystem &root (download path)",IDC_STATIC,7,7, 122 GROUPBOX "TFTP filesystem &root (download path)",IDC_STATIC,7,7,
123 196,38 123 196,38
124 EDITTEXT IDC_TFTPROOT,13,16,170,13,ES_AUTOHSCROLL 124 EDITTEXT IDC_TFTPROOT,13,16,170,13,ES_AUTOHSCROLL
125 PUSHBUTTON "&B",IDC_BROWSE,186,16,13,13,BS_ICON 125 PUSHBUTTON "&B",IDC_BROWSE,186,16,13,13,BS_ICON
126 CONTROL "Allow access to &subdirectories",IDC_TFTPSUBDIRS, 126 CONTROL "Allow access to &subdirectories",IDC_TFTPSUBDIRS,
127 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,31,111,10 127 "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,31,111,10
128 GROUPBOX "Read Request Behavior",IDC_STATIC,7,48,153,42 128 GROUPBOX "Read Request Behavior",IDC_STATIC,7,48,153,42
129 CONTROL "Give &all files",IDC_RRQ_GIVEALL,"Button", 129 CONTROL "Give &all files",IDC_RRQ_GIVEALL,"Button",
130 BS_AUTORADIOBUTTON | BS_NOTIFY | WS_GROUP,13,57,53,10 130 BS_AUTORADIOBUTTON | BS_NOTIFY | WS_GROUP,13,57,53,10
131 CONTROL "&Prompt before giving file",IDC_RRQ_ALWAYSCONFIRM, 131 CONTROL "&Prompt before giving file",IDC_RRQ_ALWAYSCONFIRM,
132 "Button",BS_AUTORADIOBUTTON | BS_NOTIFY,23,67,91,10 132 "Button",BS_AUTORADIOBUTTON | BS_NOTIFY,23,67,91,10
133 CONTROL "&Deny all requests",IDC_RRQ_DENYALL,"Button", 133 CONTROL "&Deny all requests",IDC_RRQ_DENYALL,"Button",
134 BS_AUTORADIOBUTTON | BS_NOTIFY,33,77,70,10 134 BS_AUTORADIOBUTTON | BS_NOTIFY,33,77,70,10
135 GROUPBOX "Write Request Behavior",IDC_STATIC,7,93,172,54,WS_GROUP 135 GROUPBOX "Write Request Behavior",IDC_STATIC,7,93,172,54,WS_GROUP
136 CONTROL "Take a&ll files",IDC_WRQ_TAKEALL,"Button", 136 CONTROL "Take a&ll files",IDC_WRQ_TAKEALL,"Button",
137 BS_AUTORADIOBUTTON | WS_GROUP,13,103,55,10 137 BS_AUTORADIOBUTTON | WS_GROUP,13,103,55,10
138 CONTROL "Prompt if file &exists",IDC_WRQ_PROMPTEXISTING,"Button", 138 CONTROL "Prompt if file &exists",IDC_WRQ_PROMPTEXISTING,"Button",
139 BS_AUTORADIOBUTTON,23,113,73,10 139 BS_AUTORADIOBUTTON,23,113,73,10
140 CONTROL "Always pro&mpt before accepting file", 140 CONTROL "Always pro&mpt before accepting file",
141 IDC_WRQ_ALWAYSCONFIRM,"Button",BS_AUTORADIOBUTTON,33,123, 141 IDC_WRQ_ALWAYSCONFIRM,"Button",BS_AUTORADIOBUTTON,33,123,
142 139,10 142 139,10
143 CONTROL "D&eny all requests",IDC_WRQ_DENYALL,"Button", 143 CONTROL "D&eny all requests",IDC_WRQ_DENYALL,"Button",
144 BS_AUTORADIOBUTTON,43,133,70,10 144 BS_AUTORADIOBUTTON,43,133,70,10
145 CTEXT "Confirmation &timeout",IDC_STATIC,163,52,40,19, 145 CTEXT "Confirmation &timeout",IDC_STATIC,163,52,40,19,
146 SS_NOTIFY 146 SS_NOTIFY
147 CONTROL "Slider1",IDC_PROMPTTIMEOUT,"msctls_trackbar32", 147 CONTROL "Slider1",IDC_PROMPTTIMEOUT,"msctls_trackbar32",
148 TBS_AUTOTICKS | TBS_VERT | TBS_TOP | WS_TABSTOP,182,73, 148 TBS_AUTOTICKS | TBS_VERT | TBS_TOP | WS_TABSTOP,182,73,
149 21,74 149 21,74
150END 150END
151 151
152IDD_PROPS_NETWORK DIALOG DISCARDABLE 0, 0, 210, 154 152IDD_PROPS_NETWORK DIALOG DISCARDABLE 0, 0, 210, 154
153STYLE WS_CHILD | WS_DISABLED | WS_CAPTION 153STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
154CAPTION "Network" 154CAPTION "Network"
155FONT 8, "MS Sans Serif" 155FONT 8, "MS Sans Serif"
156BEGIN 156BEGIN
157 GROUPBOX "UDP Ports",IDC_STATIC,7,7,196,40 157 GROUPBOX "UDP Ports",IDC_STATIC,7,7,196,40
158 RTEXT "Listen for &incoming requests on port:",IDC_STATIC,13, 158 RTEXT "Listen for &incoming requests on port:",IDC_STATIC,13,
159 18,135,8 159 18,135,8
160 EDITTEXT IDC_LISTENPORT,154,16,40,13,ES_AUTOHSCROLL 160 EDITTEXT IDC_LISTENPORT,154,16,40,13,ES_AUTOHSCROLL
161 CONTROL "Spin1",IDC_LISTENSPIN,"msctls_updown32",UDS_WRAP | 161 CONTROL "Spin1",IDC_LISTENSPIN,"msctls_updown32",UDS_WRAP |
162 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 162 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
163 UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,16,11,13 163 UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,16,11,13
164 RTEXT "Send &outging requests to port:",IDC_STATIC,13,31,135,8 164 RTEXT "Send &outging requests to port:",IDC_STATIC,13,31,135,8
165 EDITTEXT IDC_SPEAKPORT,154,29,40,13,ES_AUTOHSCROLL 165 EDITTEXT IDC_SPEAKPORT,154,29,40,13,ES_AUTOHSCROLL
166 CONTROL "Spin1",IDC_SPEAKSPIN,"msctls_updown32",UDS_WRAP | 166 CONTROL "Spin1",IDC_SPEAKSPIN,"msctls_updown32",UDS_WRAP |
167 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 167 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
168 UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,29,11,13 168 UDS_ARROWKEYS | UDS_NOTHOUSANDS,183,29,11,13
169 LTEXT "Default connection timeout:",IDC_STATIC,7,52,88,8 169 LTEXT "Default connection timeout:",IDC_STATIC,7,52,88,8
170 EDITTEXT IDC_TIMEOUT,110,50,40,13,ES_AUTOHSCROLL | ES_NUMBER 170 EDITTEXT IDC_TIMEOUT,110,50,40,13,ES_AUTOHSCROLL | ES_NUMBER
171 CONTROL "Spin3",IDC_TIMESPIN,"msctls_updown32",UDS_WRAP | 171 CONTROL "Spin3",IDC_TIMESPIN,"msctls_updown32",UDS_WRAP |
172 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 172 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
173 UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,50,11,13 173 UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,50,11,13
174 LTEXT "Default block size:",IDC_STATIC,7,66,59,8 174 LTEXT "Default block size:",IDC_STATIC,7,66,59,8
175 LTEXT "seconds",IDC_STATIC,154,52,28,8 175 LTEXT "seconds",IDC_STATIC,154,52,28,8
176 LTEXT "bytes",IDC_STATIC,154,66,18,8 176 LTEXT "bytes",IDC_STATIC,154,66,18,8
177 EDITTEXT IDC_BLOCKSIZE,110,64,40,13,ES_AUTOHSCROLL | ES_NUMBER 177 EDITTEXT IDC_BLOCKSIZE,110,64,40,13,ES_AUTOHSCROLL | ES_NUMBER
178 CONTROL "Spin3",IDC_BSIZESPIN,"msctls_updown32",UDS_WRAP | 178 CONTROL "Spin3",IDC_BSIZESPIN,"msctls_updown32",UDS_WRAP |
179 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | 179 UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
180 UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,64,11,13 180 UDS_ARROWKEYS | UDS_NOTHOUSANDS,140,64,11,13
181END 181END
182 182
183IDD_CONFIRM_RRQ DIALOGEX 0, 0, 181, 79 183IDD_CONFIRM_RRQ DIALOGEX 0, 0, 181, 79
184STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | 184STYLE DS_MODALFRAME | DS_NOIDLEMSG | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP |
185 WS_CAPTION 185 WS_CAPTION
186EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE 186EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
187CAPTION " PumpKIN - Confirm Read Request" 187CAPTION " PumpKIN - Confirm Read Request"
188FONT 8, "MS Sans Serif", 0, 0, 0x1 188FONT 8, "MS Sans Serif", 0, 0, 0x1
189BEGIN 189BEGIN
190 DEFPUSHBUTTON "&Grant Access",IDOK,27,58,54,14 190 DEFPUSHBUTTON "&Grant Access",IDOK,27,58,54,14
191 PUSHBUTTON "&Deny Access",IDCANCEL,97,58,54,14 191 PUSHBUTTON "&Deny Access",IDCANCEL,97,58,54,14
192 LTEXT "The host",IDC_STATIC,77,7,29,8 192 LTEXT "The host",IDC_STATIC,77,7,29,8
193 CTEXT "255.255.255.255",IDC_HOST,57,15,68,14,SS_NOTIFY | 193 CTEXT "255.255.255.255",IDC_HOST,57,15,68,14,SS_NOTIFY |
194 SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME | 194 SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME |
195 WS_EX_CLIENTEDGE 195 WS_EX_CLIENTEDGE
196 CTEXT "is requesting the file",IDC_STATIC,23,29,135,8 196 CTEXT "is requesting the file",IDC_STATIC,23,29,135,8
197 CTEXT "",IDC_FILE,23,37,135,14,SS_NOTIFY | SS_SUNKEN | 197 CTEXT "",IDC_FILE,23,37,135,14,SS_NOTIFY | SS_SUNKEN |
198 WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE 198 WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE
199 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,167,1 199 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,167,1
200 ICON IDR_MAINFRAME,IDC_STATIC,7,7,18,20 200 ICON IDR_MAINFRAME,IDC_STATIC,7,7,18,20
201 ICON IDR_MAINFRAME,IDC_STATIC,153,7,18,20 201 ICON IDR_MAINFRAME,IDC_STATIC,153,7,18,20
202END 202END
203 203
204IDD_CONFIRM_WRQ DIALOGEX 0, 0, 201, 95 204IDD_CONFIRM_WRQ DIALOGEX 0, 0, 201, 95
205STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION 205STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION
206EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE 206EXSTYLE WS_EX_TOOLWINDOW | WS_EX_CLIENTEDGE
207CAPTION " PumpKIN - Confirm Write Request" 207CAPTION " PumpKIN - Confirm Write Request"
208FONT 8, "MS Sans Serif", 0, 0, 0x1 208FONT 8, "MS Sans Serif", 0, 0, 0x1
209BEGIN 209BEGIN
210 DEFPUSHBUTTON "&Accept",IDOK,7,58,59,14 210 DEFPUSHBUTTON "&Accept",IDOK,7,58,59,14
211 PUSHBUTTON "&Rename",IDC_RENAME,71,58,59,14 211 PUSHBUTTON "&Rename",IDC_RENAME,71,58,59,14
212 PUSHBUTTON "&Deny Access",IDCANCEL,135,58,59,14 212 PUSHBUTTON "&Deny Access",IDCANCEL,135,58,59,14
213 LTEXT "The host",IDC_STATIC,87,7,29,8 213 LTEXT "The host",IDC_STATIC,87,7,29,8
214 CTEXT "255.255.255.255",IDC_HOST,67,15,68,14,SS_NOTIFY | 214 CTEXT "255.255.255.255",IDC_HOST,67,15,68,14,SS_NOTIFY |
215 SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME | 215 SS_SUNKEN | WS_BORDER,WS_EX_DLGMODALFRAME |
216 WS_EX_CLIENTEDGE 216 WS_EX_CLIENTEDGE
217 CTEXT "is attempting to send you a file",IDC_STATIC,33,29,135, 217 CTEXT "is attempting to send you a file",IDC_STATIC,33,29,135,
218 8 218 8
219 CTEXT "",IDC_FILE,33,37,135,14,SS_NOTIFY | SS_SUNKEN | 219 CTEXT "",IDC_FILE,33,37,135,14,SS_NOTIFY | SS_SUNKEN |
220 WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE 220 WS_BORDER,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE
221 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,187,1 221 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,54,187,1
222 ICON IDR_MAINFRAME,IDC_STATIC,7,7,21,20 222 ICON IDR_MAINFRAME,IDC_STATIC,7,7,21,20
223 ICON IDR_MAINFRAME,IDC_STATIC,173,7,21,20 223 ICON IDR_MAINFRAME,IDC_STATIC,173,7,21,20
224 PUSHBUTTON "Res&ume",IDC_RESUME,71,74,59,14 224 PUSHBUTTON "Res&ume",IDC_RESUME,71,74,59,14
225END 225END
226 226
227IDD_REQUEST DIALOGEX 0, 0, 191, 161 227IDD_REQUEST DIALOGEX 0, 0, 191, 161
228STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION | 228STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_3DLOOK | WS_POPUP | WS_CAPTION |
229 WS_SYSMENU 229 WS_SYSMENU
230EXSTYLE WS_EX_CLIENTEDGE 230EXSTYLE WS_EX_CLIENTEDGE
231CAPTION "Request" 231CAPTION "Request"
232FONT 8, "MS Sans Serif", 0, 0, 0x1 232FONT 8, "MS Sans Serif", 0, 0, 0x1
233BEGIN 233BEGIN
234 LTEXT "&Local file:",IDC_STATIC,7,7,31,8,SS_NOTIFY 234 LTEXT "&Local file:",IDC_STATIC,7,7,31,8,SS_NOTIFY
235 EDITTEXT IDC_LOCALFILE,7,16,157,14,ES_AUTOHSCROLL, 235 EDITTEXT IDC_LOCALFILE,7,16,157,14,ES_AUTOHSCROLL,
236 WS_EX_CLIENTEDGE | WS_EX_STATICEDGE 236 WS_EX_CLIENTEDGE | WS_EX_STATICEDGE
237 PUSHBUTTON "...",IDC_BROWSE,165,16,19,14,BS_ICON,WS_EX_STATICEDGE 237 PUSHBUTTON "...",IDC_BROWSE,165,16,19,14,BS_ICON,WS_EX_STATICEDGE
238 LTEXT "&Remote file:",IDC_STATIC,7,34,38,8,SS_NOTIFY 238 LTEXT "&Remote file:",IDC_STATIC,7,34,38,8,SS_NOTIFY
239 EDITTEXT IDC_REMOTEFILE,7,44,177,14,ES_AUTOHSCROLL, 239 EDITTEXT IDC_REMOTEFILE,7,44,177,14,ES_AUTOHSCROLL,
240 WS_EX_CLIENTEDGE | WS_EX_STATICEDGE 240 WS_EX_CLIENTEDGE | WS_EX_STATICEDGE
241 LTEXT "Remote &host:",IDC_STATIC,7,61,43,8,SS_NOTIFY 241 LTEXT "Remote &host:",IDC_STATIC,7,61,43,8,SS_NOTIFY
242 COMBOBOX IDC_TALKS,7,72,157,66,CBS_SIMPLE | CBS_AUTOHSCROLL | 242 COMBOBOX IDC_TALKS,7,72,157,66,CBS_SIMPLE | CBS_AUTOHSCROLL |
243 CBS_SORT | CBS_NOINTEGRALHEIGHT | WS_VSCROLL | 243 CBS_SORT | CBS_NOINTEGRALHEIGHT | WS_VSCROLL |
244 WS_TABSTOP,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE 244 WS_TABSTOP,WS_EX_CLIENTEDGE | WS_EX_STATICEDGE
245 PUSHBUTTON "R\nE\n&F\nR\nE\nS\nH",IDC_REFRESH,165,72,19,66, 245 PUSHBUTTON "R\nE\n&F\nR\nE\nS\nH",IDC_REFRESH,165,72,19,66,
246 BS_CENTER | BS_VCENTER | BS_MULTILINE | BS_NOTIFY, 246 BS_CENTER | BS_VCENTER | BS_MULTILINE | BS_NOTIFY,
247 WS_EX_CLIENTEDGE 247 WS_EX_CLIENTEDGE
248 LTEXT "&Type:",IDC_STATIC,58,34,19,8 248 LTEXT "&Type:",IDC_STATIC,58,34,19,8
249 COMBOBOX IDC_TYPE,80,31,43,41,CBS_DROPDOWN | CBS_AUTOHSCROLL | 249 COMBOBOX IDC_TYPE,80,31,43,41,CBS_DROPDOWN | CBS_AUTOHSCROLL |
250 CBS_LOWERCASE | WS_VSCROLL | WS_TABSTOP 250 CBS_LOWERCASE | WS_VSCROLL | WS_TABSTOP
251 LTEXT "&Block:",IDC_STATIC,127,34,21,8 251 LTEXT "&Block:",IDC_STATIC,127,34,21,8
252 COMBOBOX IDC_BSIZE,149,31,35,53,CBS_DROPDOWN | WS_VSCROLL | 252 COMBOBOX IDC_BSIZE,149,31,35,53,CBS_DROPDOWN | WS_VSCROLL |
253 WS_TABSTOP 253 WS_TABSTOP
254 DEFPUSHBUTTON "OK",IDOK,35,140,50,14 254 DEFPUSHBUTTON "OK",IDOK,35,140,50,14
255 PUSHBUTTON "Cancel",IDCANCEL,101,140,50,14 255 PUSHBUTTON "Cancel",IDCANCEL,101,140,50,14
256 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,52,32,1,11 256 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,52,32,1,11
257END 257END
258 258
259IDD_PROPS_SOUNDS DIALOG DISCARDABLE 0, 0, 210, 154 259IDD_PROPS_SOUNDS DIALOG DISCARDABLE 0, 0, 210, 154
260STYLE WS_CHILD | WS_DISABLED | WS_CAPTION 260STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
261CAPTION "Sounds" 261CAPTION "Sounds"
262FONT 8, "MS Sans Serif" 262FONT 8, "MS Sans Serif"
263BEGIN 263BEGIN
264 LTEXT "&Incoming request:",IDC_STATIC,7,9,57,8 264 LTEXT "&Incoming request:",IDC_STATIC,7,9,57,8
265 COMBOBOX IDC_RING,70,7,103,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | 265 COMBOBOX IDC_RING,70,7,103,100,CBS_DROPDOWN | CBS_AUTOHSCROLL |
266 CBS_SORT | WS_VSCROLL | WS_TABSTOP 266 CBS_SORT | WS_VSCROLL | WS_TABSTOP
267 PUSHBUTTON "browse",IDC_RING_BROWSE,175,7,13,13,BS_ICON 267 PUSHBUTTON "browse",IDC_RING_BROWSE,175,7,13,13,BS_ICON
268 PUSHBUTTON "play",IDC_RING_PLAY,190,7,13,13,BS_ICON 268 PUSHBUTTON "play",IDC_RING_PLAY,190,7,13,13,BS_ICON
269 LTEXT "xfer &finished:",IDC_STATIC,7,25,57,8 269 LTEXT "xfer &finished:",IDC_STATIC,7,25,57,8
270 COMBOBOX IDC_FINISHED,70,22,103,100,CBS_DROPDOWN | 270 COMBOBOX IDC_FINISHED,70,22,103,100,CBS_DROPDOWN |
271 CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP 271 CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
272 PUSHBUTTON "browse",IDC_FINISHED_BROWSE,175,22,13,13,BS_ICON 272 PUSHBUTTON "browse",IDC_FINISHED_BROWSE,175,22,13,13,BS_ICON
273 PUSHBUTTON "play",IDC_FINISHED_PLAY,190,22,13,13,BS_ICON 273 PUSHBUTTON "play",IDC_FINISHED_PLAY,190,22,13,13,BS_ICON
274 LTEXT "xfer &aborted:",IDC_STATIC,7,40,57,8 274 LTEXT "xfer &aborted:",IDC_STATIC,7,40,57,8
275 COMBOBOX IDC_ABORTED,70,37,103,100,CBS_DROPDOWN | CBS_AUTOHSCROLL | 275 COMBOBOX IDC_ABORTED,70,37,103,100,CBS_DROPDOWN | CBS_AUTOHSCROLL |
276 CBS_SORT | WS_VSCROLL | WS_TABSTOP 276 CBS_SORT | WS_VSCROLL | WS_TABSTOP
277 PUSHBUTTON "browse",IDC_ABORTED_BROWSE,175,37,13,13,BS_ICON 277 PUSHBUTTON "browse",IDC_ABORTED_BROWSE,175,37,13,13,BS_ICON
278 PUSHBUTTON "play",IDC_ABORTED_PLAY,190,37,13,13,BS_ICON 278 PUSHBUTTON "play",IDC_ABORTED_PLAY,190,37,13,13,BS_ICON
279END 279END
280 280
281 281
282#ifndef _MAC 282#ifndef _MAC
283///////////////////////////////////////////////////////////////////////////// 283/////////////////////////////////////////////////////////////////////////////
284// 284//
285// Version 285// Version
286// 286//
287 287
288VS_VERSION_INFO VERSIONINFO 288VS_VERSION_INFO VERSIONINFO
289 FILEVERSION 2,5,0,0 289 FILEVERSION 2,5,1,0
290 PRODUCTVERSION 2,5,0,0 290 PRODUCTVERSION 2,5,1,0
291 FILEFLAGSMASK 0x3fL 291 FILEFLAGSMASK 0x3fL
292#ifdef _DEBUG 292#ifdef _DEBUG
293 FILEFLAGS 0x1L 293 FILEFLAGS 0x1L
294#else 294#else
295 FILEFLAGS 0x0L 295 FILEFLAGS 0x0L
296#endif 296#endif
297 FILEOS 0x4L 297 FILEOS 0x4L
298 FILETYPE 0x1L 298 FILETYPE 0x1L
299 FILESUBTYPE 0x0L 299 FILESUBTYPE 0x0L
300BEGIN 300BEGIN
301 BLOCK "StringFileInfo" 301 BLOCK "StringFileInfo"
302 BEGIN 302 BEGIN
303 BLOCK "040904b0" 303 BLOCK "040904b0"
304 BEGIN 304 BEGIN
305 VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0" 305 VALUE "CompanyName", "Klever Group (http://www.klever.net/)\0"
306 VALUE "FileDescription", "PumpKIN, tftp client/daemon\0" 306 VALUE "FileDescription", "PumpKIN, tftp client/daemon\0"
307 VALUE "FileVersion", "2, 5, 0, 0\0" 307 VALUE "FileVersion", "2, 5, 1, 0\0"
308 VALUE "InternalName", "PUMPKIN\0" 308 VALUE "InternalName", "PUMPKIN\0"
309 VALUE "LegalCopyright", "Copyright © 1997-2004 Klever Group (http://www.klever.net)\0" 309 VALUE "LegalCopyright", "Copyright © 1997-2004 Klever Group (http://www.klever.net)\0"
310 VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0" 310 VALUE "LegalTrademarks", "Klever Group (http://www.klever.net/)\0"
311 VALUE "OriginalFilename", "PUMPKIN.EXE\0" 311 VALUE "OriginalFilename", "PUMPKIN.EXE\0"
312 VALUE "ProductName", "PumpKIN\0" 312 VALUE "ProductName", "PumpKIN\0"
313 VALUE "ProductVersion", "2, 5, 0, 0\0" 313 VALUE "ProductVersion", "2, 5, 1, 0\0"
314 END 314 END
315 END 315 END
316 BLOCK "VarFileInfo" 316 BLOCK "VarFileInfo"
317 BEGIN 317 BEGIN
318 VALUE "Translation", 0x409, 1200 318 VALUE "Translation", 0x409, 1200
319 END 319 END
320END 320END
321 321
322#endif // !_MAC 322#endif // !_MAC
323 323
324 324
325///////////////////////////////////////////////////////////////////////////// 325/////////////////////////////////////////////////////////////////////////////
326// 326//
327// DESIGNINFO 327// DESIGNINFO
328// 328//
329 329
330#ifdef APSTUDIO_INVOKED 330#ifdef APSTUDIO_INVOKED
331GUIDELINES DESIGNINFO DISCARDABLE 331GUIDELINES DESIGNINFO DISCARDABLE
332BEGIN 332BEGIN
333 IDD_ABOUTBOX, DIALOG 333 IDD_ABOUTBOX, DIALOG
334 BEGIN 334 BEGIN
335 LEFTMARGIN, 7 335 LEFTMARGIN, 7
336 RIGHTMARGIN, 210 336 RIGHTMARGIN, 210
337 TOPMARGIN, 7 337 TOPMARGIN, 7
338 BOTTOMMARGIN, 67 338 BOTTOMMARGIN, 67
339 END 339 END
340 340
341 IDD_PUMPKIN_DIALOG, DIALOG 341 IDD_PUMPKIN_DIALOG, DIALOG
342 BEGIN 342 BEGIN
343 LEFTMARGIN, 7 343 LEFTMARGIN, 7
344 RIGHTMARGIN, 355 344 RIGHTMARGIN, 355
345 TOPMARGIN, 7 345 TOPMARGIN, 7
346 BOTTOMMARGIN, 184 346 BOTTOMMARGIN, 184
347 HORZGUIDE, 115 347 HORZGUIDE, 115
348 END 348 END
349 349
350 IDD_PROPS_SERVER, DIALOG 350 IDD_PROPS_SERVER, DIALOG
351 BEGIN 351 BEGIN
352 LEFTMARGIN, 7 352 LEFTMARGIN, 7
353 RIGHTMARGIN, 203 353 RIGHTMARGIN, 203
354 TOPMARGIN, 7 354 TOPMARGIN, 7
355 BOTTOMMARGIN, 147 355 BOTTOMMARGIN, 147
356 END 356 END
357 357
358 IDD_PROPS_NETWORK, DIALOG 358 IDD_PROPS_NETWORK, DIALOG
359 BEGIN 359 BEGIN
360 LEFTMARGIN, 7 360 LEFTMARGIN, 7
361 RIGHTMARGIN, 203 361 RIGHTMARGIN, 203
362 TOPMARGIN, 7 362 TOPMARGIN, 7
363 BOTTOMMARGIN, 147 363 BOTTOMMARGIN, 147
364 END 364 END
365 365
366 IDD_CONFIRM_RRQ, DIALOG 366 IDD_CONFIRM_RRQ, DIALOG
367 BEGIN 367 BEGIN
368 LEFTMARGIN, 7 368 LEFTMARGIN, 7
369 RIGHTMARGIN, 174 369 RIGHTMARGIN, 174
370 TOPMARGIN, 7 370 TOPMARGIN, 7
371 BOTTOMMARGIN, 72 371 BOTTOMMARGIN, 72
372 END 372 END
373 373
374 IDD_CONFIRM_WRQ, DIALOG 374 IDD_CONFIRM_WRQ, DIALOG
375 BEGIN 375 BEGIN
376 LEFTMARGIN, 7 376 LEFTMARGIN, 7
377 RIGHTMARGIN, 194 377 RIGHTMARGIN, 194
378 TOPMARGIN, 7 378 TOPMARGIN, 7
379 BOTTOMMARGIN, 88 379 BOTTOMMARGIN, 88
380 END 380 END
381 381
382 IDD_REQUEST, DIALOG 382 IDD_REQUEST, DIALOG
383 BEGIN 383 BEGIN
384 LEFTMARGIN, 7 384 LEFTMARGIN, 7
385 RIGHTMARGIN, 184 385 RIGHTMARGIN, 184
386 TOPMARGIN, 7 386 TOPMARGIN, 7
387 BOTTOMMARGIN, 154 387 BOTTOMMARGIN, 154
388 END 388 END
389 389
390 IDD_PROPS_SOUNDS, DIALOG 390 IDD_PROPS_SOUNDS, DIALOG
391 BEGIN 391 BEGIN
392 LEFTMARGIN, 7 392 LEFTMARGIN, 7
393 RIGHTMARGIN, 203 393 RIGHTMARGIN, 203
394 TOPMARGIN, 7 394 TOPMARGIN, 7
395 BOTTOMMARGIN, 147 395 BOTTOMMARGIN, 147
396 END 396 END
397END 397END
398#endif // APSTUDIO_INVOKED 398#endif // APSTUDIO_INVOKED
399 399
400 400
401///////////////////////////////////////////////////////////////////////////// 401/////////////////////////////////////////////////////////////////////////////
402// 402//
403// Bitmap 403// Bitmap
404// 404//
405 405
406IDB_BACKGROUND BITMAP DISCARDABLE "shared-data/klever-background.bmp" 406IDB_BACKGROUND BITMAP DISCARDABLE "shared-data/klever-background.bmp"
407 407
408///////////////////////////////////////////////////////////////////////////// 408/////////////////////////////////////////////////////////////////////////////
409// 409//
410// WAVE 410// WAVE
411// 411//
412 412
413IDR_WAVE_RING WAVE DISCARDABLE "res\\ring.wav" 413IDR_WAVE_RING WAVE DISCARDABLE "res\\ring.wav"
414IDR_WAVE_FINISHED WAVE DISCARDABLE "res\\finished.wav" 414IDR_WAVE_FINISHED WAVE DISCARDABLE "res\\finished.wav"
415IDR_WAVE_ABORTED WAVE DISCARDABLE "res\\failed.wav" 415IDR_WAVE_ABORTED WAVE DISCARDABLE "res\\failed.wav"
416 416
417///////////////////////////////////////////////////////////////////////////// 417/////////////////////////////////////////////////////////////////////////////
418// 418//
419// Dialog Info 419// Dialog Info
420// 420//
421 421
422IDD_REQUEST DLGINIT 422IDD_REQUEST DLGINIT
423BEGIN 423BEGIN
424 IDC_TYPE, 0x403, 6, 0 424 IDC_TYPE, 0x403, 6, 0
4250x636f, 0x6574, 0x0074, 4250x636f, 0x6574, 0x0074,
426 IDC_TYPE, 0x403, 9, 0 426 IDC_TYPE, 0x403, 9, 0
4270x656e, 0x6174, 0x6373, 0x6969, "\000" 4270x656e, 0x6174, 0x6373, 0x6969, "\000"
428 IDC_BSIZE, 0x403, 4, 0 428 IDC_BSIZE, 0x403, 4, 0
4290x3135, 0x0032, 4290x3135, 0x0032,
430 IDC_BSIZE, 0x403, 5, 0 430 IDC_BSIZE, 0x403, 5, 0
4310x3031, 0x3432, "\000" 4310x3031, 0x3432, "\000"
432 IDC_BSIZE, 0x403, 5, 0 432 IDC_BSIZE, 0x403, 5, 0
4330x3032, 0x3834, "\000" 4330x3032, 0x3834, "\000"
434 IDC_BSIZE, 0x403, 5, 0 434 IDC_BSIZE, 0x403, 5, 0
4350x3034, 0x3639, "\000" 4350x3034, 0x3639, "\000"
436 IDC_BSIZE, 0x403, 5, 0 436 IDC_BSIZE, 0x403, 5, 0
4370x3138, 0x3239, "\000" 4370x3138, 0x3239, "\000"
438 0 438 0
439END 439END
440 440
441 441
442///////////////////////////////////////////////////////////////////////////// 442/////////////////////////////////////////////////////////////////////////////
443// 443//
444// Menu 444// Menu
445// 445//
446 446
447IDM_POPUPS MENU DISCARDABLE 447IDM_POPUPS MENU DISCARDABLE
448BEGIN 448BEGIN
449 POPUP "&Tray" 449 POPUP "&Tray"
450 BEGIN 450 BEGIN
451 MENUITEM "&Send File", ID_TRAY_SENDFILE 451 MENUITEM "&Send File", ID_TRAY_SENDFILE
452 MENUITEM "F&etch file", ID_TRAY_FETCHFILE 452 MENUITEM "F&etch file", ID_TRAY_FETCHFILE
453 MENUITEM "&Options", ID_TRAY_OPTIONS 453 MENUITEM "&Options", ID_TRAY_OPTIONS
454 MENUITEM "Show &PumpKIN Window", ID_TRAY_SHOWPUMPKINWINDOW 454 MENUITEM "Show &PumpKIN Window", ID_TRAY_SHOWPUMPKINWINDOW
455 MENUITEM "Open &Files Folder", ID_TRAY_OPENFILESFOLDER 455 MENUITEM "Open &Files Folder", ID_TRAY_OPENFILESFOLDER
456 MENUITEM SEPARATOR 456 MENUITEM SEPARATOR
457 MENUITEM "&Help Topics", ID_TRAY_HELP 457 MENUITEM "&Help Topics", ID_TRAY_HELP
458 MENUITEM "&About PumpKIN", ID_TRAY_ABOUTPUMPKIN 458 MENUITEM "&About PumpKIN", ID_TRAY_ABOUTPUMPKIN
459 MENUITEM SEPARATOR 459 MENUITEM SEPARATOR
460 MENUITEM "E&xit", ID_TRAY_EXIT 460 MENUITEM "E&xit", ID_TRAY_EXIT
461 END 461 END
462END 462END
463 463
464 464
465///////////////////////////////////////////////////////////////////////////// 465/////////////////////////////////////////////////////////////////////////////
466// 466//
467// String Table 467// String Table
468// 468//
469 469
470STRINGTABLE DISCARDABLE 470STRINGTABLE DISCARDABLE
471BEGIN 471BEGIN
472 IDS_ABOUTBOX "&About PumpKIN..." 472 IDS_ABOUTBOX "&About PumpKIN..."
473 IDS_FMT_BYTES "%lu" 473 IDS_FMT_BYTES "%lu"
474 IDP_SOCKETS_INIT_FAILED "Windows sockets initialization failed." 474 IDP_SOCKETS_INIT_FAILED "Windows sockets initialization failed."
475 IDS_TFTP_ERROR_ACCESS "Access violation" 475 IDS_TFTP_ERROR_ACCESS "Access violation"
476 IDS_TFTP_ERROR_NOTFOUND "File not found" 476 IDS_TFTP_ERROR_NOTFOUND "File not found"
477 IDS_TFTP_ERROR_DIRFULL "Directory is full" 477 IDS_TFTP_ERROR_DIRFULL "Directory is full"
478 IDS_TFTP_ERROR_SHARING "Sharing violation" 478 IDS_TFTP_ERROR_SHARING "Sharing violation"
479 IDS_TFTP_ERROR_DISKFULL "Disk full" 479 IDS_TFTP_ERROR_DISKFULL "Disk full"
480 IDS_TFTP_ERROR_UNDEFINED "Undefined error" 480 IDS_TFTP_ERROR_UNDEFINED "Undefined error"
481 IDS_LOG_START "PumpKIN started" 481 IDS_LOG_START "PumpKIN started"
482 IDS_LOG_LISTENRECEIVEERROR "Error listening for incoming connections" 482 IDS_LOG_LISTENRECEIVEERROR "Error listening for incoming connections"
483END 483END
484 484
485STRINGTABLE DISCARDABLE 485STRINGTABLE DISCARDABLE
486BEGIN 486BEGIN
487 IDS_LOG_LISTENACCEPTERROR "Error accepting incoming connection" 487 IDS_LOG_LISTENACCEPTERROR "Error accepting incoming connection"
488 IDS_LOG_RRQSERVE "'%s' of type '%s' is requested from %s" 488 IDS_LOG_RRQSERVE "'%s' of type '%s' is requested from %s"
489 IDS_LOG_LISTENOPCODE "Invalid opcode in initial connection request" 489 IDS_LOG_LISTENOPCODE "Invalid opcode in initial connection request"
490 IDS_LOG_XFERUDPSEND "UDP packet send failed" 490 IDS_LOG_XFERUDPSEND "UDP packet send failed"
491 IDS_LOG_XFERRECEIVE "Error on xfer socket" 491 IDS_LOG_XFERRECEIVE "Error on xfer socket"
492 IDS_LOG_XFERSEND "Error on xfer socket" 492 IDS_LOG_XFERSEND "Error on xfer socket"
493 IDS_LOG_XFERUDPRECEIVE "UDP packet receive failed" 493 IDS_LOG_XFERUDPRECEIVE "UDP packet receive failed"
494 IDS_LOG_XFERSOURCETID "Packet from unexpected source" 494 IDS_LOG_XFERSOURCETID "Packet from unexpected source"
495 IDS_LOG_SENTTFTPERROR ":%u: %s" 495 IDS_LOG_SENTTFTPERROR ":%u: %s"
496 IDS_LOG_GOTTFTPERROR "TFTP:%u: %s" 496 IDS_LOG_GOTTFTPERROR "TFTP:%u: %s"
497 IDS_LOG_XFEROPCODE "Invalid opcode during transfer received" 497 IDS_LOG_XFEROPCODE "Invalid opcode during transfer received"
498 IDS_LOG_XFERRRQFINISHED "Transfer of '%s' has successfully completed" 498 IDS_LOG_XFERRRQFINISHED "Transfer of '%s' has successfully completed"
499 IDS_TITLE_OPTIONS "Options" 499 IDS_TITLE_OPTIONS "Options"
500 IDS_LOG_WRQSERVE "Writing of '%s' of type '%s' is requested by %s" 500 IDS_LOG_WRQSERVE "Writing of '%s' of type '%s' is requested by %s"
501 IDS_TFTP_ERROR_FAILEDTORENAME "Too many clones of the file" 501 IDS_TFTP_ERROR_FAILEDTORENAME "Too many clones of the file"
502 IDS_RENAME_TITLE "Save As" 502 IDS_RENAME_TITLE "Save As"
503END 503END
504 504
505STRINGTABLE DISCARDABLE 505STRINGTABLE DISCARDABLE