diff options
author | midipix <writeonce@midipix.org> | 2016-09-13 19:20:44 -0400 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2016-09-13 19:20:44 -0400 |
commit | 7f35de9733d3c82eadd5eb17028803a602c3c1d8 (patch) | |
tree | fc5a3166a943e44723213fa4a01965d5432718e9 /src/logic/slbt_exec_ctx.c | |
parent | 1ed71a9b2fff4dfc73432b94e3049b92d16d1717 (diff) | |
download | slibtool-7f35de9733d3c82eadd5eb17028803a602c3c1d8.tar.bz2 slibtool-7f35de9733d3c82eadd5eb17028803a602c3c1d8.tar.xz |
link mode: account for directory depth when generating .deps for .la wrapper.
Diffstat (limited to 'src/logic/slbt_exec_ctx.c')
-rw-r--r-- | src/logic/slbt_exec_ctx.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/logic/slbt_exec_ctx.c b/src/logic/slbt_exec_ctx.c index f1b6b75..6b66f12 100644 --- a/src/logic/slbt_exec_ctx.c +++ b/src/logic/slbt_exec_ctx.c @@ -147,6 +147,7 @@ int slbt_get_exec_ctx( char ** parg; char * ch; char * mark; + const char * dmark; char * slash; const char * arprefix; const char * dsoprefix; @@ -172,6 +173,28 @@ int slbt_get_exec_ctx( : ictx->ctx.csrc; if (ref && !ictx->ctx.csrc && (mark = strrchr(ref,'/'))) { + if (!(strncmp(ref,"../",3))) + dmark = 0; + else if (!(strncmp(ref,"./",2))) + dmark = &ref[1]; + else + dmark = strchr(ref,'/'); + + for (; dmark; ) { + if (!(strncmp(dmark,"/./",3))) { + dmark = strchr(&dmark[2],'/'); + } else if (!(strncmp(dmark,"/../",4))) { + ictx->ctx.ldirdepth = -1; + dmark = 0; + } else { + for (; *dmark=='/'; ) + dmark++; + + ictx->ctx.ldirdepth++; + dmark = strchr(dmark,'/'); + } + } + ictx->ctx.ldirname = ch; strcpy(ch,ref); ch += mark - ref; |