Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 71125 Details for
Bug 87560
AMD64: create_ml_includes in multilib.eclass creates incorrect paths in include files
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
fam header file (as requested)
fam.h (text/plain), 11.32 KB, created by
Jacob Smullyan
on 2005-10-21 08:50:14 UTC
(
hide
)
Description:
fam header file (as requested)
Filename:
MIME Type:
Creator:
Jacob Smullyan
Created:
2005-10-21 08:50:14 UTC
Size:
11.32 KB
patch
obsolete
>/* > Copyright (C) 1999-2003 Silicon Graphics, Inc. All Rights Reserved. > > This program is free software; you can redistribute it and/or modify it > under the terms of version 2.1 of the GNU Lesser General Public License > as published by the Free Software Foundation. > > This program is distributed in the hope that it would be useful, but > WITHOUT ANY WARRANTY; without even the implied warranty of > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Further, any > license provided herein, whether implied or otherwise, is limited to > this program in accordance with the express provisions of the GNU Lesser > General Public License. Patent licenses, if any, provided herein do not > apply to combinations of this program with other product or programs, or > any other product whatsoever. This program is distributed without any > warranty that the program is delivered free of the rightful claim of any > third person by way of infringement or the like. See the GNU Lesser > General Public License for more details. > > You should have received a copy of the GNU General Public License along > with this program; if not, write the Free Software Foundation, Inc., 59 > Temple Place - Suite 330, Boston MA 02111-1307, USA. >*/ > >#ifndef _FAM_ >#define _FAM_ >#ifdef __cplusplus >extern "C" { >#endif > > >/***************************************************************************** >* >* MODULE: Fam.h - File Alteration Monitor >* >* Fam allows applications to monitor files - receiving events when they >* change. The scheme is simple: Applications register which >* files/directories they are interested, and fam will notify the >* application when any of these files are changed. >* >*****************************************************************************/ > >/* For NAME_MAX - maximum # of chars in a filename */ >#include "limits.h" > > > > > >/***************************************************************************** >* DATA STRUCTURES >* >* >* FAMConnection Structure: >* >* The FAMConnection Data structure is created when opening a connection >* to fam. After that, it is passed into all fam procedures. This >* structure has all the information in it to talk to fam (Currently, >* the only data inside this structure is a file descriptor for >* the socket to fam). >*****************************************************************************/ > >typedef struct FAMConnection { > int fd; > void *client; >} FAMConnection; > > >/***************************************************************************** >* To access the fd inside this structure (so the application writer can >* use select for fam events), the following macro is defined (this will >* allow us to change the implementation without users having to change >* their code): >*****************************************************************************/ >#define FAMCONNECTION_GETFD(fc) ((fc)->fd) > > > > > >/***************************************************************************** >* FAMRequest Structure: >* >* Every time fam is called on to monitor a file, it passes back a >* FAMRequest structure. The main piece of data that this structure >* contans is a reqnum. This reqnum is guaranteed to be unique. When >* cancelling or suspending a monitor request, you must pass this >* data structure into FAMCancelMonitor or FAMSuspendMonitor to >* make sure that you are cancelling/suspending the correct request >* (You can monitor the same file/directory more than once). >*****************************************************************************/ > >typedef struct FAMRequest { > int reqnum; >} FAMRequest; > > >/***************************************************************************** >* Once again, to access the reqnum inside this structure, use the >* following macro: >*****************************************************************************/ >#define FAMREQUEST_GETREQNUM(fc) ((fc)->reqnum) > > > >/***************************************************************************** >* FAMEvent Structure: >* >* When a file/directory has been modified/deleted, fam will pass >* a FAMEvent structure to the application (through the callback >* in the FAMMonitorFile/Directory routines). This structure will >* describe what event happened to the file. The different events >* that can happen to a file are listed in the FAMCodes enum. >*****************************************************************************/ >enum FAMCodes { FAMChanged=1, FAMDeleted=2, FAMStartExecuting=3, > FAMStopExecuting=4, FAMCreated=5, FAMMoved=6, > FAMAcknowledge=7, FAMExists=8, FAMEndExist=9 }; > >typedef struct FAMEvent { > FAMConnection* fc; /* The fam connection that event occurred on */ > FAMRequest fr; /* Corresponds to the FamRequest from monitor */ > char *hostname; /* host and filename - pointer to which */ > char filename[PATH_MAX]; /* file changed */ > void *userdata; /* userdata associated with this monitor req. */ > enum FAMCodes code; /* What happened to file - see above */ >} FAMEvent; > > > > > >/***************************************************************************** >* ERROR HANDLING >* >* If an error occurs inside of libfam, a global named FAMErrno is set >* to a non-zero value and the routine that the error occurred in will >* return an error value (usually NULL). FAMErrlist is a global >* string array (indexed by FAMErrno) that describes the last error >* that happened; >* >* NOTE: currently FAMErrno and FamErrList are unused >*****************************************************************************/ > >extern int FAMErrno; >extern char *FamErrlist[]; > >/* >*[NOTE: Eventually, there will be a bunch of defines right here defining what >* errors can happen in using libfam ] >*/ > > > > > > >/***************************************************************************** >* PROCEDURES: >* >* FAMOpen, FAMClose >* >* The first step that an application has to do is open a connection to >* fam. This is done through the FAMOpen. FAMOpen returns a FAMConnection >* data structure which is passed to all fam procedures. FAMClose closes >* a fam connection. >* >* On error, FAMOpen will return NULL and FAMClose will return -1 (and >* FAMErrno will be set to the value of the error). >*****************************************************************************/ > >extern int FAMOpen(FAMConnection* fc); >extern int FAMOpen2(FAMConnection* fc, const char* appName); >extern int FAMClose(FAMConnection* fc); > > > >/***************************************************************************** >* FAMMonitorDirectory, FAMMonitorFile >* >* These routines tell fam to start monitoring a file/directory. The >* parameters to this function are a FAMConnection (received from FAMOpen), >* a filename and a user data ptr. A FAMRequest structure is returned. >* When the file/directory changes, a fam event structure will be >* generated. The application can retrieve this structure by calling >* FAMNextEvent (see description under FAMNextEvent). >* >* The difference between these two routines is that FAMMonitorDirectory >* monitors any changes that happens to the contents of the directory >* (as well as the directory file itself) and FAMMonitorFile monitors >* only what happens to a particular file. >* >* On error FAMMonitorDirectory/File will return NULL (and FAMErrno will >* be set to the value of the error). >*****************************************************************************/ > >extern int FAMMonitorDirectory(FAMConnection *fc, > const char *filename, > FAMRequest* fr, > void* userData); >extern int FAMMonitorFile(FAMConnection *fc, > const char *filename, > FAMRequest* fr, > void* userData); >extern int FAMMonitorCollection(FAMConnection *fc, > const char *filename, > FAMRequest* fr, > void* userData, > int depth, > const char* mask); > >extern int FAMMonitorDirectory2(FAMConnection *fc, > const char *filename, > FAMRequest* fr); >extern int FAMMonitorFile2(FAMConnection *fc, > const char *filename, > FAMRequest* fr); > > >/***************************************************************************** >* FAMSuspendMonitor, FAMResumeMonitor >* >* FAMSuspendMonitor enables applications to suspend >* receive events about files/directories that are changing. This can >* be useful in situations when an application is stowed and does not >* want to receive events until it is unstowed. FAMResumeMonitor >* signals fam to start monitoring the file/directory again. >* >* Both of these routines take a FAMConnection and a FAMRequest structure. >* The FAMRequest Structure is returned from the FAMMonitorFile/Directory >* routines. >* >* On error, FAMResume/SuspendMonitor will return -1 (and the global >* FAMErrno will be set to the value of the error). >*****************************************************************************/ > >int FAMSuspendMonitor(FAMConnection *fc, const FAMRequest *fr); >int FAMResumeMonitor(FAMConnection *fc, const FAMRequest *fr); > > > > > > >/***************************************************************************** >* FAMCancelMonitor >* >* When an application is done monitoring a file/directory, it should >* call FAMCancelMonitor. This routine will signal fam not to watch >* this directory anymore. Once again, the FAMRequest structure is >* returned from the FAMMonitorFile/Directory routines. >* >* On error, FAMCancelMonitor will return -1 (and the global >* FAMErrno will be set to the value of the error). This routine will free >* the FAMRequest structure that is passed in. >*****************************************************************************/ > >int FAMCancelMonitor(FAMConnection *fc, const FAMRequest *fr); > > > > >/***************************************************************************** >* FAMNextEvent, FAMPending >* >* FAMNextEvent will get the next fam event (file/directory change). If >* there are no fam events waiting, then FAMNextEvent will wait >* until a fam event has been received (from fam). >* >* FAMPending will return the number of fam events that are waiting. >* This routine always returns immediately to the caller. >* >* Essentially, there are two ways to for applications to receive fam >* events: >* >* 1. The "Polling" approach - Just call FAMPending periodically; >* like when the system is waiting for input. If FAMPending returns >* with a positive return value, then there are fam events waiting. >* Call FAMNextEvent to receive the events. >* >* 2. The "Select" approach - Use the fd returned from famOpen (in the >* FAMConnection structure) as one of the fds that the application >* selects on. When select returns saying that data is on the fam >* fd, call FAMNextEvent. >* >* FAMNextEvent reads any information that is on the fam socket, >* and returns it to the application (in the form of a FAMEvent). >* >* On error, FAMNextEvent and FAMPendingEvent will return -1 (and the global >* FAMErrno will be set to the value of the error). >*****************************************************************************/ > >int FAMNextEvent(FAMConnection *fc, FAMEvent *fe); >int FAMPending(FAMConnection* fc); > > > > >/***************************************************************************** >* FAMDebugLevel >* >* This doesn't do anything. >* >*****************************************************************************/ > >#define FAM_DEBUG_OFF 0 >#define FAM_DEBUG_ON 1 >#define FAM_DEBUG_VERBOSE 2 > >int FAMDebugLevel(FAMConnection *fc, int debugLevel); > >#ifdef __cplusplus >} >#endif >#endif /* _FAM_ */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 87560
:
71125
|
71127