Skip to content

Commit

Permalink
musl: basename fix
Browse files Browse the repository at this point in the history
Signed-off-by: Alec Ari <[email protected]>
  • Loading branch information
NTULINUX committed Nov 26, 2024
1 parent 50946b9 commit aa03e92
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions src/emc/rs274ngc/interp_o_word.cc
Original file line number Diff line number Diff line change
Expand Up @@ -526,6 +526,15 @@ void Interp::loop_to_beginning(setup_pointer settings)
settings->sequence_number = 0;
}

// Prevent any possibility of the Posix version of basename(3) being used
// (possibly altering the argument). Therefore, local reimplementation
// of the *GNU version* of basename(3).
static const char *thebasename(const char *filename)
{
const char *p = strrchr(filename, '/');
return p ? p + 1 : filename;
}

//
// TESTME!!! MORE THOROUGHLY !!!KL
//
Expand All @@ -545,8 +554,9 @@ int Interp::control_back_to( block_pointer block, // pointer to block
FILE *newFP;
offset_map_iterator it;
offset_pointer op;
logOword("Entered:%s %s", name,basename(block->o_name));
it = settings->offset_map.find(basename(block->o_name));
const char *obasename = thebasename(block->o_name);
logOword("Entered:%s %s", name, obasename);
it = settings->offset_map.find(obasename);

// #1 already defined
if (it != settings->offset_map.end()) {
Expand Down Expand Up @@ -609,8 +619,8 @@ int Interp::control_back_to( block_pointer block, // pointer to block
free(dirname);
}

settings->skipping_o = basename(block->o_name); // start skipping
settings->skipping_to_sub = basename(block->o_name); // start skipping
settings->skipping_o = obasename; // start skipping
settings->skipping_to_sub = obasename; // start skipping
settings->skipping_start = settings->sequence_number;
return INTERP_OK;
}
Expand Down

0 comments on commit aa03e92

Please sign in to comment.