public override ReturnCode Execute( Interpreter interpreter, IClientData clientData, ArgumentList arguments, ref Result result ) { ReturnCode code = ReturnCode.Ok; if (interpreter != null) { if (arguments != null) { if ((arguments.Count == 1) || (arguments.Count == 2)) { string directory; if (arguments.Count == 2) { directory = arguments[1]; } else { directory = PathOps.GetUserDirectory(true); if (directory == null) { result = "failed to get home or profile directory for user"; code = ReturnCode.Error; } } if (code == ReturnCode.Ok) { try { directory = PathOps.ResolveFullPath(interpreter, directory); if (!String.IsNullOrEmpty(directory)) { Directory.SetCurrentDirectory(directory); result = String.Empty; } else { result = "unrecognized path"; code = ReturnCode.Error; } } catch (Exception e) { Engine.SetExceptionErrorCode(interpreter, e); result = e; code = ReturnCode.Error; } } } else { result = "wrong # args: should be \"cd ?dirName?\""; code = ReturnCode.Error; } } else { result = "invalid argument list"; code = ReturnCode.Error; } } else { result = "invalid interpreter"; code = ReturnCode.Error; } return(code); }