1*22619282SSimon J. Gerraty /* $NetBSD: dir.h,v 1.49 2024/07/07 07:50:57 rillig Exp $ */ 23955d011SMarcel Moolenaar 33955d011SMarcel Moolenaar /* 43955d011SMarcel Moolenaar * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. 53955d011SMarcel Moolenaar * 63955d011SMarcel Moolenaar * This code is derived from software contributed to Berkeley by 73955d011SMarcel Moolenaar * Adam de Boor. 83955d011SMarcel Moolenaar * 93955d011SMarcel Moolenaar * Redistribution and use in source and binary forms, with or without 103955d011SMarcel Moolenaar * modification, are permitted provided that the following conditions 113955d011SMarcel Moolenaar * are met: 123955d011SMarcel Moolenaar * 1. Redistributions of source code must retain the above copyright 133955d011SMarcel Moolenaar * notice, this list of conditions and the following disclaimer. 143955d011SMarcel Moolenaar * 2. Redistributions in binary form must reproduce the above copyright 153955d011SMarcel Moolenaar * notice, this list of conditions and the following disclaimer in the 163955d011SMarcel Moolenaar * documentation and/or other materials provided with the distribution. 173955d011SMarcel Moolenaar * 3. Neither the name of the University nor the names of its contributors 183955d011SMarcel Moolenaar * may be used to endorse or promote products derived from this software 193955d011SMarcel Moolenaar * without specific prior written permission. 203955d011SMarcel Moolenaar * 213955d011SMarcel Moolenaar * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 223955d011SMarcel Moolenaar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 233955d011SMarcel Moolenaar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 243955d011SMarcel Moolenaar * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 253955d011SMarcel Moolenaar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 263955d011SMarcel Moolenaar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 273955d011SMarcel Moolenaar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 283955d011SMarcel Moolenaar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 293955d011SMarcel Moolenaar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 303955d011SMarcel Moolenaar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 313955d011SMarcel Moolenaar * SUCH DAMAGE. 323955d011SMarcel Moolenaar * 333955d011SMarcel Moolenaar * from: @(#)dir.h 8.1 (Berkeley) 6/6/93 343955d011SMarcel Moolenaar */ 353955d011SMarcel Moolenaar 363955d011SMarcel Moolenaar /* 373955d011SMarcel Moolenaar * Copyright (c) 1988, 1989 by Adam de Boor 383955d011SMarcel Moolenaar * Copyright (c) 1989 by Berkeley Softworks 393955d011SMarcel Moolenaar * All rights reserved. 403955d011SMarcel Moolenaar * 413955d011SMarcel Moolenaar * This code is derived from software contributed to Berkeley by 423955d011SMarcel Moolenaar * Adam de Boor. 433955d011SMarcel Moolenaar * 443955d011SMarcel Moolenaar * Redistribution and use in source and binary forms, with or without 453955d011SMarcel Moolenaar * modification, are permitted provided that the following conditions 463955d011SMarcel Moolenaar * are met: 473955d011SMarcel Moolenaar * 1. Redistributions of source code must retain the above copyright 483955d011SMarcel Moolenaar * notice, this list of conditions and the following disclaimer. 493955d011SMarcel Moolenaar * 2. Redistributions in binary form must reproduce the above copyright 503955d011SMarcel Moolenaar * notice, this list of conditions and the following disclaimer in the 513955d011SMarcel Moolenaar * documentation and/or other materials provided with the distribution. 523955d011SMarcel Moolenaar * 3. All advertising materials mentioning features or use of this software 533955d011SMarcel Moolenaar * must display the following acknowledgement: 543955d011SMarcel Moolenaar * This product includes software developed by the University of 553955d011SMarcel Moolenaar * California, Berkeley and its contributors. 563955d011SMarcel Moolenaar * 4. Neither the name of the University nor the names of its contributors 573955d011SMarcel Moolenaar * may be used to endorse or promote products derived from this software 583955d011SMarcel Moolenaar * without specific prior written permission. 593955d011SMarcel Moolenaar * 603955d011SMarcel Moolenaar * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 613955d011SMarcel Moolenaar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 623955d011SMarcel Moolenaar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 633955d011SMarcel Moolenaar * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 643955d011SMarcel Moolenaar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 653955d011SMarcel Moolenaar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 663955d011SMarcel Moolenaar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 673955d011SMarcel Moolenaar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 683955d011SMarcel Moolenaar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 693955d011SMarcel Moolenaar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 703955d011SMarcel Moolenaar * SUCH DAMAGE. 713955d011SMarcel Moolenaar * 723955d011SMarcel Moolenaar * from: @(#)dir.h 8.1 (Berkeley) 6/6/93 733955d011SMarcel Moolenaar */ 743955d011SMarcel Moolenaar 758695518cSSimon J. Gerraty #ifndef MAKE_DIR_H 768695518cSSimon J. Gerraty #define MAKE_DIR_H 773955d011SMarcel Moolenaar 7806b9b3e0SSimon J. Gerraty typedef struct CachedDir CachedDir; 792c3632d1SSimon J. Gerraty 802c3632d1SSimon J. Gerraty void Dir_Init(void); 813955d011SMarcel Moolenaar void Dir_InitCur(const char *); 823955d011SMarcel Moolenaar void Dir_InitDot(void); 83*22619282SSimon J. Gerraty #ifdef CLEANUP 843955d011SMarcel Moolenaar void Dir_End(void); 85*22619282SSimon J. Gerraty #endif 863955d011SMarcel Moolenaar void Dir_SetPATH(void); 874fde40d9SSimon J. Gerraty void Dir_SetSYSPATH(void); 889f45a3c8SSimon J. Gerraty bool Dir_HasWildcards(const char *) MAKE_ATTR_USE; 89dba7b0efSSimon J. Gerraty void SearchPath_Expand(SearchPath *, const char *, StringList *); 909f45a3c8SSimon J. Gerraty char *Dir_FindFile(const char *, SearchPath *) MAKE_ATTR_USE; 919d3df31eSSimon J. Gerraty char *Dir_FindInclude(const char *, SearchPath *) MAKE_ATTR_USE; 929f45a3c8SSimon J. Gerraty char *Dir_FindHereOrAbove(const char *, const char *) MAKE_ATTR_USE; 93b0c40a00SSimon J. Gerraty void Dir_UpdateMTime(GNode *, bool); 94dba7b0efSSimon J. Gerraty CachedDir *SearchPath_Add(SearchPath *, const char *); 959f45a3c8SSimon J. Gerraty char *SearchPath_ToFlags(SearchPath *, const char *) MAKE_ATTR_USE; 9606b9b3e0SSimon J. Gerraty void SearchPath_Clear(SearchPath *); 9706b9b3e0SSimon J. Gerraty void SearchPath_AddAll(SearchPath *, SearchPath *); 983955d011SMarcel Moolenaar void Dir_PrintDirectories(void); 99dba7b0efSSimon J. Gerraty void SearchPath_Print(const SearchPath *); 1009f45a3c8SSimon J. Gerraty SearchPath *Dir_CopyDirSearchPath(void) MAKE_ATTR_USE; 101956e45f6SSimon J. Gerraty 102956e45f6SSimon J. Gerraty /* Stripped-down variant of struct stat. */ 103e2eeea75SSimon J. Gerraty struct cached_stat { 104e2eeea75SSimon J. Gerraty time_t cst_mtime; 105e2eeea75SSimon J. Gerraty mode_t cst_mode; 106956e45f6SSimon J. Gerraty }; 1073955d011SMarcel Moolenaar 108e2eeea75SSimon J. Gerraty int cached_lstat(const char *, struct cached_stat *); 109e2eeea75SSimon J. Gerraty int cached_stat(const char *, struct cached_stat *); 1102c3632d1SSimon J. Gerraty 1119f45a3c8SSimon J. Gerraty #endif 112