ckclark@athena.mit.edu (Calvin Clark) (04/22/91)
Two problems with building perl on the PS/2 model 70 running AIX 1.2
compelled me to make code changes to the following files:
Files which use O_OPENDIR: Files which use f_next:
-------------------------- -----------------------
arg.h cons.c
doio.c form.c
eval.c form.h
toke.c toke.c
The problem with O_OPENDIR is that <sys/fcntl.h> defines it:
fcntl.h:#define O_OPENDIR 04000 /* no longer used */
which overrides the value in arg.h that the perl code expects:
arg.h:#define O_OPENDIR 259
A possible solution is to change the name O_OPENDIR in the perl code.
Another problem occurs because 'f_next' has a macro definition in
<sys/file.h>:
struct file
{
long f_flag;
short f_count; /* reference count */
short f_tcbdes; /* TCB descriptor */
short f_type; /* descriptor type */
siteno_t f_tmgrsite; /* token manager site */
char f_wnttok; /* token semaphore */
char f_tlckcnt; /* token lock semaphore */
union {
struct inode *F_inode; /* pointer to inode structure */
caddr_t F_data; /* pointer to socket */
} f_ISP;
#define f_inode f_ISP.F_inode
#define f_data f_ISP.F_data
union {
off_t F_offset; /* read/write char pointer */
short F_msgcount; /* references from msg queue */
#define f_msgcount f_UN.F_msgcount
struct file *F_next; /* pointer for free list */
#define f_next f_UN.F_next
} f_UN;
#define f_offset f_UN.F_offset
};
This causes compile time errors in files which use 'f_next' as a structure
element. Possible solutions are to rename 'f_next' in the perl code, or
to include something like the following in those files:
#ifdef f_next
#undef f_next
#endif
I need <sys/file.h>, which includes <sys/fcntl.h> on this system, so there
is no way to avoid making these changes to the perl source code.
-Calvin
INTERNET ckclark@athena.mit.edu
UUCP ...!mit-eddie!mit-athena!ckclark
BITNET Use a ouija board.