patch-2.1.53 linux/include/asm-sparc64/namei.h
Next file: linux/include/asm-sparc64/openprom.h
Previous file: linux/include/asm-sparc64/linux_logo.h
Back to the patch index
Back to the overall index
- Lines: 77
- Date:
Thu Sep 4 12:54:49 1997
- Orig file:
v2.1.52/linux/include/asm-sparc64/namei.h
- Orig date:
Thu Jul 17 10:06:08 1997
diff -u --recursive --new-file v2.1.52/linux/include/asm-sparc64/namei.h linux/include/asm-sparc64/namei.h
@@ -1,4 +1,4 @@
-/* $Id: namei.h,v 1.5 1997/07/17 02:24:28 davem Exp $
+/* $Id: namei.h,v 1.7 1997/09/04 15:46:31 jj Exp $
* linux/include/asm-sparc64/namei.h
*
* Routines to handle famous /usr/gnemul/s*.
@@ -11,40 +11,40 @@
#define SPARC_BSD_EMUL "usr/gnemul/sunos/"
#define SPARC_SOL_EMUL "usr/gnemul/solaris/"
-#if 0 /* XXX FIXME */
-extern int __namei(int, const char *, struct inode *, char *, struct inode **,
- struct inode **, struct qstr *, struct dentry **, int *);
-
-static inline int
-__prefix_namei(int retrieve_mode, const char * name, struct inode * base,
- char * buf, struct inode ** res_dir, struct inode ** res_inode,
- struct qstr * last_name, struct dentry ** last_entry,
- int * last_error)
+static inline struct dentry *
+__sparc64_lookup_dentry(const char *name, int follow_link)
{
int error;
+ struct dentry *base;
- if (!(current->personality & (PER_BSD|PER_SVR4)))
- return -ENOENT;
-
- while (*name == '/')
- name++;
-
- atomic_inc(¤t->fs->root->i_count);
- error = __namei(NAM_FOLLOW_LINK,
- current->personality & PER_BSD ?
- SPARC_BSD_EMUL : SPARC_SOL_EMUL, current->fs->root,
- buf, NULL, &base, NULL, NULL, NULL);
- if (error)
- return error;
-
- error = __namei(retrieve_mode, name, base, buf, res_dir, res_inode,
- last_name, last_entry, last_error);
- if (error)
- return error;
-
- return 0;
+ switch (current->personality) {
+ case PER_BSD:
+ case PER_SVR4:
+ break;
+ default:
+ return ERR_PTR(-ENOENT);
+ }
+
+ base = lookup_dentry ((current->personality == PER_BSD) ?
+ SPARC_BSD_EMUL : SPARC_SOL_EMUL,
+ dget (current->fs->root), 1);
+
+ if (IS_ERR (base)) return base;
+
+ base = lookup_dentry (name, base, follow_link);
+
+ if (IS_ERR (base)) return base;
+
+ if (!base->d_inode) {
+ dput(base);
+ return ERR_PTR(-ENOENT);
+ }
+
+ return base;
}
-#endif /* XXX FIXME */
+#define __prefix_lookup_dentry(name, follow_link) \
+ dentry = __sparc64_lookup_dentry (name, follow_link); \
+ if (!IS_ERR (dentry)) return dentry;
#endif /* __SPARC64_NAMEI_H */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov