From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15447 invoked by alias); 24 Jul 2014 01:32:40 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 15433 invoked by uid 89); 24 Jul 2014 01:32:38 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 24 Jul 2014 01:32:36 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s6O1WY70003477 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 23 Jul 2014 21:32:34 -0400 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s6O1WWG2004150; Wed, 23 Jul 2014 21:32:33 -0400 Message-ID: <53D06230.6060907@redhat.com> Date: Thu, 24 Jul 2014 01:34:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Tom Tromey , gdb-patches@sourceware.org Subject: Re: [PATCH 3/3] constify to_open References: <1406150844-17134-1-git-send-email-tromey@redhat.com> <1406150844-17134-4-git-send-email-tromey@redhat.com> In-Reply-To: <1406150844-17134-4-git-send-email-tromey@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2014-07/txt/msg00600.txt.bz2 Looks good. Thanks, Pedro Alves On 07/23/2014 10:27 PM, Tom Tromey wrote: > This makes target_ops::to_open take a const string and then fixes the > fallout. > > There were a few of these I could not build. However I eyeballed it > and in any case the fixes should generally be trivial. > > this is based on the patch to fix up the target debugging for to_open, > because that changes gdb to not directly install to_open as the target > command > > 2014-07-22 Tom Tromey > > * bsd-kvm.c (bsd_kvm_open): Constify. > * corelow.c (core_open): Constify. > * ctf.c (ctf_open): Constify. > * dbug-rom.c (dbug_open): Constify. > * exec.c (exec_open): Constify. > * inf-child.c (inf_child_open): Constify. > * m32r-rom.c (m32r_open, mon2000_open): Constify. > * microblaze-rom.c (picobug_open): Constify. > * nto-procfs.c (procfs_open_1, procfs_open, procfs_native_open): > Constify. > * ppcbug-rom.c (ppcbug_open0, ppcbug_open1): Constify. > * record-btrace.c (record_btrace_open): Constify. > * record-full.c (record_full_core_open_1, record_full_open_1) > (record_full_open): Constify. > * remote-m32r-sdi.c (m32r_open): Constify. > * remote-mips.c (common_open, mips_open, pmon_open, ddb_open) > (rockhopper_open, lsi_open): Constify. > * remote-sim.c (gdbsim_open): Constify. > * remote.c (remote_open, extended_remote_open, remote_open_1): > Constify. > * target.h (struct target_ops) : Make "arg" const. > * tracefile-tfile.c (tfile_open): Constify. > --- > gdb/ChangeLog | 25 +++++++++++++++++++++++++ > gdb/bsd-kvm.c | 7 ++++--- > gdb/corelow.c | 9 ++++----- > gdb/ctf.c | 4 ++-- > gdb/dbug-rom.c | 4 +--- > gdb/dink32-rom.c | 4 +--- > gdb/exec.c | 2 +- > gdb/inf-child.c | 4 ++-- > gdb/inf-child.h | 2 +- > gdb/m32r-rom.c | 7 ++----- > gdb/microblaze-rom.c | 2 +- > gdb/monitor.c | 2 +- > gdb/monitor.h | 3 ++- > gdb/nto-procfs.c | 6 +++--- > gdb/ppcbug-rom.c | 4 ++-- > gdb/record-btrace.c | 2 +- > gdb/record-full.c | 6 +++--- > gdb/remote-m32r-sdi.c | 2 +- > gdb/remote-mips.c | 20 ++++++-------------- > gdb/remote-sim.c | 2 +- > gdb/remote.c | 15 ++++++--------- > gdb/target.h | 2 +- > gdb/tracefile-tfile.c | 7 ++++--- > 23 files changed, 75 insertions(+), 66 deletions(-) > > diff --git a/gdb/bsd-kvm.c b/gdb/bsd-kvm.c > index 35ecebb..6705035 100644 > --- a/gdb/bsd-kvm.c > +++ b/gdb/bsd-kvm.c > @@ -63,19 +63,20 @@ static struct target_ops bsd_kvm_ops; > static ptid_t bsd_kvm_ptid; > > static void > -bsd_kvm_open (char *filename, int from_tty) > +bsd_kvm_open (const char *arg, int from_tty) > { > char errbuf[_POSIX2_LINE_MAX]; > char *execfile = NULL; > kvm_t *temp_kd; > + char *filename = NULL; > > target_preopen (from_tty); > > - if (filename) > + if (arg) > { > char *temp; > > - filename = tilde_expand (filename); > + filename = tilde_expand (arg); > if (filename[0] != '/') > { > temp = concat (current_directory, "/", filename, (char *)NULL); > diff --git a/gdb/corelow.c b/gdb/corelow.c > index 1775a66..9290f18 100644 > --- a/gdb/corelow.c > +++ b/gdb/corelow.c > @@ -84,8 +84,6 @@ static struct core_fns *sniff_core_bfd (bfd *); > > static int gdb_check_format (bfd *); > > -static void core_open (char *, int); > - > static void core_close (struct target_ops *self); > > static void core_close_cleanup (void *ignore); > @@ -275,7 +273,7 @@ add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg) > /* This routine opens and sets up the core file bfd. */ > > static void > -core_open (char *filename, int from_tty) > +core_open (const char *arg, int from_tty) > { > const char *p; > int siggy; > @@ -285,9 +283,10 @@ core_open (char *filename, int from_tty) > int scratch_chan; > int flags; > volatile struct gdb_exception except; > + char *filename; > > target_preopen (from_tty); > - if (!filename) > + if (!arg) > { > if (core_bfd) > error (_("No core file specified. (Use `detach' " > @@ -296,7 +295,7 @@ core_open (char *filename, int from_tty) > error (_("No core file specified.")); > } > > - filename = tilde_expand (filename); > + filename = tilde_expand (arg); > if (!IS_ABSOLUTE_PATH (filename)) > { > temp = concat (current_directory, "/", > diff --git a/gdb/ctf.c b/gdb/ctf.c > index 84d0a48..df645c0 100644 > --- a/gdb/ctf.c > +++ b/gdb/ctf.c > @@ -904,7 +904,7 @@ ctf_destroy (void) > /* Open CTF trace data in DIRNAME. */ > > static void > -ctf_open_dir (char *dirname) > +ctf_open_dir (const char *dirname) > { > struct bt_iter_pos begin_pos; > struct bt_iter_pos *pos; > @@ -1127,7 +1127,7 @@ ctf_read_tp (struct uploaded_tp **uploaded_tps) > second packet which contains events on trace blocks. */ > > static void > -ctf_open (char *dirname, int from_tty) > +ctf_open (const char *dirname, int from_tty) > { > struct bt_ctf_event *event; > uint32_t event_id; > diff --git a/gdb/dbug-rom.c b/gdb/dbug-rom.c > index 4157f27..c775543 100644 > --- a/gdb/dbug-rom.c > +++ b/gdb/dbug-rom.c > @@ -32,8 +32,6 @@ > > #include "m68k-tdep.h" > > -static void dbug_open (char *args, int from_tty); > - > static void > dbug_supply_register (struct regcache *regcache, char *regname, > int regnamelen, char *val, int vallen) > @@ -155,7 +153,7 @@ init_dbug_cmds (void) > } /* init_debug_ops */ > > static void > -dbug_open (char *args, int from_tty) > +dbug_open (const char *args, int from_tty) > { > monitor_open (args, &dbug_cmds, from_tty); > } > diff --git a/gdb/dink32-rom.c b/gdb/dink32-rom.c > index 52d428d..9ab81ae 100644 > --- a/gdb/dink32-rom.c > +++ b/gdb/dink32-rom.c > @@ -26,8 +26,6 @@ > #include "inferior.h" > #include "regcache.h" > > -static void dink32_open (char *args, int from_tty); > - > static void > dink32_supply_register (struct regcache *regcache, char *regname, > int regnamelen, char *val, int vallen) > @@ -123,7 +121,7 @@ static char *dink32_inits[] = > static struct monitor_ops dink32_cmds; > > static void > -dink32_open (char *args, int from_tty) > +dink32_open (const char *args, int from_tty) > { > monitor_open (args, &dink32_cmds, from_tty); > } > diff --git a/gdb/exec.c b/gdb/exec.c > index e42ef20..98defbc 100644 > --- a/gdb/exec.c > +++ b/gdb/exec.c > @@ -79,7 +79,7 @@ show_write_files (struct ui_file *file, int from_tty, > > > static void > -exec_open (char *args, int from_tty) > +exec_open (const char *args, int from_tty) > { > target_preopen (from_tty); > exec_file_attach (args, from_tty); > diff --git a/gdb/inf-child.c b/gdb/inf-child.c > index 897e635..82a2781 100644 > --- a/gdb/inf-child.c > +++ b/gdb/inf-child.c > @@ -122,7 +122,7 @@ static int inf_child_explicitly_opened; > /* See inf-child.h. */ > > void > -inf_child_open_target (struct target_ops *target, char *arg, int from_tty) > +inf_child_open_target (struct target_ops *target, const char *arg, int from_tty) > { > target_preopen (from_tty); > push_target (target); > @@ -132,7 +132,7 @@ inf_child_open_target (struct target_ops *target, char *arg, int from_tty) > } > > static void > -inf_child_open (char *arg, int from_tty) > +inf_child_open (const char *arg, int from_tty) > { > inf_child_open_target (inf_child_ops, arg, from_tty); > } > diff --git a/gdb/inf-child.h b/gdb/inf-child.h > index b2692ca..163cab6 100644 > --- a/gdb/inf-child.h > +++ b/gdb/inf-child.h > @@ -34,7 +34,7 @@ extern void store_waitstatus (struct target_waitstatus *, int); > the target, in case it need to override to_open. */ > > extern void inf_child_open_target (struct target_ops *target, > - char *arg, int from_tty); > + const char *arg, int from_tty); > > /* To be called by the native target's to_mourn_inferior routine. */ > > diff --git a/gdb/m32r-rom.c b/gdb/m32r-rom.c > index 0ab252a..6b20cd1 100644 > --- a/gdb/m32r-rom.c > +++ b/gdb/m32r-rom.c > @@ -201,9 +201,6 @@ m32r_load_gen (struct target_ops *self, const char *filename, int from_tty) > generic_load (filename, from_tty); > } > > -static void m32r_open (char *args, int from_tty); > -static void mon2000_open (char *args, int from_tty); > - > /* This array of registers needs to match the indexes used by GDB. The > whole reason this exists is because the various ROM monitors use > different names than GDB does, and don't support all the registers > @@ -362,7 +359,7 @@ init_m32r_cmds (void) > } /* init_m32r_cmds */ > > static void > -m32r_open (char *args, int from_tty) > +m32r_open (const char *args, int from_tty) > { > monitor_open (args, &m32r_cmds, from_tty); > } > @@ -422,7 +419,7 @@ init_mon2000_cmds (void) > } /* init_mon2000_cmds */ > > static void > -mon2000_open (char *args, int from_tty) > +mon2000_open (const char *args, int from_tty) > { > monitor_open (args, &mon2000_cmds, from_tty); > } > diff --git a/gdb/microblaze-rom.c b/gdb/microblaze-rom.c > index 936865c..a64217d 100644 > --- a/gdb/microblaze-rom.c > +++ b/gdb/microblaze-rom.c > @@ -49,7 +49,7 @@ static char *picobug_regnames[] = { > > > static void > -picobug_open (char *args, int from_tty) > +picobug_open (const char *args, int from_tty) > { > monitor_open (args, &picobug_cmds, from_tty); > } > diff --git a/gdb/monitor.c b/gdb/monitor.c > index 61f0dff..788bca0 100644 > --- a/gdb/monitor.c > +++ b/gdb/monitor.c > @@ -713,7 +713,7 @@ compile_pattern (char *pattern, struct re_pattern_buffer *compiled_pattern, > for communication. */ > > void > -monitor_open (char *args, struct monitor_ops *mon_ops, int from_tty) > +monitor_open (const char *args, struct monitor_ops *mon_ops, int from_tty) > { > char *name; > char **p; > diff --git a/gdb/monitor.h b/gdb/monitor.h > index 07caf97..52521c8 100644 > --- a/gdb/monitor.h > +++ b/gdb/monitor.h > @@ -239,7 +239,8 @@ struct monitor_ops > > #define SREC_SIZE 160 > > -extern void monitor_open (char *args, struct monitor_ops *ops, int from_tty); > +extern void monitor_open (const char *args, struct monitor_ops *ops, > + int from_tty); > extern void monitor_close (struct target_ops *self); > extern char *monitor_supply_register (struct regcache *regcache, > int regno, char *valstr); > diff --git a/gdb/nto-procfs.c b/gdb/nto-procfs.c > index 728d6f3..ff8f2af 100644 > --- a/gdb/nto-procfs.c > +++ b/gdb/nto-procfs.c > @@ -106,7 +106,7 @@ procfs_is_nto_target (bfd *abfd) > will be a QNX node string, eg: "/net/some_node". If arg is not a > valid QNX node, we will default to local. */ > static void > -procfs_open_1 (struct target_ops *ops, char *arg, int from_tty) > +procfs_open_1 (struct target_ops *ops, const char *arg, int from_tty) > { > char *nodestr; > char *endstr; > @@ -1395,7 +1395,7 @@ static struct target_ops *nto_native_ops; > /* to_open implementation for "target procfs". */ > > static void > -procfs_open (char *arg, int from_tty) > +procfs_open (const char *arg, int from_tty) > { > procfs_open_1 (&nto_procfs_ops, arg, from_tty); > } > @@ -1403,7 +1403,7 @@ procfs_open (char *arg, int from_tty) > /* to_open implementation for "target native". */ > > static void > -procfs_native_open (char *arg, int from_tty) > +procfs_native_open (const char *arg, int from_tty) > { > procfs_open_1 (nto_native_ops, arg, from_tty); > } > diff --git a/gdb/ppcbug-rom.c b/gdb/ppcbug-rom.c > index 3038713..f1740d1 100644 > --- a/gdb/ppcbug-rom.c > +++ b/gdb/ppcbug-rom.c > @@ -184,13 +184,13 @@ static struct monitor_ops ppcbug_cmds0; > static struct monitor_ops ppcbug_cmds1; > > static void > -ppcbug_open0 (char *args, int from_tty) > +ppcbug_open0 (const char *args, int from_tty) > { > monitor_open (args, &ppcbug_cmds0, from_tty); > } > > static void > -ppcbug_open1 (char *args, int from_tty) > +ppcbug_open1 (const char *args, int from_tty) > { > monitor_open (args, &ppcbug_cmds1, from_tty); > } > diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c > index 5ba4e06..3601e13 100644 > --- a/gdb/record-btrace.c > +++ b/gdb/record-btrace.c > @@ -188,7 +188,7 @@ record_btrace_handle_async_inferior_event (gdb_client_data data) > /* The to_open method of target record-btrace. */ > > static void > -record_btrace_open (char *args, int from_tty) > +record_btrace_open (const char *args, int from_tty) > { > struct cleanup *disable_chain; > struct thread_info *tp; > diff --git a/gdb/record-full.c b/gdb/record-full.c > index fcd7790..119361f 100644 > --- a/gdb/record-full.c > +++ b/gdb/record-full.c > @@ -792,7 +792,7 @@ record_full_async_inferior_event_handler (gdb_client_data data) > /* Open the process record target. */ > > static void > -record_full_core_open_1 (char *name, int from_tty) > +record_full_core_open_1 (const char *name, int from_tty) > { > struct regcache *regcache = get_current_regcache (); > int regnum = gdbarch_num_regs (get_regcache_arch (regcache)); > @@ -822,7 +822,7 @@ record_full_core_open_1 (char *name, int from_tty) > /* "to_open" target method for 'live' processes. */ > > static void > -record_full_open_1 (char *name, int from_tty) > +record_full_open_1 (const char *name, int from_tty) > { > if (record_debug) > fprintf_unfiltered (gdb_stdlog, "Process record: record_full_open\n"); > @@ -846,7 +846,7 @@ static void record_full_init_record_breakpoints (void); > /* "to_open" target method. Open the process record target. */ > > static void > -record_full_open (char *name, int from_tty) > +record_full_open (const char *name, int from_tty) > { > struct target_ops *t; > > diff --git a/gdb/remote-m32r-sdi.c b/gdb/remote-m32r-sdi.c > index 37efaec..f3d5879 100644 > --- a/gdb/remote-m32r-sdi.c > +++ b/gdb/remote-m32r-sdi.c > @@ -359,7 +359,7 @@ m32r_create_inferior (struct target_ops *ops, char *execfile, > NAME is the filename used for communication. */ > > static void > -m32r_open (char *args, int from_tty) > +m32r_open (const char *args, int from_tty) > { > struct hostent *host_ent; > struct sockaddr_in server_addr; > diff --git a/gdb/remote-mips.c b/gdb/remote-mips.c > index 277621d..236f3cd 100644 > --- a/gdb/remote-mips.c > +++ b/gdb/remote-mips.c > @@ -77,14 +77,6 @@ static ULONGEST mips_request (int cmd, ULONGEST addr, ULONGEST data, > > static void mips_initialize (void); > > -static void mips_open (char *name, int from_tty); > - > -static void pmon_open (char *name, int from_tty); > - > -static void ddb_open (char *name, int from_tty); > - > -static void lsi_open (char *name, int from_tty); > - > static void mips_close (struct target_ops *self); > > static int mips_map_regno (struct gdbarch *, int); > @@ -1541,7 +1533,7 @@ mips_initialize (void) > /* Open a connection to the remote board. */ > > static void > -common_open (struct target_ops *ops, char *name, int from_tty, > +common_open (struct target_ops *ops, const char *name, int from_tty, > enum mips_monitor_type new_monitor, > const char *new_monitor_prompt) > { > @@ -1669,7 +1661,7 @@ seen from the board via TFTP, specify that name as the third parameter.\n")); > /* Open a connection to an IDT board. */ > > static void > -mips_open (char *name, int from_tty) > +mips_open (const char *name, int from_tty) > { > const char *monitor_prompt = NULL; > if (gdbarch_bfd_arch_info (target_gdbarch ()) != NULL > @@ -1694,7 +1686,7 @@ mips_open (char *name, int from_tty) > /* Open a connection to a PMON board. */ > > static void > -pmon_open (char *name, int from_tty) > +pmon_open (const char *name, int from_tty) > { > common_open (&pmon_ops, name, from_tty, MON_PMON, "PMON> "); > } > @@ -1702,7 +1694,7 @@ pmon_open (char *name, int from_tty) > /* Open a connection to a DDB board. */ > > static void > -ddb_open (char *name, int from_tty) > +ddb_open (const char *name, int from_tty) > { > common_open (&ddb_ops, name, from_tty, MON_DDB, "NEC010>"); > } > @@ -1710,7 +1702,7 @@ ddb_open (char *name, int from_tty) > /* Open a connection to a rockhopper board. */ > > static void > -rockhopper_open (char *name, int from_tty) > +rockhopper_open (const char *name, int from_tty) > { > common_open (&rockhopper_ops, name, from_tty, MON_ROCKHOPPER, "NEC01>"); > } > @@ -1718,7 +1710,7 @@ rockhopper_open (char *name, int from_tty) > /* Open a connection to an LSI board. */ > > static void > -lsi_open (char *name, int from_tty) > +lsi_open (const char *name, int from_tty) > { > int i; > > diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c > index 4097372..ff7bf3a 100644 > --- a/gdb/remote-sim.c > +++ b/gdb/remote-sim.c > @@ -667,7 +667,7 @@ gdbsim_create_inferior (struct target_ops *target, char *exec_file, char *args, > /* Called when selecting the simulator. E.g. (gdb) target sim name. */ > > static void > -gdbsim_open (char *args, int from_tty) > +gdbsim_open (const char *args, int from_tty) > { > int len; > char *arg_buf; > diff --git a/gdb/remote.c b/gdb/remote.c > index 76efefa..e3e56f3 100644 > --- a/gdb/remote.c > +++ b/gdb/remote.c > @@ -102,11 +102,8 @@ static void remote_files_info (struct target_ops *ignore); > static void remote_prepare_to_store (struct target_ops *self, > struct regcache *regcache); > > -static void remote_open (char *name, int from_tty); > - > -static void extended_remote_open (char *name, int from_tty); > - > -static void remote_open_1 (char *, int, struct target_ops *, int extended_p); > +static void remote_open_1 (const char *, int, struct target_ops *, > + int extended_p); > > static void remote_close (struct target_ops *self); > > @@ -3619,7 +3616,7 @@ remote_start_remote (int from_tty, struct target_ops *target, int extended_p) > NAME is the filename used for communication. */ > > static void > -remote_open (char *name, int from_tty) > +remote_open (const char *name, int from_tty) > { > remote_open_1 (name, from_tty, &remote_ops, 0); > } > @@ -3628,7 +3625,7 @@ remote_open (char *name, int from_tty) > remote gdb protocol. NAME is the filename used for communication. */ > > static void > -extended_remote_open (char *name, int from_tty) > +extended_remote_open (const char *name, int from_tty) > { > remote_open_1 (name, from_tty, &extended_remote_ops, 1 /*extended_p */); > } > @@ -3727,7 +3724,7 @@ remote_check_symbols (void) > } > > static struct serial * > -remote_serial_open (char *name) > +remote_serial_open (const char *name) > { > static int udp_warning = 0; > > @@ -4128,7 +4125,7 @@ remote_unpush_target (void) > } > > static void > -remote_open_1 (char *name, int from_tty, > +remote_open_1 (const char *name, int from_tty, > struct target_ops *target, int extended_p) > { > struct remote_state *rs = get_remote_state (); > diff --git a/gdb/target.h b/gdb/target.h > index 92572ff..8ff358e 100644 > --- a/gdb/target.h > +++ b/gdb/target.h > @@ -405,7 +405,7 @@ struct target_ops > command, and (if successful) pushes a new target onto the > stack. Targets should supply this routine, if only to provide > an error message. */ > - void (*to_open) (char *, int); > + void (*to_open) (const char *, int); > /* Old targets with a static target vector provide "to_close". > New re-entrant targets provide "to_xclose" and that is expected > to xfree everything (including the "struct target_ops"). */ > diff --git a/gdb/tracefile-tfile.c b/gdb/tracefile-tfile.c > index 37dc691..5ba1b15 100644 > --- a/gdb/tracefile-tfile.c > +++ b/gdb/tracefile-tfile.c > @@ -376,7 +376,7 @@ tfile_read (gdb_byte *readbuf, int size) > } > > static void > -tfile_open (char *filename, int from_tty) > +tfile_open (const char *arg, int from_tty) > { > volatile struct gdb_exception ex; > char *temp; > @@ -390,12 +390,13 @@ tfile_open (char *filename, int from_tty) > struct trace_status *ts; > struct uploaded_tp *uploaded_tps = NULL; > struct uploaded_tsv *uploaded_tsvs = NULL; > + char *filename; > > target_preopen (from_tty); > - if (!filename) > + if (!arg) > error (_("No trace file specified.")); > > - filename = tilde_expand (filename); > + filename = tilde_expand (arg); > if (!IS_ABSOLUTE_PATH(filename)) > { > temp = concat (current_directory, "/", filename, (char *) NULL); >