public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin/main] Cygwin: FS_IOC_[GS]ETFLAGS: handle pinned and unpinned attributes
@ 2024-03-08 20:58 Corinna Vinschen
  0 siblings, 0 replies; only message in thread
From: Corinna Vinschen @ 2024-03-08 20:58 UTC (permalink / raw)
  To: cygwin-cvs

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=06aa5a751682118ef1d7f2456f8937b4ac181fac

commit 06aa5a751682118ef1d7f2456f8937b4ac181fac
Author:     Corinna Vinschen <corinna@vinschen.de>
AuthorDate: Fri Mar 8 21:54:58 2024 +0100
Commit:     Corinna Vinschen <corinna@vinschen.de>
CommitDate: Fri Mar 8 21:54:58 2024 +0100

    Cygwin: FS_IOC_[GS]ETFLAGS: handle pinned and unpinned attributes
    
    Add FS_PINNED_FL and FS_UNPINNED_FL flags and handle them with
    mode bits 'p' and 'u' in chattr(1) and lsattr(1).
    
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/cygwin/fhandler/disk_file.cc | 4 +++-
 winsup/cygwin/include/cygwin/fs.h   | 6 ++++--
 winsup/doc/utils.xml                | 6 +++++-
 winsup/utils/chattr.c               | 8 ++++++--
 winsup/utils/lsattr.c               | 6 +++++-
 5 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/winsup/cygwin/fhandler/disk_file.cc b/winsup/cygwin/fhandler/disk_file.cc
index f3592148fc5b..9aadbb539f01 100644
--- a/winsup/cygwin/fhandler/disk_file.cc
+++ b/winsup/cygwin/fhandler/disk_file.cc
@@ -2763,7 +2763,9 @@ fhandler_disk_file::fs_ioc_getflags ()
 				 | FS_SYSTEM_FL \
 				 | FS_ARCHIVE_FL \
 				 | FS_TEMP_FL \
-				 | FS_NOTINDEXED_FL)
+				 | FS_NOTINDEXED_FL\
+				 | FS_PINNED_FL \
+				 | FS_UNPINNED_FL)
 
 int
 fhandler_disk_file::fs_ioc_setflags (uint64_t flags)
diff --git a/winsup/cygwin/include/cygwin/fs.h b/winsup/cygwin/include/cygwin/fs.h
index 9b4baf30227a..76d92453808d 100644
--- a/winsup/cygwin/include/cygwin/fs.h
+++ b/winsup/cygwin/include/cygwin/fs.h
@@ -41,10 +41,12 @@ details. */
 #define FS_OFFLINE_FL		0x000001000ULL /* DOS Offline */
 #define FS_NOTINDEXED_FL	0x000002000ULL /* DOS Not context indexed */
 #define FS_ENCRYPT_FL		0x000004000ULL /* Encrypted file */
+#define FS_PINNED_FL		0x000080000ULL /* Pinned file */
+#define FS_UNPINNED_FL		0x000100000ULL /* Unpinned file */
 #define FS_CASESENS_FL		0x100000000ULL /* Case sensitive dir */
 
-#define FS_FL_USER_VISIBLE	0x100007f27ULL /* User visible flags */
-#define FS_FL_USER_MODIFIABLE	0x100006b27ULL /* User modifiable flags */
+#define FS_FL_USER_VISIBLE	0x100187f27ULL /* User visible flags */
+#define FS_FL_USER_MODIFIABLE	0x100186b27ULL /* User modifiable flags */
 
 /* Flags for renameat2, from /usr/include/linux/fs.h.  For now we
    support only RENAME_NOREPLACE. */
diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml
index b93671b16dba..fbb39f5f2791 100644
--- a/winsup/doc/utils.xml
+++ b/winsup/doc/utils.xml
@@ -68,7 +68,7 @@
       case sensitivity.
     </para>
 
-    <para>The format of 'mode' is {+-=}[acCehnrsSt]</para>
+    <para>The format of 'mode' is {+-=}[acCehnprsStu]</para>
 
     <para>The operator '+' causes the selected attributes to be added to the
       existing attributes of the files; '-' causes them to be removed; and
@@ -88,6 +88,8 @@
   'n', 'Notindexed':    file or directory is not to be indexed by the
 			content indexing service
   'e', 'Encrypted':     file is encrypted
+  'p', 'Pinned':        file is pinned
+  'u', 'Unpinned':      file is unpinned
   'C', 'Casesensitive': directory is handled case sensitive
     </screen>
     </refsect1>
@@ -1448,6 +1450,8 @@ bash$ locale noexpr
   'n', 'Notindexed':    file or directory is not to be indexed by the
                         content indexing service
   'e', 'Encrypted':     file is encrypted
+  'p', 'Pinned':        file is pinned
+  'u', 'Unpinned':      file is unpinned
   'C', 'Casesensitive': directory is handled case sensitive
                         (Windows 10 1803 or later, local NTFS only,
                          WSL must be installed)
diff --git a/winsup/utils/chattr.c b/winsup/utils/chattr.c
index 4b074133cf6f..4ba977112d94 100644
--- a/winsup/utils/chattr.c
+++ b/winsup/utils/chattr.c
@@ -53,10 +53,12 @@ struct
   { FS_OFFLINE_FL,	'o',	NULL },
   { FS_NOTINDEXED_FL,	'n',	"Notindexed" },
   { FS_ENCRYPT_FL,	'e',	"Encrypted" },
+  { FS_PINNED_FL,	'p',	"Pinned" },
+  { FS_UNPINNED_FL,	'u',	"Unpinned" },
   { FS_CASESENS_FL,	'C',	"Casesensitive" },
   { 0,			'\0',	NULL },
 };
-const char *supp_list = "rhsatSrconeC";
+const char *supp_list = "rhsatSrconepuC";
 
 void
 print_flags (uint64_t flags)
@@ -245,7 +247,7 @@ usage (FILE *stream)
       "  -H, --help          this help text\n"
       "  -v, --version       display the program version\n"
       "\n"
-      "The format of 'mode' is {+-=}[acCehnrsSt]\n"
+      "The format of 'mode' is {+-=}[acCehnprsStu]\n"
       "\n"
       "The operator '+' causes the selected attributes to be added to the\n"
       "existing attributes of the files; '-' causes them to be removed; and\n"
@@ -264,6 +266,8 @@ usage (FILE *stream)
       "  'n', 'Notindexed':    file or directory is not to be indexed by the\n"
       "                        content indexing service\n"
       "  'e', 'Encrypted':     file is encrypted\n"
+      "  'p', 'Pinned':        file is pinned\n"
+      "  'u', 'Unpinned':      file is unpinned\n"
       "  'C', 'Casesensitive': directory is handled case sensitive\n");
   exit (stream == stdout ? 0 : 1);
 }
diff --git a/winsup/utils/lsattr.c b/winsup/utils/lsattr.c
index 70022803d068..50935f682ea5 100644
--- a/winsup/utils/lsattr.c
+++ b/winsup/utils/lsattr.c
@@ -53,6 +53,8 @@ struct
   { FS_OFFLINE_FL,	'o',	"Offline" },
   { FS_NOTINDEXED_FL,	'n',	"Notindexed" },
   { FS_ENCRYPT_FL,	'e',	"Encrypted" },
+  { FS_PINNED_FL,	'p',	"Pinned" },
+  { FS_UNPINNED_FL,	'u',	"Unpinned" },
   { FS_CASESENS_FL,	'C',	"Casesensitive" },
   { 0,			'\0',	NULL },
 };
@@ -218,6 +220,8 @@ usage (FILE *stream)
       "  'n', 'Notindexed':    file or directory is not to be indexed by the\n"
       "                        content indexing service\n"
       "  'e', 'Encrypted':     file is encrypted\n"
+      "  'p', 'Pinned':        file is pinned\n"
+      "  'u', 'Unpinned':      file is unpinned\n"
       "  'C', 'Casesensitive': directory is handled case sensitive\n"
       "                        (Windows 10 1803 or later, local NTFS only,\n"
       "                         WSL must be installed)\n");
@@ -284,7 +288,7 @@ main (int argc, char **argv)
 	    ret = 1;
 	}
       else if (lsattr (argv[optind]))
-      	ret = 1;
+	ret = 1;
     }
   return ret;
 }

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-03-08 20:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-08 20:58 [newlib-cygwin/main] Cygwin: FS_IOC_[GS]ETFLAGS: handle pinned and unpinned attributes Corinna Vinschen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).