require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&_FS_PTYFS_PTYFS_H_)) {
    eval 'sub _FS_PTYFS_PTYFS_H_ () {1;}' unless defined(&_FS_PTYFS_PTYFS_H_);
    if(defined(&_KERNEL)) {
	eval("sub PTYFSpts () { 0; }") unless defined(&PTYFSpts);
	eval("sub PTYFSptc () { 1; }") unless defined(&PTYFSptc);
	eval("sub PTYFSroot () { 2; }") unless defined(&PTYFSroot);
	eval 'sub ptyfs_type () { ($ptyfs_key->{ptk_type});}' unless defined(&ptyfs_type);
	eval 'sub ptyfs_pty () { ($ptyfs_key->{ptk_pty});}' unless defined(&ptyfs_pty);
	eval 'sub PTYFS_ACCESS () {1;}' unless defined(&PTYFS_ACCESS);
	eval 'sub PTYFS_MODIFY () {2;}' unless defined(&PTYFS_MODIFY);
	eval 'sub PTYFS_CHANGE () {4;}' unless defined(&PTYFS_CHANGE);
	eval 'sub VFSTOPTY {
	    my($mp) = @_;
    	    eval q((($mp)-> &mnt_data));
	}' unless defined(&VFSTOPTY);
    }
    eval 'sub PTYFS_ARGSVERSION () {2;}' unless defined(&PTYFS_ARGSVERSION);
    if(defined(&_KERNEL)) {
	eval 'sub UIO_MX () {32;}' unless defined(&UIO_MX);
	eval 'sub PTYFS_FILENO {
	    my($type, $pty) = @_;
    	    eval q((($type ==  &PTYFSroot) ? 2: (((($pty) + 1) * 2+ ((($type) ==  &PTYFSpts) ? 1: 2)))));
	}' unless defined(&PTYFS_FILENO);
	eval 'sub PTYFS_MAKEDEV {
	    my($ptyfs) = @_;
    	    eval q( &pty_makedev(($ptyfs)-> &ptyfs_type ==  &PTYFSpts ? ord(\'t\' : \'p\'), ($ptyfs)-> &ptyfs_pty));
	}' unless defined(&PTYFS_MAKEDEV);
	eval 'sub PTYFS_ITIMES {
	    my($ptyfs, $acc, $mod, $cre) = @_;
    	    eval q( &while (($ptyfs)-> &ptyfs_status & ( &PTYFS_ACCESS| &PTYFS_CHANGE| &PTYFS_MODIFY))  &ptyfs_itimes($ptyfs, $acc, $mod, $cre));
	}' unless defined(&PTYFS_ITIMES);
	eval 'sub VTOPTYFS {
	    my($vp) = @_;
    	    eval q((($vp)-> &v_data));
	}' unless defined(&VTOPTYFS);
    }
}
1;
