Web lists-archives.com

Re: Exclude System entries with "ls" or "find"




On Dec 18 22:00, Brian Inglis wrote:
> On 2018-12-18 01:13, Corinna Vinschen wrote:
> > On Dec 17 16:46, Steven Penny wrote:
> >> Compare Cygwin:
> >>    $ ls -1 -N /cygdrive/c
> >>    $Recycle.Bin
> >>    cygwin64
> >>    Documents and Settings
> >>    pagefile.sys
> >>    PerfLogs
> >>    Program Files
> >>    Program Files (x86)
> >>    ProgramData
> >>    Recovery
> >>    System Volume Information
> >>    Users
> >>    Windows
> >> With Command Prompt:
> >>    > dir /A:-S C:
> >>    2018-12-08  10:14 AM    <DIR>          cygwin64
> >>    2009-07-13  09:20 PM    <DIR>          PerfLogs
> >>    2018-12-15  06:05 PM    <DIR>          Program Files
> >>    2018-12-15  05:21 PM    <DIR>          Program Files (x86)
> >>    2018-10-31  06:07 PM    <DIR>          ProgramData
> >>    2018-11-18  01:10 AM    <DIR>          Users
> >>    2018-11-09  08:18 AM    <DIR>          Windows
> >> as can be seen, Command Prompt has a way to exclude System items. Does Cygwin
> >> have some way to do this, perhaps with "ls" or "find"?
> > You're asking POSIX tools to recognize DOS attributes...
> Could perhaps be supported as an env option
> 	CYGWIN=hidefileswithattributes:[SH]...
> with a possibility of overriding that and seeing the files (as with . and ..)
> when ls -a is specified, if SWTDI? Meanwhile CyNWin (no more than CyNUX).

YA logic with questionable gain in the file resolution?  I'm not
exactly looking forward to that.

Just this year, when implementing O_TMPFILE, I had this brilliant idea
to hide temporary files from directory listings, which turned out to be
not such a bright idea, after all:

https://sourceware.org/git/?p=newlib-cygwin.git;a=commitdiff;h=7ae73be14194
https://sourceware.org/git/?p=newlib-cygwin.git;a=commitdiff;h=8b6804b8a881

Cygwin symlinks have the System attribute set, too.  Do you want to see
them or not when setting this option?

Bottom line is, if you want to handle DOS attributes in a special way
not covered by our POSIX emulation, user space has to do it.  Either you
use sth. like

   w32_path = cygwin_create_path (CCP_POSIX_TO_WIN_W, posix_path);
   attrs = GetFileAttributesW (w32_path);
   free (w32_path);

Or we could implement an API for that.  As far as I can see Linux has one
already, an ioctl supported by the vfat driver:

  uint32_t attrs;
  ioctl(fd, FAT_IOCTL_GET_ATTRIBUTES, &attrs);
  ioctl(fd, FAT_IOCTL_SET_ATTRIBUTES, &attrs);

Of course, this doesn't help you a lot using standard tools like ls or
find but then WIndows' attrib command is your friend.


Corinna

-- 
Corinna Vinschen
Cygwin Maintainer

Attachment: signature.asc
Description: PGP signature