Code cleanup.
	* charset.c (find_charset_names): Remove variables ix and elt.
	Use free_char_ptr_vec.
	* elfread.c (build_id_to_debug_filename): New variables debugdir_vec,
	back_to and ix.  Use dirnames_to_char_ptr_vec.  Remove variable
	debugdir_end.  New variable debugdir_len.
	* gdb_vecs.h (free_char_ptr_vec, make_cleanup_free_char_ptr_vec)
	(dirnames_to_char_ptr_vec_append, dirnames_to_char_ptr_vec): New
	declarations.
	* progspace.c (clear_program_space_solib_cache): Remove variables ix
	and elt.  Use free_char_ptr_vec.
	* source.c (add_path): Remove variables argv, arg and argv_index.
	New variables dir_vec, back_to, ix and name.
	Use dirnames_to_char_ptr_vec_append.  Use freeargv instead of
	make_cleanup_freeargv.  Remove variable separator.  Simplify the code
	no longer expecting DIRNAME_SEPARATOR.
	(openp): Remove variable p, p1 and len.  New variables dir_vec,
	back_to, ix and dir.  Use dirnames_to_char_ptr_vec.  Simplify the code
	no longer expecting DIRNAME_SEPARATOR.
	* symfile.c (find_separate_debug_file): New variables debugdir_vec,
	back_to and ix.  Use dirnames_to_char_ptr_vec.  Remove variable
	debugdir_end.
	* utils.c (free_char_ptr_vec, do_free_char_ptr_vec)
	(make_cleanup_free_char_ptr_vec, dirnames_to_char_ptr_vec_append)
	(dirnames_to_char_ptr_vec): New functions.
This commit is contained in:
Jan Kratochvil
2012-04-17 15:47:09 +00:00
parent 5ee4ed9f2e
commit e4ab2fad14
8 changed files with 204 additions and 121 deletions

View File

@ -1441,6 +1441,9 @@ find_separate_debug_file (const char *dir,
char *debugdir;
char *debugfile;
int i;
VEC (char_ptr) *debugdir_vec;
struct cleanup *back_to;
int ix;
/* Set I to max (strlen (canon_dir), strlen (dir)). */
i = strlen (dir);
@ -1475,20 +1478,12 @@ find_separate_debug_file (const char *dir,
Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
cause "/..." lookups. */
debugdir = debug_file_directory;
do
debugdir_vec = dirnames_to_char_ptr_vec (debug_file_directory);
back_to = make_cleanup_free_char_ptr_vec (debugdir_vec);
for (ix = 0; VEC_iterate (char_ptr, debugdir_vec, ix, debugdir); ++ix)
{
char *debugdir_end;
while (*debugdir == DIRNAME_SEPARATOR)
debugdir++;
debugdir_end = strchr (debugdir, DIRNAME_SEPARATOR);
if (debugdir_end == NULL)
debugdir_end = &debugdir[strlen (debugdir)];
memcpy (debugfile, debugdir, debugdir_end - debugdir);
debugfile[debugdir_end - debugdir] = 0;
strcpy (debugfile, debugdir);
strcat (debugfile, "/");
strcat (debugfile, dir);
strcat (debugfile, debuglink);
@ -1503,8 +1498,7 @@ find_separate_debug_file (const char *dir,
strlen (gdb_sysroot)) == 0
&& IS_DIR_SEPARATOR (canon_dir[strlen (gdb_sysroot)]))
{
memcpy (debugfile, debugdir, debugdir_end - debugdir);
debugfile[debugdir_end - debugdir] = 0;
strcpy (debugfile, debugdir);
strcat (debugfile, canon_dir + strlen (gdb_sysroot));
strcat (debugfile, "/");
strcat (debugfile, debuglink);
@ -1512,11 +1506,9 @@ find_separate_debug_file (const char *dir,
if (separate_debug_file_exists (debugfile, crc32, objfile))
return debugfile;
}
debugdir = debugdir_end;
}
while (*debugdir != 0);
do_cleanups (back_to);
xfree (debugfile);
return NULL;
}