source: filezilla/trunk/fuentes/src/interface/auto_ascii_files.cpp @ 3185

Last change on this file since 3185 was 3185, checked in by jrpelegrina, 2 years ago

Update new version: 3.15.02

File size: 2.1 KB
Line 
1#include <filezilla.h>
2#include "auto_ascii_files.h"
3#include "Options.h"
4
5#include <libfilezilla/local_filesys.hpp>
6
7std::vector<wxString> CAutoAsciiFiles::m_ascii_extensions;
8
9void CAutoAsciiFiles::SettingsChanged()
10{
11        m_ascii_extensions.clear();
12        wxString extensions = COptions::Get()->GetOption(OPTION_ASCIIFILES);
13        wxString ext;
14        int pos = extensions.Find(_T("|"));
15        while (pos != -1) {
16                if (!pos) {
17                        if (!ext.empty()) {
18                                ext.Replace(_T("\\\\"), _T("\\"));
19                                m_ascii_extensions.push_back(ext);
20                                ext = _T("");
21                        }
22                }
23                else if (extensions.c_str()[pos - 1] != '\\') {
24                        ext += extensions.Left(pos);
25                        ext.Replace(_T("\\\\"), _T("\\"));
26                        m_ascii_extensions.push_back(ext);
27                        ext = _T("");
28                }
29                else {
30                        ext += extensions.Left(pos - 1) + _T("|");
31                }
32                extensions = extensions.Mid(pos + 1);
33                pos = extensions.Find(_T("|"));
34        }
35        ext += extensions;
36        ext.Replace(_T("\\\\"), _T("\\"));
37        m_ascii_extensions.push_back(ext);
38}
39
40// Defined in RemoteListView.cpp
41wxString StripVMSRevision(const wxString& name);
42
43bool CAutoAsciiFiles::TransferLocalAsAscii(wxString local_file, enum ServerType server_type)
44{
45        int pos = local_file.Find(fz::local_filesys::path_separator, true);
46        if (pos != -1)
47                local_file = local_file.Mid(pos + 1);
48
49        // Identical implementation, only difference is for the local one to strip path.
50        return TransferRemoteAsAscii(local_file, server_type);
51}
52
53bool CAutoAsciiFiles::TransferRemoteAsAscii(wxString remote_file, enum ServerType server_type)
54{
55        int mode = COptions::Get()->GetOptionVal(OPTION_ASCIIBINARY);
56        if (mode == 1)
57                return true;
58        else if (mode == 2)
59                return false;
60
61        if (server_type == VMS)
62                remote_file = StripVMSRevision(remote_file);
63
64        if (!remote_file.empty() && remote_file[0] == '.')
65                return COptions::Get()->GetOptionVal(OPTION_ASCIIDOTFILE) != 0;
66
67        int pos = remote_file.Find('.', true);
68        if (pos == -1)
69                return COptions::Get()->GetOptionVal(OPTION_ASCIINOEXT) != 0;
70        remote_file = remote_file.Mid(pos + 1);
71
72        if (remote_file.empty())
73                return false;
74
75        for (auto const& ascii_ext : m_ascii_extensions) {
76                if (!remote_file.CmpNoCase(ascii_ext)) {
77                        return true;
78                }
79        }
80
81        return false;
82}
83
Note: See TracBrowser for help on using the repository browser.