1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-26 08:32:00 +00:00

PushSearchPath will add the path only if it's not already there.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4672 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2010-05-28 11:56:01 +00:00
parent ebd679dd57
commit 9a6f97cfe1
2 changed files with 24 additions and 7 deletions

View File

@ -156,11 +156,25 @@ void AddSubSearchPathFromEnv (SearchPath* P, const char* EnvVar, const char* Sub
void PushSearchPath (SearchPath* P, const char* NewPath)
/* Add a new search path to the head of an existing search path list */
int PushSearchPath (SearchPath* P, const char* NewPath)
/* Add a new search path to the head of an existing search path list, provided
* that it's not already there. If the path is already at the first position,
* return zero, otherwise return a non zero value.
*/
{
/* Insert a clean copy of the path at position 0 */
CollInsert (P, CleanupPath (NewPath), 0);
/* Generate a clean copy of NewPath */
char* Path = CleanupPath (NewPath);
/* If we have paths, check if Path is already at position zero */
if (CollCount (P) > 0 && strcmp (CollConstAt (P, 0), Path) == 0) {
/* Match. Delete the copy and return to the caller */
xfree (Path);
return 0;
}
/* Insert a clean copy of the path at position 0, return success */
CollInsert (P, Path, 0);
return 1;
}

View File

@ -75,8 +75,11 @@ void AddSubSearchPathFromEnv (SearchPath* P, const char* EnvVar, const char* Sub
* the environment variable value.
*/
void PushSearchPath (SearchPath* P, const char* NewPath);
/* Add a new search path to the head of an existing search path list */
int PushSearchPath (SearchPath* P, const char* NewPath);
/* Add a new search path to the head of an existing search path list, provided
* that it's not already there. If the path is already at the first position,
* return zero, otherwise return a non zero value.
*/
void PopSearchPath (SearchPath* P);
/* Remove a search path from the head of an existing search path list */