Sat Feb 10 04:18:48 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>

* posix/execvp.c: If execv fails with ENOEXEC, run the shell on
	the file.

Fri Feb  9 11:46:45 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* time/Makefile (CFLAGS-zdump.c, CFLAGS-zic.c, CFLAGS-ialloc.c,
	CFLAGS-scheck.c): Use -DNOID instead of -Wno-unused.

	* hurd/Makefile (user-interfaces): Added hurd/tioctl.
This commit is contained in:
Roland McGrath 1996-02-10 10:00:27 +00:00
parent 56f778c958
commit 6a032d8158
6 changed files with 72 additions and 15 deletions

View File

@ -1,3 +1,15 @@
Sat Feb 10 04:18:48 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* posix/execvp.c: If execv fails with ENOEXEC, run the shell on
the file.
Fri Feb 9 11:46:45 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* time/Makefile (CFLAGS-zdump.c, CFLAGS-zic.c, CFLAGS-ialloc.c,
CFLAGS-scheck.c): Use -DNOID instead of -Wno-unused.
* hurd/Makefile (user-interfaces): Added hurd/tioctl.
Thu Feb 8 18:55:27 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu> Thu Feb 8 18:55:27 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* hurd/hurdioctl.c (tiocsctty): Set the terminal's pgrp to our own. * hurd/hurdioctl.c (tiocsctty): Set the terminal's pgrp to our own.

5
db/.cvsignore Normal file
View File

@ -0,0 +1,5 @@
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo

View File

@ -37,7 +37,7 @@ user-interfaces := $(addprefix hurd/,\
process process_request \ process process_request \
msg msg_reply msg_request \ msg msg_reply msg_request \
exec exec_startup crash interrupt \ exec exec_startup crash interrupt \
fs fsys io term socket ifsock) fs fsys io term tioctl socket ifsock)
server-interfaces := hurd/msg server-interfaces := hurd/msg
routines = hurdstartup hurdinit \ routines = hurdstartup hurdinit \

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1992, 1995 Free Software Foundation, Inc. /* Copyright (C) 1991, 1992, 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -21,6 +21,7 @@ Cambridge, MA 02139, USA. */
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <errno.h> #include <errno.h>
#include <paths.h>
/* Execute FILE, searching in the `PATH' environment variable if it contains /* Execute FILE, searching in the `PATH' environment variable if it contains
no slashes, with arguments ARGV and environment from `environ'. */ no slashes, with arguments ARGV and environment from `environ'. */
@ -29,9 +30,34 @@ execvp (file, argv)
const char *file; const char *file;
char *const argv[]; char *const argv[];
{ {
void execute (const char *file, char *const argv[])
{
execv (file, argv);
if (errno == ENOEXEC)
{
/* The file is accessible but it is not an executable file.
Invoke the shell to interpret it as a script. */
int argc;
char **new_argv;
/* Count the arguments. */
for (argc = 0; argv[argc++];);
/* Construct an argument list for the shell. */
new_argv = __alloca ((argc + 1) * sizeof (char *));
for (new_argv[0] = _PATH_BSHELL; argc > 0; --argc)
new_argv[argc] = argv[argc - 1];
/* Execute the shell. */
execv (new_argv[0], new_argv);
}
}
if (strchr (file, '/') != NULL) if (strchr (file, '/') != NULL)
/* Don't search when it contains a slash. */ /* Don't search when it contains a slash. */
return execv (file, argv); execute (file, argv);
else else
{ {
char *path, *p, *name; char *path, *p, *name;
@ -72,15 +98,24 @@ execvp (file, argv)
} }
/* Try to execute this name. If it works, execv will not return. */ /* Try to execute this name. If it works, execv will not return. */
execv (name, argv); execute (name, argv);
if (errno != ENOENT && errno != EACCES)
switch (errno)
{
case ENOENT:
case EACCES:
/* Those errors indicate the file is missing or not executable /* Those errors indicate the file is missing or not executable
by us, in which case we want to just try the next path by us, in which case we want to just try the next path
directory. Some other error means we found an executable directory. */
file, but something went wrong executing it; return the break;
error to our caller. */
default:
/* Some other error means we found an executable file, but
something went wrong executing it; return the error to our
caller. */
return -1; return -1;
} }
}
while (*p++ != '\0'); while (*p++ != '\0');
} }

View File

@ -125,7 +125,7 @@ tz-cc = $(COMPILE.c) $(+gcc-nowarn) \
-DTZDEFRULES='"$(posixrules-file)"' \ -DTZDEFRULES='"$(posixrules-file)"' \
$< $(OUTPUT_OPTION) $< $(OUTPUT_OPTION)
CFLAGS-zdump.c = -Wno-strict-prototypes CFLAGS-zdump.c = -Wno-strict-prototypes -DNOID
CFLAGS-zic.c = -Wno-strict-prototypes CFLAGS-zic.c = -Wno-strict-prototypes -DNOID
CFLAGS-ialloc.c = -Wno-strict-prototypes -Wno-unused CFLAGS-ialloc.c = -Wno-strict-prototypes -DNOID
CFLAGS-scheck.c = -Wno-strict-prototypes -Wno-unused CFLAGS-scheck.c = -Wno-strict-prototypes -DNOID

5
wcsmbs/.cvsignore Normal file
View File

@ -0,0 +1,5 @@
*.gz *.Z *.tar *.tgz
=*
TODO COPYING* AUTHORS copyr-* copying.*
glibc-*
distinfo