mirror of
https://review.haiku-os.org/buildtools
synced 2024-11-23 07:18:49 +01:00
ecc89c9a6a
git-svn-id: file:///srv/svn/repos/haiku/buildtools/trunk@15729 a95241bf-73f2-0310-859d-f6bbb57e9c96
88 lines
1.6 KiB
C
88 lines
1.6 KiB
C
/*
|
|
* Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
|
|
*
|
|
* This file is part of Jam - see jam.c for Copyright information.
|
|
*/
|
|
|
|
/*
|
|
* search.c - find a target along $(SEARCH) or $(LOCATE)
|
|
*
|
|
* 11/04/02 (seiwald) - const-ing for string literals
|
|
*/
|
|
|
|
# include "jam.h"
|
|
# include "lists.h"
|
|
# include "search.h"
|
|
# include "timestamp.h"
|
|
# include "pathsys.h"
|
|
# include "variable.h"
|
|
# include "newstr.h"
|
|
|
|
const char *
|
|
search(
|
|
const char *target,
|
|
time_t *time )
|
|
{
|
|
PATHNAME f[1];
|
|
LIST *varlist;
|
|
char buf[ MAXJPATH ];
|
|
|
|
/* Parse the filename */
|
|
|
|
path_parse( target, f );
|
|
|
|
f->f_grist.ptr = 0;
|
|
f->f_grist.len = 0;
|
|
|
|
if( varlist = var_get( "LOCATE" ) )
|
|
{
|
|
f->f_root.ptr = varlist->string;
|
|
f->f_root.len = strlen( varlist->string );
|
|
|
|
path_build( f, buf, 1 );
|
|
|
|
if( DEBUG_SEARCH )
|
|
printf( "locate %s: %s\n", target, buf );
|
|
|
|
timestamp( buf, time );
|
|
|
|
return newstr( buf );
|
|
}
|
|
else if( varlist = var_get( "SEARCH" ) )
|
|
{
|
|
while( varlist )
|
|
{
|
|
f->f_root.ptr = varlist->string;
|
|
f->f_root.len = strlen( varlist->string );
|
|
|
|
path_build( f, buf, 1 );
|
|
|
|
if( DEBUG_SEARCH )
|
|
printf( "search %s: %s\n", target, buf );
|
|
|
|
timestamp( buf, time );
|
|
|
|
if( *time )
|
|
return newstr( buf );
|
|
|
|
varlist = list_next( varlist );
|
|
}
|
|
}
|
|
|
|
/* Look for the obvious */
|
|
/* This is a questionable move. Should we look in the */
|
|
/* obvious place if SEARCH is set? */
|
|
|
|
f->f_root.ptr = 0;
|
|
f->f_root.len = 0;
|
|
|
|
path_build( f, buf, 1 );
|
|
|
|
if( DEBUG_SEARCH )
|
|
printf( "search %s: %s\n", target, buf );
|
|
|
|
timestamp( buf, time );
|
|
|
|
return newstr( buf );
|
|
}
|