ESH

Executive Shell
git clone http://git.omkov.net/ESH
Log | Tree | Refs | README | Download

AuthorJamozed <[email protected]>
Date2021-03-31 12:16:08
Commit72d349955dd7a76f549677076d0e6496d21b58cc
Parent0f6aa82e55e57d88314704fb7c1ce079b8176a7a

Update formatting in bltn and exec files

Diffstat

M src/bltn.c | 9 ++++-----
M src/bltn.h | 10 +++++-----
M src/exec.c | 49 +++++++++++++++++++++----------------------------
M src/exec.h | 6 +++---

4 files changed, 33 insertions, 41 deletions

diff --git a/src/bltn.c b/src/bltn.c
index 7624fd0..7ff7449 100644
--- a/src/bltn.c
+++ b/src/bltn.c
@@ -48,9 +48,9 @@ static int bltn_false(char *av[]) { (void)(av); return 1; }
 static int bltn_help(char *av[]);
 static int bltn_true(char *av[]) { (void)(av); return 0; }
 
-static int getret(char *argv[]) { printf("%d\n", _ret); return 0; }
+static int getret(char *av[]) { printf("%d\n", _ret); return 0; }
 
-bltn_t bltns[] = {
+struct bltn bltns[] = {
 	{"alias", &bltn_alias},
 	{"cd",    &bltn_cd},
 	{"eval",  &bltn_eval},
@@ -63,7 +63,6 @@ bltn_t bltns[] = {
 	{NULL, NULL}
 };
 
-static int bltn_help(char *argv[]) {
-	puts("OSH, version " PROJECT_VERSION);
-	return 0;
+static int bltn_help(char *av[]) { (void)(av);
+	puts("OSH, version " PROJECT_VERSION); return 0;
 }
diff --git a/src/bltn.h b/src/bltn.h
index 9b7c5f9..5c78394 100644
--- a/src/bltn.h
+++ b/src/bltn.h
@@ -30,10 +30,10 @@ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
 */
 
-#ifndef OSH_BLTN_H_XQ5D812A
-#define OSH_BLTN_H_XQ5D812A
+#ifndef OMKOV_OSH_BLTN_H_XQ5D812A
+#define OMKOV_OSH_BLTN_H_XQ5D812A
 
-typedef struct { const char *str; int (*fun)(char *[]); } bltn_t;
-extern bltn_t bltns[];
+struct bltn { const char *s; int (*f)(char *[]); };
+extern struct bltn bltns[];
 
-#endif // OSH_BLTN_H_XQ5D812A
+#endif // OMKOV_OSH_BLTN_H_XQ5D812A
diff --git a/src/exec.c b/src/exec.c
index 3817465..0ddea20 100644
--- a/src/exec.c
+++ b/src/exec.c
@@ -33,6 +33,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
 #include "bltn.h"
 #include "exec.h"
 
+#include "lib/error.h"
+
 #include <sys/wait.h>
 #include <unistd.h>
 
@@ -42,42 +44,33 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
 #include <stdlib.h>
 #include <string.h>
 
-static int launch(char *argv[]);
-static void launcherror(char *s);
+static int launch(char *av[]);
 
-/*
-	Execute a command
-*/
-int execute(char *argv[]) {
-	if (!argv[0]) { return _ret; }
-	for (bltn_t *b = bltns; b->str; ++b) {
-		if (strcmp(argv[0], b->str) == 0) { return b->fun(argv); }
-	} return launch(argv);
+/* Execute a command */
+int execute(char *av[]) {
+	if (!av[0]) { return _ret; }
+	
+	for (struct bltn *b = bltns; b->s; ++b) {
+		if (strcmp(av[0], b->s) == 0) { return b->f(av); }
+	}
+	
+	return launch(av);
 }
 
-/*
-	Fork and execute an executable
-*/
-static int launch(char *argv[]) {
+/* Fork and execute an executable */
+static int launch(char *av[]) {
 	pid_t pid, wpid; int status;
 
-	pid = fork();
-	if (pid == 0) {
+	if ((pid = fork()) == 0) {
 		signal(SIGINT, SIG_DFL);
-		if (execvp(argv[0], argv) == -1) {
-			if (errno == ENOENT) { launcherror(argv[0]); }
-			else { perror(argv[0]); } exit(1);
+		
+		if (execvp(av[0], av) == -1) {
+			if (errno == ENOENT) { warn("%s: Command not found", av[0]); }
+			else { perror(av[0]); } exit(1);
 		}
 	}
-	else if (pid == -1) { puts("test"); perror(argv[0]); }
+	else if (pid == -1) { perror(av[0]); }
 	else { waitpid(pid, &status, 0); }
+	
 	return WEXITSTATUS(status);
 }
-
-static void launcherror(char *s) {
-	for (char *p = s; *p; ++p) {
-		if (*p == '\n') { fputs("\\n", stderr); }
-		else { fputc(*p, stderr); }
-	} fputs(": Command not found\n", stderr);
-	return;
-}
diff --git a/src/exec.h b/src/exec.h
index 8d9fa61..e11043e 100644
--- a/src/exec.h
+++ b/src/exec.h
@@ -30,11 +30,11 @@ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
 */
 
-#ifndef OSH_EXEC_H_VI5E8LVV
-#define OSH_EXEC_H_VI5E8LVV
+#ifndef OMKOV_OSH_EXEC_H_VI5E8LVV
+#define OMKOV_OSH_EXEC_H_VI5E8LVV
 
 extern int _loop, _ret;
 
 extern int execute(char *argv[]);
 
-#endif // OSH_EXEC_H_VI5E8LVV
+#endif // OMKOV_OSH_EXEC_H_VI5E8LVV