summary refs log tree commit diff
path: root/progs
diff options
context:
space:
mode:
Diffstat (limited to 'progs')
-rw-r--r--progs/shel/shel.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/progs/shel/shel.c b/progs/shel/shel.c
index d0f4dae..a9eeeba 100644
--- a/progs/shel/shel.c
+++ b/progs/shel/shel.c
@@ -65,24 +65,26 @@ void joinPath(char *result, const char *base, const char *rel) {
     strcat(result, rel);
 }
 
-const char *get_env_var(const char *name, char *const *env) {
-    size_t len = strlen(name);
-
-    for (char *const *e = env; *e; e++) { // loop over every env
-        if (strncmp(*e, name, len) == 0 && (*e)[len] == '=') { //if starts with name
-            return *e + len + 1;  // return shit after =
-        }
-    }
-    return NULL;
-}
-
 int main() {
     char input[255] = {0};
     char command[128] = {0};
     char *argv[32] = {0};
-    char *env[32] = {"PATH=/bin"};
     char path[128] = "/";
 
+    char termpcap[512] = "vt102|smolsh|dec vt102:\
+    :do=^J:co#80:li#24:cl=50\\E[;H\\E[2J:\
+    :le=^H:bs:cm=5\\E[%i%d;%dH:nd=2\\E[C:up=2\\E[A:\
+    :ce=3\\E[K:cd=50\\E[J:so=2\\E[7m:se=2\\E[m:us=2\\E[4m:ue=2\\E[m:\
+    :md=2\\E[1m:mr=2\\E[7m:mb=2\\E[5m:me=2\\E[m:is=\\E[1;24r\\E[24;1H:\
+    :rs=\\E>\\E[?3l\\E[?4l\\E[?5l\\E[?7h\\E[?8h:ks=\\E[?1h\\E=:ke=\\E[?1l\\E>:\
+    :ku=\\EOA:kd=\\EOB:kr=\\EOC:kl=\\EOD:kb=^H:\
+    :ho=\\E[H:k1=\\EOP:k2=\\EOQ:k3=\\EOR:k4=\\EOS:pt:sr=5\\EM:vt#3:\
+    :sc=\\E7:rc=\\E8:cs=\\E[%i%d;%dr:vs=\\E[?7l:ve=\\E[?7h:\
+    :mi:al=\\E[L:dc=\\E[P:dl=\\E[M:ei=\\E[4l:im=\\E[4h:";
+
+    setenv("TERMCAP", termpcap, 1);
+    setenv("PATH", "/bin", 0);
+
     while (!false) {
         memset(input, 0, sizeof(input));
         memset(command, 0, sizeof(command));
@@ -119,12 +121,12 @@ int main() {
         chdir(path);
         __pid_t forkResult = fork();
         if (forkResult == 0) {
-            // algorithm from old shel since i made it on my own
-            const char* pathV = get_env_var("PATH", env);
+            char* pathV = getenv("PATH");
             struct stat path_stat;
             if (stat(command, &path_stat) == 0 && access(command, X_OK)){
                 execve(command, argv, 0);
             } else {
+                // algorithm from old shel since i made it on my own
                 bool found = false;
                 char currPath[32] = {0};
                 int i = 0;