Linux: Rework handling of names in the lookup functions
[openafs.git] / src / afs / LINUX / osi_misc.c
index 0fe7484..879f7a1 100644 (file)
@@ -78,22 +78,25 @@ osi_lookupname_internal(char *aname, int followlink, struct vfsmount **mnt,
 }
 
 int
-osi_lookupname(char *aname, uio_seg_t seg, int followlink, 
+osi_lookupname(char *aname, uio_seg_t seg, int followlink,
               struct dentry **dpp)
 {
     int code;
-    char *tname;
+    afs_name_t tname = NULL;
+    char *name;
+
     code = ENOENT;
     if (seg == AFS_UIOUSER) {
-        tname = getname(aname);
-        if (IS_ERR(tname)) 
-            return PTR_ERR(tname);
+       tname = getname(aname);
+       if (IS_ERR(tname))
+           return PTR_ERR(tname);
+       name = afs_name_to_string(tname);
     } else {
-        tname = aname;
+       name = aname;
     }
-    code = osi_lookupname_internal(tname, followlink, NULL, dpp);   
+    code = osi_lookupname_internal(name, followlink, NULL, dpp);
     if (seg == AFS_UIOUSER) {
-        afs_putname(tname);
+       afs_putname(tname);
     }
     return code;
 }
@@ -103,14 +106,15 @@ int osi_abspath(char *aname, char *buf, int buflen,
 {
     struct dentry *dp = NULL;
     struct vfsmount *mnt = NULL;
-    char *tname, *path;
+    afs_name_t tname;
+    char *path;
     int code;
 
     code = ENOENT;
     tname = getname(aname);
-    if (IS_ERR(tname)) 
+    if (IS_ERR(tname))
        return -PTR_ERR(tname);
-    code = osi_lookupname_internal(tname, followlink, &mnt, &dp);   
+    code = osi_lookupname_internal(afs_name_to_string(tname), followlink, &mnt, &dp);
     if (!code) {
 #if defined(D_PATH_TAKES_STRUCT_PATH)
        afs_linux_path_t p = { mnt, dp };