2006-01-23 Andrew Stubbs * cli/cli-cmds.c: Include fcntl.h. (source_command): Use the GDB search path to find script files. doc/ * gdb.texinfo (Choosing files): Mention that -directory is used for script files. (Specifying source directories): Likewise. (Command files): Explain how script files are found. Index: src/gdb/cli/cli-cmds.c =================================================================== --- src.orig/gdb/cli/cli-cmds.c 2006-01-23 15:54:23.000000000 +0000 +++ src/gdb/cli/cli-cmds.c 2006-01-23 15:56:11.000000000 +0000 @@ -51,6 +51,8 @@ #include "tui/tui.h" /* For tui_active et.al. */ #endif +#include + /* Prototypes for local command functions */ static void complete_command (char *, int); @@ -427,6 +429,8 @@ source_command (char *args, int from_tty FILE *stream; struct cleanup *old_cleanups; char *file = args; + char *full_pathname = NULL; + int fd; if (file == NULL) { @@ -436,8 +440,18 @@ source_command (char *args, int from_tty file = tilde_expand (file); old_cleanups = make_cleanup (xfree, file); - stream = fopen (file, FOPEN_RT); - if (!stream) + /* Search for and open 'file' on the search path used for source + files. Put the full location in 'full_pathname'. */ + fd = openp (source_path, OPF_TRY_CWD_FIRST, + file, O_RDONLY, 0, &full_pathname); + + /* Use the full path name, if it is found. */ + if (full_pathname != NULL && fd != -1) + { + file = full_pathname; + } + + if (fd == -1) { if (from_tty) perror_with_name (file); @@ -445,6 +459,7 @@ source_command (char *args, int from_tty return; } + stream = fdopen (fd, FOPEN_RT); script_from_file (stream, file); do_cleanups (old_cleanups); Index: src/gdb/doc/gdb.texinfo =================================================================== --- src.orig/gdb/doc/gdb.texinfo 2006-01-23 15:54:24.000000000 +0000 +++ src/gdb/doc/gdb.texinfo 2006-01-23 15:57:28.000000000 +0000 @@ -950,7 +950,7 @@ also be interleaved with @samp{-command} @itemx -d @var{directory} @cindex @code{--directory} @cindex @code{-d} -Add @var{directory} to the path to search for source files. +Add @var{directory} to the path to search for source and script files. @item -r @itemx -readnow @@ -5018,6 +5018,9 @@ When you start @value{GDBN}, its source and @samp{cwd}, in that order. To add other directories, use the @code{directory} command. +The search path is used to find both program source files and @value{GDBN} +script files (read using the @samp{-command} option and @samp{source} command). + @table @code @item directory @var{dirname} @dots{} @item dir @var{dirname} @dots{} @@ -16210,6 +16213,9 @@ unless the order of execution is changed printed as they are executed. An error in any command terminates execution of the command file and control is returned to the console. +@value{GDBN} searches for @var{filename} in the current directory and then +on the search path (specified with the @samp{directory} command). + Commands that would ask for confirmation if used interactively proceed without asking when used in a command file. Many @value{GDBN} commands that normally print messages to say what they are doing omit the messages