xfs
[Top] [All Lists]

[PATCH 02/13] libxfs: rename XFS_CMP_CASE to XFS_CMP_MATCH

To: xfs@xxxxxxxxxxx
Subject: [PATCH 02/13] libxfs: rename XFS_CMP_CASE to XFS_CMP_MATCH
From: Ben Myers <bpm@xxxxxxx>
Date: Thu, 11 Sep 2014 15:52:38 -0500
Cc: olaf@xxxxxxx, tinguely@xxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20140911203735.GA19952@xxxxxxx>
References: <20140911203735.GA19952@xxxxxxx>
User-agent: Mutt/1.5.20 (2009-06-14)
From: Olaf Weber <olaf@xxxxxxx>

Rename XFS_CMP_CASE to XFS_CMP_MATCH. With unicode filenames and
normalization, different strings will match on other criteria than
case insensitivity.

Signed-off-by: Olaf Weber <olaf@xxxxxxx>
---
 include/xfs_da_btree.h | 2 +-
 libxfs/xfs_dir2.c      | 9 ++++++---
 libxfs/xfs_dir2_node.c | 2 +-
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/include/xfs_da_btree.h b/include/xfs_da_btree.h
index e492dca..3d9f9dd 100644
--- a/include/xfs_da_btree.h
+++ b/include/xfs_da_btree.h
@@ -34,7 +34,7 @@ struct zone;
 enum xfs_dacmp {
        XFS_CMP_DIFFERENT,      /* names are completely different */
        XFS_CMP_EXACT,          /* names are exactly the same */
-       XFS_CMP_CASE            /* names are same but differ in case */
+       XFS_CMP_MATCH           /* names are same but differ in encoding */
 };
 
 /*
diff --git a/libxfs/xfs_dir2.c b/libxfs/xfs_dir2.c
index 4c8c836..57e98a3 100644
--- a/libxfs/xfs_dir2.c
+++ b/libxfs/xfs_dir2.c
@@ -72,7 +72,7 @@ xfs_ascii_ci_compname(
                        continue;
                if (tolower(args->name[i]) != tolower(name[i]))
                        return XFS_CMP_DIFFERENT;
-               result = XFS_CMP_CASE;
+               result = XFS_CMP_MATCH;
        }
 
        return result;
@@ -248,8 +248,11 @@ xfs_dir_cilookup_result(
 {
        if (args->cmpresult == XFS_CMP_DIFFERENT)
                return ENOENT;
-       if (args->cmpresult != XFS_CMP_CASE ||
-                                       !(args->op_flags & XFS_DA_OP_CILOOKUP))
+       if (args->cmpresult == XFS_CMP_EXACT)
+               return EEXIST;
+       ASSERT(args->cmpresult == XFS_CMP_MATCH);
+       /* Only dup the found name if XFS_DA_OP_CILOOKUP is set. */
+       if (!(args->op_flags & XFS_DA_OP_CILOOKUP))
                return EEXIST;
 
        args->value = kmem_alloc(len, KM_NOFS | KM_MAYFAIL);
diff --git a/libxfs/xfs_dir2_node.c b/libxfs/xfs_dir2_node.c
index fb27506..550ca99 100644
--- a/libxfs/xfs_dir2_node.c
+++ b/libxfs/xfs_dir2_node.c
@@ -2034,7 +2034,7 @@ xfs_dir2_node_lookup(
        error = xfs_da3_node_lookup_int(state, &rval);
        if (error)
                rval = error;
-       else if (rval == ENOENT && args->cmpresult == XFS_CMP_CASE) {
+       else if (rval == ENOENT && args->cmpresult == XFS_CMP_MATCH) {
                /* If a CI match, dup the actual name and return EEXIST */
                xfs_dir2_data_entry_t   *dep;
 
-- 
1.7.12.4

<Prev in Thread] Current Thread [Next in Thread>