SF bug #1168983:  ftplib.py string index out of range

* resp[:1] in '123' # after Py2.2, this allowed blank responses to pass.
* replace <> with !=
* provide a usage message for empty command line calls

Backport candidate.
diff --git a/Lib/ftplib.py b/Lib/ftplib.py
index 9486918..937ee4e 100644
--- a/Lib/ftplib.py
+++ b/Lib/ftplib.py
@@ -208,13 +208,13 @@
         if self.debugging: print '*resp*', self.sanitize(resp)
         self.lastresp = resp[:3]
         c = resp[:1]
+        if c in ('1', '2', '3'):
+            return resp
         if c == '4':
             raise error_temp, resp
         if c == '5':
             raise error_perm, resp
-        if c not in '123':
-            raise error_proto, resp
-        return resp
+        raise error_proto, resp
 
     def voidresp(self):
         """Expect a response beginning with '2'."""
@@ -582,17 +582,17 @@
     Raises error_proto if it does not contain '(|||port|)'
     Return ('host.addr.as.numbers', port#) tuple.'''
 
-    if resp[:3] <> '229':
+    if resp[:3] != '229':
         raise error_reply, resp
     left = resp.find('(')
     if left < 0: raise error_proto, resp
     right = resp.find(')', left + 1)
     if right < 0:
         raise error_proto, resp # should contain '(|||port|)'
-    if resp[left + 1] <> resp[right - 1]:
+    if resp[left + 1] != resp[right - 1]:
         raise error_proto, resp
     parts = resp[left + 1:right].split(resp[left+1])
-    if len(parts) <> 5:
+    if len(parts) != 5:
         raise error_proto, resp
     host = peer[0]
     port = int(parts[3])
@@ -755,7 +755,16 @@
 
 def test():
     '''Test program.
-    Usage: ftp [-d] [-r[file]] host [-l[dir]] [-d[dir]] [-p] [file] ...'''
+    Usage: ftp [-d] [-r[file]] host [-l[dir]] [-d[dir]] [-p] [file] ...
+
+    -d dir
+    -l list
+    -p password
+    '''
+
+    if len(sys.argv) < 2:
+        print test.__doc__
+        sys.exit(0)
 
     debugging = 0
     rcfile = None