Loweynet
Revision | 5a37200135b1c3c60df84d0dc0a8f294d7ca9604 (tree) |
---|---|
Time | 2013-01-06 21:24:49 |
Author | s_kawamoto <s_kawamoto@user...> |
Commiter | s_kawamoto |
Fix bugs of analysis of LIST/MLSD response types.
@@ -3601,11 +3601,22 @@ static int AnalizeFileInfo(char *Str) | ||
3601 | 3601 | Ret = LIST_SHIBASOKU; |
3602 | 3602 | else |
3603 | 3603 | { |
3604 | + // MLSD対応 | |
3605 | + if(FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS && strstr(Tmp, "type=") != NULL) | |
3606 | + { | |
3607 | + if(FindField2(Str, Tmp, ';', 1, NO) == FFFTP_SUCCESS && FindField2(Str, Tmp, '=', 1, NO) == FFFTP_SUCCESS) | |
3608 | + { | |
3609 | + Ret = LIST_MLSD; | |
3610 | + } | |
3611 | + } | |
3612 | + | |
3604 | 3613 | /* 以下のフォーマットをチェック */ |
3605 | 3614 | /* LIST_UNIX_10, LIST_UNIX_20, LIST_UNIX_12, LIST_UNIX_22, LIST_UNIX_50, LIST_UNIX_60 */ |
3606 | 3615 | /* MELCOM80 */ |
3607 | 3616 | |
3608 | - if(FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS) | |
3617 | + // MLSD対応 | |
3618 | +// if(FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS) | |
3619 | + if(Ret == LIST_UNKNOWN && FindField(Str, Tmp, 0, NO) == FFFTP_SUCCESS) | |
3609 | 3620 | { |
3610 | 3621 | /* MELCOM80は "d rwxrwxrwx" のようにスペースが空いている */ |
3611 | 3622 | Flag1 = NO; |
@@ -4041,14 +4052,6 @@ static int AnalizeFileInfo(char *Str) | ||
4041 | 4052 | } |
4042 | 4053 | #endif |
4043 | 4054 | |
4044 | - // MLSD対応 | |
4045 | - if(Ret == LIST_UNKNOWN) | |
4046 | - { | |
4047 | - if(FindField2(Str, Tmp, ';', 1, NO) == FFFTP_SUCCESS && FindField2(Str, Tmp, '=', 1, NO) == FFFTP_SUCCESS) | |
4048 | - { | |
4049 | - Ret = LIST_MLSD; | |
4050 | - } | |
4051 | - } | |
4052 | 4055 | } |
4053 | 4056 | |
4054 | 4057 | DoPrintf("ListType=%d", Ret); |