summaryrefslogtreecommitdiffstats
path: root/libmisc/shell.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-26 16:18:36 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-26 16:18:36 +0000
commit6c3ea4f47ea280811a7fe53a22f7832e4533c9ec (patch)
tree3d7ed5da23b5dbf6f9e450dfb61642832249c31e /libmisc/shell.c
parentAdding upstream version 1:4.13+dfsg1. (diff)
downloadshadow-upstream.tar.xz
shadow-upstream.zip
Adding upstream version 1:4.15.2.upstream/1%4.15.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'libmisc/shell.c')
-rw-r--r--libmisc/shell.c80
1 files changed, 0 insertions, 80 deletions
diff --git a/libmisc/shell.c b/libmisc/shell.c
deleted file mode 100644
index 7c67500..0000000
--- a/libmisc/shell.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh
- * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz
- * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko
- * SPDX-FileCopyrightText: 2009 , Nicolas François
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <config.h>
-
-#ident "$Id$"
-
-#include <stdio.h>
-#include <errno.h>
-#include "prototypes.h"
-#include "defines.h"
-extern char **newenvp;
-extern size_t newenvc;
-
-/*
- * shell - execute the named program
- *
- * shell begins by trying to figure out what argv[0] is going to
- * be for the named process. The user may pass in that argument,
- * or it will be the last pathname component of the file with a
- * '-' prepended.
- * Then, it executes the named file.
- */
-
-int shell (const char *file, /*@null@*/const char *arg, char *const envp[])
-{
- char arg0[1024];
- int err;
-
- if (file == (char *) 0) {
- errno = EINVAL;
- return errno;
- }
-
- /*
- * The argv[0]'th entry is usually the path name, but
- * for various reasons the invoker may want to override
- * that. So, we determine the 0'th entry only if they
- * don't want to tell us what it is themselves.
- */
- if (arg == (char *) 0) {
- (void) snprintf (arg0, sizeof arg0, "-%s", Basename (file));
- arg0[sizeof arg0 - 1] = '\0';
- arg = arg0;
- }
-
- /*
- * First we try the direct approach. The system should be
- * able to figure out what we are up to without too much
- * grief.
- */
- (void) execle (file, arg, (char *) 0, envp);
- err = errno;
-
- if (access (file, R_OK|X_OK) == 0) {
- /*
- * Assume this is a shell script (with no shebang).
- * Interpret it with /bin/sh
- */
- (void) execle (SHELL, "sh", "-", file, (char *)0, envp);
- err = errno;
- }
-
- /*
- * Obviously something is really wrong - I can't figure out
- * how to execute this stupid shell, so I might as well give
- * up in disgust ...
- */
- (void) snprintf (arg0, sizeof arg0, _("Cannot execute %s"), file);
- errno = err;
- perror (arg0);
- return err;
-}
-