// 再転送対応\r
//static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname);\r
static int DispUpDownErrDialog(int ResID, HWND hWnd, TRANSPACKET *Pkt);\r
-static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
static int SetDownloadResume(TRANSPACKET *Pkt, int ProcMode, LONGLONG Size, int *Mode, int *CancelCheckWork);\r
-static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static int DoUpLoad(SOCKET cSkt, TRANSPACKET *Pkt);\r
static int UpLoadNonPassive(TRANSPACKET *Pkt);\r
static int UpLoadPassive(TRANSPACKET *Pkt);\r
static int GetAdrsAndPortIPv6(SOCKET Skt, char *Str, char *Adrs, int *Port, int Max);\r
static int IsSpecialDevice(char *Fname);\r
static int MirrorDelNotify(int Cur, int Notify, TRANSPACKET *Pkt);\r
-static BOOL CALLBACK MirrorDeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//static BOOL CALLBACK MirrorDeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK MirrorDeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static void SetErrorMsg(char *fmt, ...);\r
// 同時接続対応\r
static char* GetErrMsg();\r
SOCKET TrnSkt;\r
RECT WndRect;\r
int i;\r
+ DWORD LastUsed;\r
\r
hWndTrans = NULL;\r
Down = NO;\r
{\r
ReleaseMutex(hListAccMutex);\r
ReConnectTrnSkt(&TrnSkt, &Canceled[ThreadCount]);\r
- // 同時ログイン数制限に引っかかった可能性あり\r
- // 負荷を下げるためにしばらく待機\r
- if(TrnSkt == INVALID_SOCKET)\r
+ // 同時ログイン数制限対策\r
+ if(TrnSkt != INVALID_SOCKET)\r
+ LastUsed = timeGetTime();\r
+ else\r
{\r
+ // 同時ログイン数制限に引っかかった可能性あり\r
+ // 負荷を下げるために約10秒間待機\r
i = 10000;\r
while(NewCmdSkt != CmdSkt && i > 0)\r
{\r
{\r
if(TrnSkt != INVALID_SOCKET)\r
{\r
- ReleaseMutex(hListAccMutex);\r
- SendData(TrnSkt, "QUIT\r\n", 6, 0, &Canceled[ThreadCount]);\r
- DoClose(TrnSkt);\r
- TrnSkt = INVALID_SOCKET;\r
-// WaitForSingleObject(hListAccMutex, INFINITE);\r
- while(WaitForSingleObject(hListAccMutex, 0) == WAIT_TIMEOUT)\r
+ // 同時ログイン数制限対策\r
+ // 10秒間は再利用を許可\r
+ if(timeGetTime() - LastUsed > 10000)\r
{\r
- BackgrndMessageProc();\r
- Sleep(1);\r
+ ReleaseMutex(hListAccMutex);\r
+ SendData(TrnSkt, "QUIT\r\n", 6, 0, &Canceled[ThreadCount]);\r
+ DoClose(TrnSkt);\r
+ TrnSkt = INVALID_SOCKET;\r
+// WaitForSingleObject(hListAccMutex, INFINITE);\r
+ while(WaitForSingleObject(hListAccMutex, 0) == WAIT_TIMEOUT)\r
+ {\r
+ BackgrndMessageProc();\r
+ Sleep(1);\r
+ }\r
}\r
}\r
}\r
// if(TransPacketBase != NULL)\r
if(TrnSkt != INVALID_SOCKET && NextTransPacketBase != NULL)\r
{\r
+ if(strcmp(NextTransPacketBase->Cmd, "GOQUIT") == 0 && NextTransPacketBase != TransPacketBase)\r
+ {\r
+ ReleaseMutex(hListAccMutex);\r
+ BackgrndMessageProc();\r
+ Sleep(1);\r
+ continue;\r
+ }\r
Pos = NextTransPacketBase;\r
NextTransPacketBase = NextTransPacketBase->Next;\r
// ディレクトリ操作は非同期で行わない\r
SendMessage(hWndTrans, WM_SET_PACKET, 0, 0);\r
if(Pos != NULL)\r
strcpy(Pos->Cmd, "");\r
+ LastUsed = timeGetTime();\r
}\r
// else\r
else if(TransPacketBase == NULL)\r
DispTransFileInfo(Pkt, MSGJPN087, FALSE, NO);\r
}\r
\r
- if(BackgrndMessageProc() == NO)\r
+ // SFTP対応\r
+// if(BackgrndMessageProc() == NO)\r
+ if(IsSFTPAttached(Pkt->ctrl_skt))\r
+ {\r
+ // TODO:\r
+ }\r
+ else if(BackgrndMessageProc() == NO)\r
{\r
if(AskPasvMode() != YES)\r
iRetCode = DownLoadNonPassive(Pkt, CancelCheckWork);\r
// Continue = ConvJIStoSJIS(&cInfo);\r
// else\r
// Continue = ConvEUCtoSJIS(&cInfo);\r
- char Buf3[(BUFSIZE + 3) * 4];\r
- CODECONVINFO cInfo2;\r
switch(Pkt->KanjiCode)\r
{\r
case KANJI_SJIS:\r
if (AskHostType() == HTYPE_VMS)\r
return;\r
#endif\r
+#if defined(HAVE_TANDEM)\r
+ /* HP Nonstop Server の場合、ファイルのない subvol へ移動すると550 File not found\r
+ * になるが問題ないのでエラーダイアログやエラーメッセージを出さないため */\r
+ if (AskHostType() == HTYPE_TANDEM)\r
+ return;\r
+#endif\r
\r
if((strncmp(Pkt->Cmd, "NLST", 4) == 0) || (strncmp(Pkt->Cmd, "LIST", 4) == 0))\r
{\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
static TRANSPACKET *Pkt;\r
static const RADIOBUTTON DownExistButton[] = {\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
switch (iMessage)\r
{\r
if(Pkt->hWndTrans != NULL)\r
DispTransFileInfo(Pkt, MSGJPN104, TRUE, YES);\r
\r
- if(BackgrndMessageProc() == NO)\r
+ // SFTP対応\r
+// if(BackgrndMessageProc() == NO)\r
+ if(IsSFTPAttached(Pkt->ctrl_skt))\r
+ {\r
+ // TODO:\r
+ }\r
+ else if(BackgrndMessageProc() == NO)\r
{\r
if(AskPasvMode() != YES)\r
iRetCode = UpLoadNonPassive(Pkt);\r
{\r
SetUploadResume(Pkt, Pkt->Mode, Pkt->ExistSize, &Resume);\r
if(Resume == NO)\r
+#if defined(HAVE_TANDEM)\r
+ if(AskHostType() == HTYPE_TANDEM && AskOSS() == NO && Pkt->Type != TYPE_A) {\r
+ if( Pkt->PriExt == DEF_PRIEXT && Pkt->SecExt == DEF_SECEXT && Pkt->MaxExt == DEF_MAXEXT) {\r
+ // EXTENTがデフォルトのときはコードのみ\r
+ sprintf(Buf, "%s%s,%d", Pkt->Cmd, Pkt->RemoteFile, Pkt->FileCode);\r
+ } else {\r
+ sprintf(Buf, "%s%s,%d,%d,%d,%d", Pkt->Cmd, Pkt->RemoteFile, Pkt->FileCode, Pkt->PriExt, Pkt->SecExt, Pkt->MaxExt);\r
+ }\r
+ } else\r
+#endif\r
sprintf(Buf, "%s%s", Pkt->Cmd, Pkt->RemoteFile);\r
else\r
sprintf(Buf, "%s%s", "APPE ", Pkt->RemoteFile);\r
\r
SetUploadResume(Pkt, Pkt->Mode, Pkt->ExistSize, &Resume);\r
if(Resume == NO)\r
+#if defined(HAVE_TANDEM)\r
+ if(AskHostType() == HTYPE_TANDEM && AskOSS() == NO && Pkt->Type != TYPE_A) {\r
+ if( Pkt->PriExt == DEF_PRIEXT && Pkt->SecExt == DEF_SECEXT && Pkt->MaxExt == DEF_MAXEXT) {\r
+ // EXTENTがデフォルトのときはコードのみ\r
+ sprintf(Buf, "%s%s,%d", Pkt->Cmd, Pkt->RemoteFile, Pkt->FileCode);\r
+ } else {\r
+ sprintf(Buf, "%s%s,%d,%d,%d,%d", Pkt->Cmd, Pkt->RemoteFile, Pkt->FileCode, Pkt->PriExt, Pkt->SecExt, Pkt->MaxExt);\r
+ }\r
+ } else\r
+#endif\r
sprintf(Buf, "%s%s", Pkt->Cmd, Pkt->RemoteFile);\r
else\r
sprintf(Buf, "%s%s", "APPE ", Pkt->RemoteFile);\r
/* ここに break はない */\r
\r
case IDCANCEL :\r
- if(!(Pkt = (TRANSPACKET*)GetWindowLong(hDlg, GWL_USERDATA)))\r
+ // 64ビット対応\r
+// if(!(Pkt = (TRANSPACKET*)GetWindowLong(hDlg, GWL_USERDATA)))\r
+ if(!(Pkt = (TRANSPACKET*)GetWindowLongPtr(hDlg, GWLP_USERDATA)))\r
break;\r
Pkt->Abort = ABORT_USER;\r
// Canceled = YES;\r
SetForegroundWindow(hDlg);\r
MoveToForeground = NO;\r
KillTimer(hDlg, TIMER_DISPLAY);\r
- if(!(Pkt = (TRANSPACKET*)GetWindowLong(hDlg, GWL_USERDATA)))\r
+ // 64ビット対応\r
+// if(!(Pkt = (TRANSPACKET*)GetWindowLong(hDlg, GWL_USERDATA)))\r
+ if(!(Pkt = (TRANSPACKET*)GetWindowLongPtr(hDlg, GWLP_USERDATA)))\r
break;\r
if(Canceled[Pkt->ThreadCount] == YES)\r
Pkt->Abort = ABORT_USER;\r
\r
case WM_SET_PACKET :\r
// Pkt = (TRANSPACKET *)lParam;\r
- SetWindowLong(hDlg, GWL_USERDATA, (LONG)lParam);\r
+ // 64ビット対応\r
+// SetWindowLong(hDlg, GWL_USERDATA, (LONG)lParam);\r
+ SetWindowLongPtr(hDlg, GWLP_USERDATA, (LONG_PTR)lParam);\r
break;\r
}\r
return(FALSE);\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-static BOOL CALLBACK MirrorDeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK MirrorDeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK MirrorDeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
static MIRRORDELETEINFO *DelInfo;\r
switch (iMessage)\r