home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula
/
nebula.bin
/
SourceCode
/
libcs
/
openp.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-12-11
|
3KB
|
103 lines
/*
* Copyright (c) 1990 Carnegie Mellon University
* All Rights Reserved.
*
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided that both the copyright
* notice and this permission notice appear in all copies of the
* software, derivative works or modified versions, and any portions
* thereof, and that both notices appear in supporting documentation.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND CARNEGIE MELLON UNIVERSITY
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT
* SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
* RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
* CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Users of this software agree to return to Carnegie Mellon any
* improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
* Export of this software is permitted only after complying with the
* regulations of the U.S. Deptartment of Commerce relating to the
* Export of Technical Data.
*/
/* openp, fopenp -- search pathlist and open file
*
* Usage:
* i = openp (path,file,complete,flags,mode)
* f = fopenp (path,file,complete,type)
* int i,flags,mode;
* FILE *f;
* char *path,*file,*complete,*type;
*
* Openp searches for "file" in the pathlist "path";
* when the file is found and can be opened by open()
* with the specified "flags" and "mode", then the full filename
* is copied into "complete" and openp returns the file
* descriptor. If no such file is found, openp returns -1.
* Fopenp performs the same function, using fopen() instead
* of open() and type instead of flags/mode; it returns 0 if no
* file is found.
*
* HISTORY
* $Log: openp.c,v $
* Revision 1.2 90/12/11 17:57:28 mja
* Add copyright/disclaimer for distribution.
*
* 30-Apr-85 Steven Shafer (sas) at Carnegie-Mellon University
* Adapted for 4.2 BSD UNIX. Added new parameter to openp.c;
* changed names of flags, mode, and type parameters to reflect
* current manual entries for open and fopen.
*
* 20-Nov-79 Steven Shafer (sas) at Carnegie-Mellon University
* Created for VAX.
*
*/
#include <stdio.h>
int open();
int searchp();
static int flgs,mod,value;
static char *ftyp;
static FILE *fvalue;
static int func (fnam)
char *fnam;
{
value = open (fnam,flgs,mod);
return (value < 0);
}
static int ffunc (fnam)
char *fnam;
{
fvalue = fopen (fnam,ftyp);
return (fvalue == 0);
}
int openp (path,file,complete,flags,mode)
char *path, *file, *complete;
int flags, mode;
{
register char *p;
flgs = flags;
mod = mode;
if (searchp(path,file,complete,func) < 0) return (-1);
return (value);
}
FILE *fopenp (path,file,complete,ftype)
char *path, *file, *complete, *ftype;
{
register char *p;
ftyp = ftype;
if (searchp(path,file,complete,ffunc) < 0) return (0);
return (fvalue);
}