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

Last change on this file since 130 was 130, checked in by jrpelegrina, 3 years ago

First release to xenial

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