This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

basename() troubles


Eli's latest patch to symtab.c:

2001-05-06  Eli Zaretskii  <eliz@is.elta.co.il>

	* symtab.c (lookup_symtab_1, lookup_partial_symtab): Use basename
	instead of non-portable search for `/'.  Use FILENAME_CMP instead
	of STREQ, to account for case-insensitive filesystems.
	(top-level): #include "filenames.h".

uses the following bit of code:

  if (basename (name) == name)
    ...

in a couple of places.  Unfortunately the FreeBSD basename() always
returns a pointer to internal static storage space.  Therefore the
check will always fail.  There are basically two ways to solve this
problem:

 * Use strcmp() to compare the strings.

 * Use lbasename() from libiberty which has well defined semantics.

The latter is probably a bit more efficient, and has the additional
advantage of removing our dependence on whatever broken basename()
implementation the host supplies.  Do people agree?

Another question is, wheter we should replace the other basename() calls with
lbasename() as well.

Mark


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]