1/* 2 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * "Portions Copyright (c) 1999 Apple Computer, Inc. All Rights 7 * Reserved. This file contains Original Code and/or Modifications of 8 * Original Code as defined in and that are subject to the Apple Public 9 * Source License Version 1.0 (the 'License'). You may not use this file 10 * except in compliance with the License. Please obtain a copy of the 11 * License at http://www.apple.com/publicsource and read it before using 12 * this file. 13 * 14 * The Original Code and all software distributed under the License are 15 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 19 * License for the specific language governing rights and limitations 20 * under the License." 21 * 22 * @APPLE_LICENSE_HEADER_END@ 23 */ 24/* openp, fopenp -- search pathlist and open file 25 * 26 * Usage: 27 * i = openp (path,file,complete,flags,mode) 28 * f = fopenp (path,file,complete,type) 29 * int i,flags,mode; 30 * FILE *f; 31 * char *path,*file,*complete,*type; 32 * 33 * Openp searches for "file" in the pathlist "path"; 34 * when the file is found and can be opened by open() 35 * with the specified "flags" and "mode", then the full filename 36 * is copied into "complete" and openp returns the file 37 * descriptor. If no such file is found, openp returns -1. 38 * Fopenp performs the same function, using fopen() instead 39 * of open() and type instead of flags/mode; it returns 0 if no 40 * file is found. 41 * 42 * HISTORY 43 * 30-Apr-85 Steven Shafer (sas) at Carnegie-Mellon University 44 * Adapted for 4.2 BSD UNIX. Added new parameter to openp.c; 45 * changed names of flags, mode, and type parameters to reflect 46 * current manual entries for open and fopen. 47 * 48 * 20-Nov-79 Steven Shafer (sas) at Carnegie-Mellon University 49 * Created for VAX. 50 * 51 */ 52 53#include <stdio.h> 54#include <fcntl.h> /* open */ 55#include "config.h" 56 57 58int openp(const char *fpath, char *file, char *complete, int flags, int mode); 59 60static int flgs,mod,value; 61static const char *ftyp; 62static FILE *fvalue; 63 64static int 65func(char *fnam) 66{ 67 value = open (fnam,flgs,mod); 68 return (value < 0); 69} 70 71static int 72ffunc(char *fnam) 73{ 74 fvalue = fopen (fnam,ftyp); 75 return (fvalue == 0); 76} 77 78int 79openp(const char *fpath, char *file, char *complete, int flags, int mode) 80{ 81 flgs = flags; 82 mod = mode; 83 if (searchp(fpath,file,complete,func) < 0) return (-1); 84 return (value); 85} 86 87FILE * 88fopenp(const char *fpath, char *file, char *complete, const char *ftype) 89{ 90 ftyp = ftype; 91 if (searchp(fpath,file,complete,ffunc) < 0) return (0); 92 return (fvalue); 93} 94