Sender: rich AT phekda DOT freeserve DOT co DOT uk Message-ID: <3B2B82F0.3733B277@phekda.freeserve.co.uk> Date: Sat, 16 Jun 2001 17:01:52 +0100 From: Richard Dawe X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.19 i586) X-Accept-Language: de,fr MIME-Version: 1.0 To: djgpp-workers AT delorie DOT com Subject: Re: .files on servers are perceived as readonly References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Reply-To: djgpp-workers AT delorie DOT com Eli Zaretskii wrote: > > On Sun, 10 Jun 2001, Richard Dawe wrote: > > BTW Fileutils 3.16 is probably bitten by this bug now too. The source > > for the 3.16 port appears to set the opendir flags in the same way. [snip] > So the latest binaries of v3.16 indeed have the same bug; the > v2.01-compiled binaries did not. > > Btw, the solution I suggested (see above) is not entirely correct: you > indeed need to set __OPENDIR_NO_HIDDEN at startup, but instead of > setting __OPENDIR_FIND_HIDDEN when you want the hidden files, you need > to *reset* the __OPENDIR_NO_HIDDEN flag. (That setting > __OPENDIR_FIND_HIDDEN will not work is actually a subtle bug in > readdir, which I will fix in the CVS.) Below is a patch that implements your suggestion. This does seem to have fixed the bug - thanks! This patch also includes a fix for the bug I found where ls would emit spurious a <-[m escape sequence on exit. Thanks, bye, Rich =] *** /djgpp/gnu/filutil3.16/src/ls-msdos.c Thu Apr 26 22:02:04 2001 --- c:/develop/ports/gnu.dev/filutil4.0/src/ls-msdos.c Sat Jun 16 13:19:58 2001 *************** *** 1,6 **** ! /* MSDOS-specific functions for `ls'. ! ! Written by Eli Zaretskii */ #ifdef MSDOS --- 1,12 ---- ! /* ! * MSDOS-specific functions for `ls'. ! * ! * Written by Eli Zaretskii ! * ! * Copied from Fileutils 3.16 DJGPP port for use in Fileutils 4.0 DJGPP port ! * by Richard Dawe . Modifications are indicated by ! * '(richdawe) ...' comments. ! */ #ifdef MSDOS *************** *** 73,82 **** --- 79,96 ---- if (use_color) _djstat_flags &= ~_STAT_EXEC_EXT; + /* (richdawe) Default to skipping hidden files. */ + __opendir_flags |= __OPENDIR_NO_HIDDEN; + /* Find hidden files only if user specified -a. */ if (show_hidden) { + /* (richdawe) Eli advised me that setting __OPENDIR_FIND_HIDDEN + * will not work, because of a bug in DJGPP 2.03's libc. We also need + * to clear __OPENDIR_NO_HIDDEN. */ __opendir_flags |= __OPENDIR_FIND_HIDDEN; + __opendir_flags &= ~__OPENDIR_NO_HIDDEN; + /* Find volume labels only if user specified both -a and -g. */ if (msdos_long_format) __opendir_flags |= __OPENDIR_FIND_LABEL; *************** *** 146,152 **** static int msdos_screen_write (__FSEXT_Fnumber func, int *retval, va_list rest_args) { ! static char *cbuf = 0; static size_t cbuf_len = 0; /* Only dark colors mentioned here, so that bold has visible effect. */ static enum COLORS screen_color[] = {BLACK, RED, GREEN, BROWN, --- 160,166 ---- static int msdos_screen_write (__FSEXT_Fnumber func, int *retval, va_list rest_args) { ! static char *cbuf = NULL; static size_t cbuf_len = 0; /* Only dark colors mentioned here, so that bold has visible effect. */ static enum COLORS screen_color[] = {BLACK, RED, GREEN, BROWN, *************** *** 207,212 **** --- 221,236 ---- { char *p = p_next; + /* (richdawe) Handle the null escape sequence (ESC-[m), which ls uses + * to restore the original colour. */ + if ((p[1] == '[') && (p[2] == 'm')) + { + textattr (norm_attr); + p += 3; + anchor = p_next = p; + continue; + } + if (p[1] == '[') /* "Esc-[" sequence */ { /* If some chars seen since the last escape sequence,