From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tak Ota To: cygwin@cygwin.com, cgf@redhat.com Cc: gdb@sources.redhat.com Subject: Re: gdb run < file Date: Sat, 30 Jun 2001 22:20:00 -0000 Message-id: <20010630.222024.57970718.Takaaki.Ota@am.sony.com> References: <1438-Sat30Jun2001093330+0300-eliz@is.elta.co.il> <20010630132556.E12695@redhat.com> <20010630.172314.42414222.Takaaki.Ota@am.sony.com> X-SW-Source: 2001-06/msg00258.html This is much simpler and cleaner than the previous attempt. And it is the *CORRECT* implementation from UNIX point of view. The existence of "SHELL" environment variable does not necessarily guaranty that it is usable for this purpose. This needs to be improved. -Tak *** win32-nat.org.c Wed Apr 18 13:27:11 2001 --- win32-nat.c Sat Jun 30 21:59:29 2001 *************** *** 1084,1090 **** static void child_create_inferior (char *exec_file, char *allargs, char **env) { ! char real_path[MAXPATHLEN]; char *winenv; char *temp; int envlen; --- 1084,1090 ---- static void child_create_inferior (char *exec_file, char *allargs, char **env) { ! char *shell; char *winenv; char *temp; int envlen; *************** *** 1101,1108 **** memset (&si, 0, sizeof (si)); si.cb = sizeof (si); - cygwin_conv_to_win32_path (exec_file, real_path); - flags = DEBUG_ONLY_THIS_PROCESS; if (new_group) --- 1101,1106 ---- *************** *** 1111,1122 **** if (new_console) flags |= CREATE_NEW_CONSOLE; ! args = alloca (strlen (real_path) + strlen (allargs) + 2); ! ! strcpy (args, real_path); ! ! strcat (args, " "); ! strcat (args, allargs); /* Prepare the environment vars for CreateProcess. */ { --- 1109,1132 ---- if (new_console) flags |= CREATE_NEW_CONSOLE; ! shell = getenv ("SHELL"); ! if (shell) ! { ! char *exec_format = "%s -c 'exec %s %s'"; ! ! args = alloca (strlen (exec_format) + strlen (shell) + strlen (exec_file) + strlen (allargs)); ! sprintf(args, exec_format, shell, exec_file, allargs); ! } ! else ! { ! char real_path[MAXPATHLEN]; ! ! cygwin_conv_to_win32_path (exec_file, real_path); ! args = alloca (strlen (real_path) + strlen (allargs) + 2); ! strcpy (args, real_path); ! strcat (args, " "); ! strcat (args, allargs); ! } /* Prepare the environment vars for CreateProcess. */ {