+++ /dev/null
---- mc-4.6.1-20041105/src/screen.c.uglydir 2004-11-05 17:21:19.159284328 +0100
-+++ mc-4.6.1-20041105/src/screen.c 2004-11-05 17:37:27.076138600 +0100
-@@ -864,8 +864,27 @@ show_dir (WPanel *panel)
- tmp = g_malloc (panel->widget.cols + 1);
- tmp[panel->widget.cols] = '\0';
-
-+#ifndef UTF8
- trim (strip_home_and_password (panel->cwd), tmp,
- min (max (panel->widget.cols - 7, 0), panel->widget.cols) );
-+
-+ if (tmp && *tmp) {
-+ char *s = tmp;
-+ do {
-+ if (!is_printable (*s))
-+ *s = '?';
-+ } while (*++s);
-+ }
-+#else
-+ {
-+ char *tmp2 = g_strdup(panel->cwd);
-+ fix_utf8(tmp2);
-+ trim (strip_home_and_password (tmp2), tmp,
-+ min(max (panel->widget.cols - 7, 0), panel->widget.cols) );
-+ g_free(tmp2);
-+ }
-+#endif
-+
- addstr (tmp);
- g_free (tmp);
- widget_move (&panel->widget, 0, 1);
---- mc-4.6.1-20041105/src/subshell.c.uglydir 2004-11-03 20:43:17.000000000 +0100
-+++ mc-4.6.1-20041105/src/subshell.c 2004-11-05 17:21:19.245271256 +0100
-@@ -954,6 +954,22 @@ feed_subshell (int how, int fail_on_erro
-
- subshell_cwd[bytes - 1] = 0; /* Squash the final '\n' */
-
-+ if (*subshell_cwd && current_panel && current_panel->cwd && strcmp(current_panel->cwd, subshell_cwd) &&
-+ strchr(current_panel->cwd, '\n'))
-+ {
-+ /* Expected CWD is diffrent and it contains line break.
-+ * We need to read rest of CWD, because previous read()
-+ * returns first line only.
-+ */
-+ int rbytes;
-+
-+ subshell_cwd[bytes-1] = '\n';
-+ rbytes = read(subshell_pipe[READ], (subshell_cwd+bytes),
-+ MC_MAXPATHLEN-bytes);
-+ if (rbytes)
-+ subshell_cwd[bytes+rbytes-1] = 0; /* Squash the final '\n' */
-+ }
-+
- synchronize ();
-
- subshell_ready = TRUE;