autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how to determine that UNIX Advisory lock availability


From: Richard Bos
Subject: Re: how to determine that UNIX Advisory lock availability
Date: Sat, 2 Aug 2003 23:14:56 +0200
User-agent: KMail/1.5

No one?  No hint, advice or what so ever...?

Op donderdag 31 juli 2003 15:52, schreef Richard Bos:
> Hello,
>
> My next question, is about how to determine that UNIX Advisory lock can
> be used on a system.  This is used in the database application that I'm
> trying to port to the autoconf.  The description is as follows:
>
> ADVLOCK: "Define to use UNIX Advisory lock with L<relation> lock files."
>
> This is all I have.
>
> At the moment we think that the definition depends on F_GETLK and/or
> F_SETLK, may this be a valid assumption (e.g. F_GETLK and F_SETLK are not
> present present on each system)?
>
>
> The define name that is used at the moment is ADVLOCK and if set
> includes the following in the sourced file:
>
> #ifdef   ADVLOCK
>
> #include <sys/utsname.h>
> #include <fcntl.h>
> #include <stdio.h>
> #include <unistd.h>
>
> struct LOCKREC {
>     char fn[MAXPATH+4];    /* Full path name to lock file allowing for
> "/./" or "././" prefix */
>     int fd;       /* File descriptor of lock file */
>     struct stat   buf;     /* output from fstat(2) on lock file */
> };
>
> static struct LOCKREC *Lockrec; /* Pointer to array structs */
> static int Numlockrec;     /* Number of locked files */
>
> #define NUMLOCKREC 2    /* Allocate room for this many lock
>              * file entries per allocation call.
>              */
>
> static struct utsname uts_name;  /* unix system/node name for lock file */
>
> #endif
>
>
> Further down in the file F_GETLK is used which comes from the header
> file fcntl.h:
> if ( ( fcntl( lockfd, F_GETLK, &flockbuf ) == 0 )
>
> F_GETLK is present on my system via /usr/include/fcntl.h which includes
> /usr/include/bits/fcntl.h (Same can be said about F_SETLK which is used
> as well:
> if ( fcntl( lockfd, F_SETLK, &flockbuf ) == 0 )
>
> > cgrep -E "F_GETLK|F_SETLK" /usr/include/bits/fcntl.h
>
> # define F_GETLK        5       /* Get record locking info.  */
> # define F_SETLK        6       /* Set record locking info (non-blocking). 
> */
>
> configure already checks for fcntl.h, but how to check for the presence of
> F_GETLK and or F_SETLK
>
> Should there be a new macro written, that does something with:
> #include <sys/types.h>
> #include <sys/stat.h>
> #include <fcntl.h>
> ...do something with F_SETLK
>
> But what should be done?

-- 
Richard Bos
Without a home the journey is endless





reply via email to

[Prev in Thread] Current Thread [Next in Thread]