about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/BSD/Command/_chflags42
1 files changed, 29 insertions, 13 deletions
diff --git a/Completion/BSD/Command/_chflags b/Completion/BSD/Command/_chflags
index 8147df009..726d0fddc 100644
--- a/Completion/BSD/Command/_chflags
+++ b/Completion/BSD/Command/_chflags
@@ -15,32 +15,48 @@ addflags() {
 }
 
 addflags \
-  nodump nodump \
-  opaque opaque \
   uappnd 'user append-only' \
   uchg 'user immutable'
 
 if (( ! EUID )); then
   addflags \
     arch archived \
+    nodump nodump \
     sappnd 'system append-only' \
     schg 'system immutable'
   unset own
 fi
 
-if [[ $OSTYPE = (freebsd|dragonfly|darwin)* ]]; then
-  addflags \
-    hidden hidden \
-    uunlnk 'user undeletable'
+if [[ $OSTYPE = (darwin|dragonfly|freebsd|netbsd)* ]]; then
+  addflags opaque opaque
 
-  [[ $OSTYPE = freebsd* ]] && addflags \
-    offline offline \
-    rdonly readonly \
-    reparse 'Windows reparse point' \
-    sparse 'sparse file' \
-    system system
+  if [[ $OSTYPE = darwin* ]]; then
+    addflags hidden hidden
+  fi
+
+  if [[ $OSTYPE = (dragonfly|freebsd)* ]]; then
+    addlfags uunlnk 'user undeletable'
+    (( EUID )) || addflags sunlnk 'system undeletable'
+  fi
 
-  (( EUID )) || addflags sunlnk 'system undeletable'
+  [[ $OSTYPE = dragonflybsd* ]] && {
+    addflags \
+      cache XXX \
+      nouhistory 'user nohistory'
+
+    (( EUID )) || addflags \
+      noscache XXX \
+      noshistory 'system nohistory'
+  }
+
+  [[ $OSTYPE = freebsd* ]] && addflags \
+    uarch archive \
+    uhidden hidden \
+    uoffline offline \
+    urdonly 'DOS, Windows and CIFS readonly' \
+    ureparse 'Windows reparse point' \
+    usparse 'sparse file' \
+    usystem 'DOS, Windows and CIFS system'
 
   args=(
     "-f[don't display diagnostic messages]"