diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..49ea3a7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+FTPKit.xcodeproj/project.xcworkspace/xcuserdata/*.xcuserdatad
+FTPKit.xcodeproj/xcuserdata/*.xcuserdatad/
\ No newline at end of file
diff --git a/Changelog b/Changelog
deleted file mode 100644
index d0b6bf5..0000000
--- a/Changelog
+++ /dev/null
@@ -1,11 +0,0 @@
-Weid, Nov 12 2014 -- v1.3.1
-========================================
-Fixed
-+ Server error messages are now being captured and returned, rather than
-guessing what the error is.
-
-Sun, May 25 2014 -- v1.3.0
-========================================
-New
-+ It is no longer necessary to URL encode paths before making calls to library;
-as all paths are now URL encoded internally.
diff --git a/FTPKit Tests/FTPKit Tests-Info.plist b/FTPKit Tests/FTPKit Tests-Info.plist
index 53c8404..169b6f7 100644
--- a/FTPKit Tests/FTPKit Tests-Info.plist
+++ b/FTPKit Tests/FTPKit Tests-Info.plist
@@ -7,7 +7,7 @@
CFBundleExecutable
${EXECUTABLE_NAME}
CFBundleIdentifier
- com.upstart-illustration-llc.${PRODUCT_NAME:rfc1034identifier}
+ $(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
6.0
CFBundlePackageType
diff --git a/FTPKit.podspec b/FTPKit.podspec
new file mode 100644
index 0000000..aef50dd
--- /dev/null
+++ b/FTPKit.podspec
@@ -0,0 +1,16 @@
+Pod::Spec.new do |s|
+
+ s.name = 'FTPKit'
+ s.version = '1.3.6'
+ s.license = 'MIT'
+ s.summary = 'FTP Transfer Library'
+ s.homepage = 'https://github.com/omniprojects/FTPKit'
+ s.author = { 'Omni Projects Inc.' => 'dev@beomni.com' }
+
+ s.source = { :git => 'https://github.com/omniprojects/FTPKit.git', :tag => '1.3.6' }
+ s.description = 'FTP Transfer Library'
+
+ s.source_files = 'FTPKit/**/*.{h,m,pch}', 'Libraries/**/ftplib.{c,h}'
+ s.frameworks = 'Foundation'
+
+end
diff --git a/FTPKit.xcodeproj/project.pbxproj b/FTPKit.xcodeproj/project.pbxproj
index a6ddf87..7a0cc67 100644
--- a/FTPKit.xcodeproj/project.pbxproj
+++ b/FTPKit.xcodeproj/project.pbxproj
@@ -69,10 +69,11 @@
07F23C5218CA4C43002BDF93 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
07F23C5418CA4C43002BDF93 /* FTPKit_Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FTPKit_Tests.m; sourceTree = ""; };
07F23C5618CA4C43002BDF93 /* FTPKit Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "FTPKit Tests-Prefix.pch"; sourceTree = ""; };
+ C9FA3ECA1D91E0D5004ACB9B /* FTPKit.podspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = FTPKit.podspec; sourceTree = ""; };
F27BA1CE1802FE7E00584A9E /* libFTPKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFTPKit.a; sourceTree = BUILT_PRODUCTS_DIR; };
F27BA1D11802FE7E00584A9E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
F27BA1D51802FE7E00584A9E /* FTPKit-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "FTPKit-Prefix.pch"; sourceTree = ""; };
- F27BA1D61802FE7E00584A9E /* FTPKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FTPKit.h; sourceTree = ""; };
+ F27BA1D61802FE7E00584A9E /* FTPKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FTPKit.h; path = FTPKit/FTPKit.h; sourceTree = SOURCE_ROOT; };
F27BA1F71802FF1800584A9E /* FTPClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FTPClient.h; sourceTree = ""; };
F27BA1F81802FF1800584A9E /* FTPClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FTPClient.m; sourceTree = ""; };
F27BA1FB1802FF1800584A9E /* FTPHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FTPHandle.h; sourceTree = ""; };
@@ -162,6 +163,7 @@
F27BA1C51802FE7E00584A9E = {
isa = PBXGroup;
children = (
+ C9FA3ECA1D91E0D5004ACB9B /* FTPKit.podspec */,
F27BA1D31802FE7E00584A9E /* FTPKit */,
07F23C4E18CA4C43002BDF93 /* FTPKit Tests */,
F27BA1D01802FE7E00584A9E /* Frameworks */,
@@ -258,7 +260,7 @@
F27BA1C61802FE7E00584A9E /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0510;
+ LastUpgradeCheck = 0800;
ORGANIZATIONNAME = "Upstart Illustration LLC";
TargetAttributes = {
07F23C4718CA4C43002BDF93 = {
@@ -355,6 +357,7 @@
"$(inherited)",
);
INFOPLIST_FILE = "FTPKit Tests/FTPKit Tests-Info.plist";
+ PRODUCT_BUNDLE_IDENTIFIER = "com.upstart-illustration-llc.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = xctest;
};
@@ -372,11 +375,109 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "FTPKit Tests/FTPKit Tests-Prefix.pch";
INFOPLIST_FILE = "FTPKit Tests/FTPKit Tests-Info.plist";
+ PRODUCT_BUNDLE_IDENTIFIER = "com.upstart-illustration-llc.${PRODUCT_NAME:rfc1034identifier}";
PRODUCT_NAME = "$(TARGET_NAME)";
WRAPPER_EXTENSION = xctest;
};
name = Release;
};
+ 42B96CA21C751C57008405E1 /* Develop */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = NO;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ ONLY_ACTIVE_ARCH = YES;
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "-all_load",
+ );
+ SDKROOT = iphoneos;
+ };
+ name = Develop;
+ };
+ 42B96CA31C751C57008405E1 /* Develop */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = NO;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CURRENT_PROJECT_VERSION = 1.0.0;
+ DEAD_CODE_STRIPPING = YES;
+ DSTROOT = /tmp/FTPKit.dst;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "FTPKit/FTPKit-Prefix.pch";
+ INSTALL_PATH = /usr/local/lib;
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
+ LINK_WITH_STANDARD_LIBRARIES = YES;
+ MACH_O_TYPE = staticlib;
+ ONLY_ACTIVE_ARCH = YES;
+ OTHER_LDFLAGS = "-ObjC";
+ PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include;
+ PRODUCT_NAME = FTPKit;
+ PUBLIC_HEADERS_FOLDER_PATH = /usr/local/include;
+ SEPARATE_STRIP = YES;
+ SKIP_INSTALL = YES;
+ STRIP_STYLE = debugging;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ WRAPPER_EXTENSION = "";
+ };
+ name = Develop;
+ };
+ 42B96CA41C751C57008405E1 /* Develop */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_OBJC_ARC = YES;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(SDKROOT)/Developer/Library/Frameworks",
+ "$(inherited)",
+ "$(DEVELOPER_FRAMEWORKS_DIR)",
+ );
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "FTPKit Tests/FTPKit Tests-Prefix.pch";
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ INFOPLIST_FILE = "FTPKit Tests/FTPKit Tests-Info.plist";
+ PRODUCT_BUNDLE_IDENTIFIER = "com.upstart-illustration-llc.${PRODUCT_NAME:rfc1034identifier}";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ WRAPPER_EXTENSION = xctest;
+ };
+ name = Develop;
+ };
F27BA1EF1802FE7E00584A9E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -390,12 +491,18 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
@@ -408,7 +515,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = (
"-ObjC",
@@ -431,19 +538,24 @@
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
OTHER_LDFLAGS = (
"-ObjC",
"-all_load",
@@ -517,6 +629,7 @@
isa = XCConfigurationList;
buildConfigurations = (
07F23C5918CA4C43002BDF93 /* Debug */,
+ 42B96CA41C751C57008405E1 /* Develop */,
07F23C5A18CA4C43002BDF93 /* Release */,
);
defaultConfigurationIsVisible = 0;
@@ -526,6 +639,7 @@
isa = XCConfigurationList;
buildConfigurations = (
F27BA1EF1802FE7E00584A9E /* Debug */,
+ 42B96CA21C751C57008405E1 /* Develop */,
F27BA1F01802FE7E00584A9E /* Release */,
);
defaultConfigurationIsVisible = 0;
@@ -535,6 +649,7 @@
isa = XCConfigurationList;
buildConfigurations = (
F27BA1F21802FE7E00584A9E /* Debug */,
+ 42B96CA31C751C57008405E1 /* Develop */,
F27BA1F31802FE7E00584A9E /* Release */,
);
defaultConfigurationIsVisible = 0;
diff --git a/FTPKit.xcodeproj/xcuserdata/johnb.xcuserdatad/xcschemes/FTPKit.xcscheme b/FTPKit.xcodeproj/xcuserdata/johnb.xcuserdatad/xcschemes/FTPKit.xcscheme
new file mode 100644
index 0000000..0ad026b
--- /dev/null
+++ b/FTPKit.xcodeproj/xcuserdata/johnb.xcuserdatad/xcschemes/FTPKit.xcscheme
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/FTPKit.xcodeproj/xcuserdata/johnb.xcuserdatad/xcschemes/xcschememanagement.plist b/FTPKit.xcodeproj/xcuserdata/johnb.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..54feec4
--- /dev/null
+++ b/FTPKit.xcodeproj/xcuserdata/johnb.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,27 @@
+
+
+
+
+ SchemeUserState
+
+ FTPKit.xcscheme
+
+ orderHint
+ 14
+
+
+ SuppressBuildableAutocreation
+
+ 07F23C4718CA4C43002BDF93
+
+ primary
+
+
+ F27BA1CD1802FE7E00584A9E
+
+ primary
+
+
+
+
+
diff --git a/FTPKit/FTPClient.m b/FTPKit/FTPClient.m
index ea0eb21..2269623 100644
--- a/FTPKit/FTPClient.m
+++ b/FTPKit/FTPClient.m
@@ -8,7 +8,7 @@ @interface FTPClient ()
@property (nonatomic, strong) FTPCredentials* credentials;
/** Queue used to enforce requests to process in synchronous order. */
-@property (nonatomic, strong) dispatch_queue_t queue;
+@property (nonatomic) dispatch_queue_t queue;
/** The last error encountered. */
@property (nonatomic, strong) NSError *lastError;
diff --git a/FTPKit/FTPCredentials.h b/FTPKit/FTPCredentials.h
index 4194e45..e7bf9e4 100644
--- a/FTPKit/FTPCredentials.h
+++ b/FTPKit/FTPCredentials.h
@@ -1,3 +1,4 @@
+#import
@interface FTPCredentials : NSObject
@@ -37,4 +38,4 @@
*/
- (NSURL *)urlForPath:(NSString *)path;
-@end
\ No newline at end of file
+@end
diff --git a/FTPKit/FTPHandle.h b/FTPKit/FTPHandle.h
index 09a022c..f916734 100644
--- a/FTPKit/FTPHandle.h
+++ b/FTPKit/FTPHandle.h
@@ -1,3 +1,5 @@
+#import
+
typedef enum {
FTPHandleTypeUnknown = 0,
FTPHandleTypeFIFO = 1,
diff --git a/Libraries/include/ftplib/src/ftplib.c b/Libraries/include/ftplib/src/ftplib.c
index de617c1..6c7c0a9 100644
--- a/Libraries/include/ftplib/src/ftplib.c
+++ b/Libraries/include/ftplib/src/ftplib.c
@@ -97,9 +97,6 @@ struct NetBuf {
char response[RESPONSE_BUFSIZ];
};
-static char *version =
- "ftplib Release 4.0 07-Jun-2013, copyright 1996-2003, 2013 Thomas Pfau";
-
GLOBALDEF int ftplib_debug = 3;
#if defined(NEED_STRDUP)
@@ -388,7 +385,7 @@ static int readline(char *buf, int max, netbuf *ctl)
x = (max >= ctl->cavail) ? ctl->cavail : max-1;
end = memccpy(bp,ctl->cget,'\n',x);
if (end != NULL)
- x = end - bp;
+ x = (int)(end - bp);
retval += x;
bp += x;
*bp = '\0';
@@ -1436,7 +1433,7 @@ static int FtpXfer(const char *localfile, const char *path,
dbuf = malloc(FTPLIB_BUFSIZ);
if (typ == FTPLIB_FILE_WRITE)
{
- while ((l = fread(dbuf, 1, FTPLIB_BUFSIZ, local)) > 0)
+ while ((l = (int)fread(dbuf, 1, FTPLIB_BUFSIZ, local)) > 0)
{
if ((c = FtpWrite(dbuf, l, nData)) < l)
{
diff --git a/Libraries/include/ftplib/src/ftplib.h b/Libraries/include/ftplib/src/ftplib.h
index 7f9616a..ce89fbf 100644
--- a/Libraries/include/ftplib/src/ftplib.h
+++ b/Libraries/include/ftplib/src/ftplib.h
@@ -33,7 +33,79 @@
#endif
#include
-#include
+#if defined(_MSC_VER) && _MSC_VER < 1900
+/* MSVC headers define int32_t as int, but PRIx32 as "lx" instead of "x".
+ * This triggers format warnings, so fix it up here. */
+#undef PRId32
+#undef PRIdLEAST32
+#undef PRIdFAST32
+#undef PRIi32
+#undef PRIiLEAST32
+#undef PRIiFAST32
+#undef PRIo32
+#undef PRIoLEAST32
+#undef PRIoFAST32
+#undef PRIu32
+#undef PRIuLEAST32
+#undef PRIuFAST32
+#undef PRIx32
+#undef PRIxLEAST32
+#undef PRIxFAST32
+#undef PRIX32
+#undef PRIXLEAST32
+#undef PRIXFAST32
+
+#undef SCNd32
+#undef SCNdLEAST32
+#undef SCNdFAST32
+#undef SCNi32
+#undef SCNiLEAST32
+#undef SCNiFAST32
+#undef SCNo32
+#undef SCNoLEAST32
+#undef SCNoFAST32
+#undef SCNu32
+#undef SCNuLEAST32
+#undef SCNuFAST32
+#undef SCNx32
+#undef SCNxLEAST32
+#undef SCNxFAST32
+
+#define PRId32 "d"
+#define PRIdLEAST32 "d"
+#define PRIdFAST32 "d"
+#define PRIi32 "i"
+#define PRIiLEAST32 "i"
+#define PRIiFAST32 "i"
+#define PRIo32 "o"
+#define PRIoLEAST32 "o"
+#define PRIoFAST32 "o"
+#define PRIu32 "u"
+#define PRIuLEAST32 "u"
+#define PRIuFAST32 "u"
+#define PRIx32 "x"
+#define PRIxLEAST32 "x"
+#define PRIxFAST32 "x"
+#define PRIX32 "X"
+#define PRIXLEAST32 "X"
+#define PRIXFAST32 "X"
+
+#define SCNd32 "d"
+#define SCNdLEAST32 "d"
+#define SCNdFAST32 "d"
+#define SCNi32 "i"
+#define SCNiLEAST32 "i"
+#define SCNiFAST32 "i"
+#define SCNo32 "o"
+#define SCNoLEAST32 "o"
+#define SCNoFAST32 "o"
+#define SCNu32 "u"
+#define SCNuLEAST32 "u"
+#define SCNuFAST32 "u"
+#define SCNx32 "x"
+#define SCNxLEAST32 "x"
+#define SCNxFAST32 "x"
+#endif
/* FtpAccess() type codes */
#define FTPLIB_DIR 1