line-reader: Fix bad math when size_t is bigger than off_t.
[pspp] / src / language / utilities / cd.c
index 90a1bcf8db6a8ca71ac63167a8d898207ec4cb70..d28c0a30aa126d4a6b894e2e511a0d3607f21f47 100644 (file)
 
 #include <config.h>
 
+#include "language/command.h"
+
 #include <errno.h>
 #include <unistd.h>
 
-#include "language/command.h"
-#include "libpspp/message.h"
 #include "language/lexer/lexer.h"
+#include "libpspp/i18n.h"
+#include "libpspp/message.h"
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
@@ -35,7 +37,7 @@ cmd_cd (struct lexer *lexer, struct dataset *ds UNUSED)
   if ( ! lex_force_string (lexer))
     goto error;
 
-  path = ss_xstrdup (lex_tokss (lexer));
+  path = utf8_to_filename (lex_tokcstr (lexer));
 
   if ( -1 == chdir (path) )
     {
@@ -46,6 +48,7 @@ cmd_cd (struct lexer *lexer, struct dataset *ds UNUSED)
     }
 
   free (path);
+  lex_get (lexer);
 
   return CMD_SUCCESS;