From 93e38b3566a587e0aec3c46de85abf28f82614ac Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 3 Mar 2024 21:49:15 +0000 Subject: link mode: unless created for the current .la, mark the .a or .so as disabled. --- src/logic/linkcmd/slbt_linkcmd_archive.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/logic/linkcmd/slbt_linkcmd_archive.c') diff --git a/src/logic/linkcmd/slbt_linkcmd_archive.c b/src/logic/linkcmd/slbt_linkcmd_archive.c index a8002fb..9b002f6 100644 --- a/src/logic/linkcmd/slbt_linkcmd_archive.c +++ b/src/logic/linkcmd/slbt_linkcmd_archive.c @@ -57,17 +57,26 @@ static int slbt_exec_link_remove_file( const char * target) { int fdcwd; - - (void)ectx; + char * mark; + char * sbuf; /* fdcwd */ fdcwd = slbt_driver_fdcwd(dctx); /* remove target (if any) */ - if (!unlinkat(fdcwd,target,0) || (errno == ENOENT)) - return 0; + if (unlinkat(fdcwd,target,0) && (errno != ENOENT)) + return SLBT_SYSTEM_ERROR(dctx,0); + + /* remove a previous .disabled placeholder */ + sbuf = (slbt_get_exec_ictx(ectx))->sbuf; + mark = sbuf; + mark += sprintf(mark,"%s",target); + strcpy(mark,".disabled"); - return SLBT_SYSTEM_ERROR(dctx,0); + if (unlinkat(fdcwd,sbuf,0) && (errno != ENOENT)) + return SLBT_SYSTEM_ERROR(dctx,0); + + return 0; } slbt_hidden int slbt_exec_link_create_archive( -- cgit v1.2.3