[PATCH cifs-utils 2/2] smbinfo: add filenormalizednameinfo subcommand

ChenXiaoSong chenxiaosong at chenxiaosong.com
Tue Sep 15 06:34:29 UTC 2026


From: ChenXiaoSong <chenxiaosong at kylinos.cn>

Example:

  1. touch /mnt/dir/long-file-name
  2. ./smbinfo filenormalizednameinfo /mnt/dir/long-file-name
     Normalized Name: dir\long-file-name

Signed-off-by: ChenXiaoSong <chenxiaosong at kylinos.cn>
---
 bash-completion/smbinfo | 3 ++-
 smbinfo                 | 9 +++++++++
 smbinfo.rst             | 2 ++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/bash-completion/smbinfo b/bash-completion/smbinfo
index 54e2ff5..06478c6 100644
--- a/bash-completion/smbinfo
+++ b/bash-completion/smbinfo
@@ -14,6 +14,7 @@ smb_info()
 	      filefsfullsizeinfo
 	      fileinternalinfo
 	      filemodeinfo
+	      filenormalizednameinfo
 	      filepositioninfo
 	      filestandardinfo
 	      filestreaminfo
@@ -33,7 +34,7 @@ smb_info()
 			;;
 		'fileaccessinfo'|'filealigninfo'|'fileallinfo'|'filealternatenameinfo'|\
 		'filebasicinfo'|'fileeainfo'|'filefsfullsizeinfo'|'fileinternalinfo'|\
-		'filemodeinfo'|'filepositioninfo'|\
+		'filemodeinfo'|'filenormalizednameinfo'|'filepositioninfo'|\
 		'filestandardinfo'|'filestreaminfo'|'filecompressioninfo'|'fsctl-getobjid'|\
 		'getcompression'|'setcompression'|'list-snapshots'|'quota'|'secdesc'|'keys'|\
 		'gettconinfo'|'notify')
diff --git a/smbinfo b/smbinfo
index 1f1f3c4..f9a8c4d 100755
--- a/smbinfo
+++ b/smbinfo
@@ -37,6 +37,7 @@ SMB2_O_INFO_FILE        = 0x01
 # QUERY INFO levels
 FILE_ALTERNATE_NAME_INFORMATION  = 21
 FILE_COMPRESSION_INFORMATION     = 28
+FILE_NORMALIZED_NAME_INFORMATION = 48
 
 # ioctl ctl codes
 CIFS_QUERY_INFO          = 0xc018cf07
@@ -262,6 +263,10 @@ def main():
     sap.add_argument("file")
     sap.set_defaults(func=cmd_filemodeinfo)
 
+    sap = subp.add_parser("filenormalizednameinfo", help="Prints FileNormalizedNameInfo for a cifs file")
+    sap.add_argument("file")
+    sap.set_defaults(func=cmd_filenormalizednameinfo)
+
     sap = subp.add_parser("filepositioninfo", help="Prints FilePositionInfo for a cifs file")
     sap.add_argument("file")
     sap.set_defaults(func=cmd_filepositioninfo)
@@ -457,6 +462,10 @@ def cmd_filealternatenameinfo(args):
     return cmd_filenameinfo(args, FILE_ALTERNATE_NAME_INFORMATION,
                             "Alternate Name")
 
+def cmd_filenormalizednameinfo(args):
+    return cmd_filenameinfo(args, FILE_NORMALIZED_NAME_INFORMATION,
+                            "Normalized Name")
+
 def print_filenameinfo(buf, label):
     name_length = struct.unpack_from('<I', buf, 0)[0]
     name = buf[4:4 + name_length].decode("utf-16le")
diff --git a/smbinfo.rst b/smbinfo.rst
index 8356617..7aa3ecd 100644
--- a/smbinfo.rst
+++ b/smbinfo.rst
@@ -63,6 +63,8 @@ COMMAND
 
 `filemodeinfo`: Prints the FileModeInformation class
 
+`filenormalizednameinfo`: Prints the FileNormalizedNameInformation class
+
 `filepositioninfo`: Prints the FilePositionInformation class
 
 `filestandardinfo`: Prints the FileStandardInformation class
-- 
2.55.0




More information about the samba-technical mailing list