Browse Source

Merge pull request #66 from zeast/master

use utf8 default
Julien Laffaye 9 years ago
parent
commit
5a8b8eeb12
1 changed files with 24 additions and 0 deletions
  1. 24 0
      ftp.go

+ 24 - 0
ftp.go

@@ -94,6 +94,12 @@ func DialTimeout(addr string, timeout time.Duration) (*ServerConn, error) {
 		return nil, err
 	}
 
+	err = c.setUTF8()
+	if err != nil {
+		c.Quit()
+		return nil, err
+	}
+
 	return c, nil
 }
 
@@ -164,6 +170,24 @@ func (c *ServerConn) feat() error {
 	return nil
 }
 
+// setUTF8 issues an "OPTS UTF8 ON" command.
+func (c *ServerConn) setUTF8() error {
+	if _, ok := c.features["UTF8"]; !ok {
+		return nil
+	}
+
+	code, message, err := c.cmd(-1, "OPTS UTF8 ON")
+	if err != nil {
+		return err
+	}
+
+	if code != StatusCommandOK {
+		return errors.New(message)
+	}
+
+	return nil
+}
+
 // epsv issues an "EPSV" command to get a port number for a data connection.
 func (c *ServerConn) epsv() (port int, err error) {
 	_, line, err := c.cmd(StatusExtendedPassiveMode, "EPSV")