Implement pathconf(2).

This commit is contained in:
mycroft 1994-07-19 23:33:59 +00:00
parent 2b3a0d92f6
commit 988d22662a
2 changed files with 59 additions and 19 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: cd9660_node.h,v 1.5 1994/07/19 14:14:13 mycroft Exp $ */
/* $NetBSD: cd9660_node.h,v 1.6 1994/07/19 23:33:59 mycroft Exp $ */
/*-
* Copyright (c) 1994
@ -129,6 +129,7 @@ int cd9660_unlock __P((struct vop_unlock_args *));
int cd9660_strategy __P((struct vop_strategy_args *));
int cd9660_print __P((struct vop_print_args *));
int cd9660_islocked __P((struct vop_islocked_args *));
int cd9660_pathconf __P((struct vop_pathconf_args *));
int cd9660_blkatoff __P((struct vop_blkatoff_args *));
void cd9660_defattr __P((struct iso_directory_record *,
struct iso_node *, struct buf *));

View File

@ -1,4 +1,4 @@
/* $NetBSD: cd9660_vnops.c,v 1.11 1994/07/19 15:14:09 mycroft Exp $ */
/* $NetBSD: cd9660_vnops.c,v 1.12 1994/07/19 23:34:01 mycroft Exp $ */
/*-
* Copyright (c) 1994
@ -857,21 +857,6 @@ cd9660_unlock(ap)
return (0);
}
/*
* Check for a locked inode.
*/
int
cd9660_islocked(ap)
struct vop_islocked_args /* {
struct vnode *a_vp;
} */ *ap;
{
if (VTOI(ap->a_vp)->i_flag & IN_LOCKED)
return (1);
return (0);
}
/*
* Calculate the logical to physical mapping if not done already,
* then call the device strategy routine.
@ -920,10 +905,66 @@ cd9660_print(ap)
struct vnode *a_vp;
} */ *ap;
{
printf("tag VT_ISOFS, isofs vnode\n");
return (0);
}
/*
* Check for a locked inode.
*/
int
cd9660_islocked(ap)
struct vop_islocked_args /* {
struct vnode *a_vp;
} */ *ap;
{
if (VTOI(ap->a_vp)->i_flag & IN_LOCKED)
return (1);
return (0);
}
/*
* Return POSIX pathconf information applicable to cd9660 filesystems.
*/
int
cd9660_pathconf(ap)
struct vop_pathconf_args /* {
struct vnode *a_vp;
int a_name;
int *a_retval;
} */ *ap;
{
switch (ap->a_name) {
case _PC_LINK_MAX:
*ap->a_retval = 1;
return (0);
case _PC_NAME_MAX:
if (VTOI(ap->a_vp)->i_mnt->iso_ftype == ISO_FTYPE_RRIP)
*ap->a_retval = NAME_MAX;
else
*ap->a_retval = 23; /* XXX 8.8;5 */
return (0);
case _PC_PATH_MAX:
*ap->a_retval = PATH_MAX;
return (0);
case _PC_PIPE_BUF:
*ap->a_retval = PIPE_BUF;
return (0);
case _PC_CHOWN_RESTRICTED:
*ap->a_retval = 1;
return (0);
case _PC_NO_TRUNC:
*ap->a_retval = 1;
return (0);
default:
return (EINVAL);
}
/* NOTREACHED */
}
/*
* Unsupported operation
*/
@ -953,8 +994,6 @@ cd9660_enotsupp()
#define cd9660_rmdir ((int (*) __P((struct vop_rmdir_args *)))cd9660_enotsupp)
#define cd9660_symlink \
((int (*) __P((struct vop_symlink_args *)))cd9660_enotsupp)
#define cd9660_pathconf \
((int (*) __P((struct vop_pathconf_args *)))cd9660_enotsupp)
#define cd9660_advlock \
((int (*) __P((struct vop_advlock_args *)))cd9660_enotsupp)
#define cd9660_valloc ((int(*) __P(( \