One last question about capability macros


 
Thread Tools Search this Thread
Top Forums Programming One last question about capability macros
# 1  
Old 05-23-2007
One last question about capability macros

This might be poorly worded.

In the header file, I have

#ifdef LOCK_FCNTL
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
#define LOCK(file) setlock(fileno(file), F_WRLCK);
#define UNLOCK(file) setlock(fileno(file), F_UNLCK);
#endif /* LOCK_FCNTL */

#ifdef LOCK_FLOCK
#ifdef HAVE_SYS_FILE_H
#include <sys/file.h>
#endif
#define LOCK(file) flock(fileno(file), LOCK_EX)
#define UNLOCK(file) flock(fileno(file), LOCK_UN)
#endif /* LOCK_FLOCK */

And in the file that has main(), I have

#ifdef LOCK_FCNTL
/* Helper function to do fcntl locks.
*/

void setlock(int fd, int type)
{
struct flock lk;

lk.l_type= type;
lk.l_whence= 0;
lk.l_start= 0L;
lk.l_len= 0L;
fcntl(fd,F_SETLKW,&lk);
}

#endif /*LOCK_FCNTL*/


My current operating system supports both fcntl() and flock(). However, the macros for LOCK and UNLOCK seem to assume that the operating system supports either one or the other, but not both. When I compile and run the program, I get no errors.

So the question is, what macro does the computer use? Will it just chose one at random?
# 2  
Old 05-23-2007
Quote:
Originally Posted by frequency8
So the question is, what macro does the computer use? Will it just chose one at random?
The HAVE_xxx macros are determined by configure. This examines the system by test compilations.

If a system has both then the order of #ifdef's in the code will determine which is used.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Macros how-to?

Hi, all I just came to new system with RH, and it has alot of macros I was told to use, but I can't find how to open it for display or for edit, can you help me please, is it all about make/makefile? let say I have macro <trx> like this, that does a lot of things: >$ trx ... creating new... (1 Reply)
Discussion started by: trento17
1 Replies

2. Programming

help with atoi and macros in C

I have a PORT_NUM macro (10 digits long number) in a server file, if i do htons(PORT_NUM) i get warning: this decimal constant is unsigned only in ISO C90 warning: large integer implicitly truncated to unsigned type whats wrong with this? (2 Replies)
Discussion started by: omega666
2 Replies

3. UNIX for Advanced & Expert Users

Using Macros in sftp command

Hi, I've some existing scripts wherein am using ftp + .netrc. I've defined my macros in .netrc file. I want to switch to sftp now but it seems it doesn't support macros and .netrc and it gives "command invalid" error. Is there any other alternative? Note: I don't want help for... (1 Reply)
Discussion started by: ps51517
1 Replies

4. Linux

What are the meaning of these macros..

Masters, I am trying to learn the serial mouse driver for linux kernel. On the kernel source tree I find out these macros and I am unable to find out the meaning of these macros. Please anyone help me to understand these. These macros are defined in linux/serio.h... (2 Replies)
Discussion started by: iamjayanth
2 Replies

5. UNIX for Dummies Questions & Answers

MAKE and its macros and variables

I want to build a Makefile that simply takes a template file and modifies it (sed or perl, probably) before installing the result in the right place - my problem is creating the variable for substitution... So I have SYSTEM = SYS1 SYS2 SYS1_CHANNELS = CHANNEL1 CHANNEL2 CHANNEL4... (1 Reply)
Discussion started by: JerryHone
1 Replies

6. Shell Programming and Scripting

Expect Terminal Macros

Hey people! I just started out working at an ISP as tech support and thought that I should ease the work load by scripting some small macros. I create different commands with Alias through .bashrc which are all directed to the same script file. Here I planned on using Expect to run different... (0 Replies)
Discussion started by: GhettoFish
0 Replies

7. Programming

How do capability macros get named?

The following is taken from some production code: #ifdef LOCK_LOCKF #ifdef HAVE_SYS_FILE_H #include <sys/lockf.h> #endif #ifdef HAVE_SYS_FILE_H #include <sys/file.h> #endif #define LOCK(file) fseek(file, 0L, 0), lockf(file, 1, 0L) #define UNLOCK(file) fseek(file, 0L, 0),... (2 Replies)
Discussion started by: frequency8
2 Replies

8. UNIX for Dummies Questions & Answers

saving macros for VIM

The question is , as the topic says, how does one save macros for VIM in the .vimrc. I had a look on web and it gave all this ****** about how to build turing machines in vim code or something but i just want to store a macro to like : if(){ } I know how to do it IN vim but .vimrc??????!?!?!... (3 Replies)
Discussion started by: yngwie
3 Replies

9. UNIX for Dummies Questions & Answers

troff macros

Hi, I'm going write a small handbook. The typesetting software I'm going to use is troff. There are -ms -me -mm macros for troff. Which one is the most suitable? Thanks! -Tony (2 Replies)
Discussion started by: tonyt
2 Replies
Login or Register to Ask a Question