Skip to content

Commit 65364c9

Browse files
Michail ChatzipanagiotouMichail Chatzipanagiotou
Michail Chatzipanagiotou
authored and
Michail Chatzipanagiotou
committed
fixed leaks, need norminette
1 parent 32f70d4 commit 65364c9

10 files changed

+96
-23
lines changed

commands.c

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2022/02/02 14:49:23 by mchatzip ### ########.fr */
9+
/* Updated: 2022/02/05 21:19:11 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -21,9 +21,18 @@ void execexit(char *b, char *buff, char *name, t_nums *n)
2121
args = ft_split(buff, ' ');
2222
i = 0;
2323
num = 0;
24+
if (!args[1])
25+
{
26+
free(args[0]);
27+
free(args);
28+
exit(0);
29+
}
2430
if (args[2])
2531
{
2632
write(2, "exit: too many arguments\n", 25);
33+
while (args[i])
34+
free(args[i++]);
35+
free(args);
2736
return ;
2837
}
2938
while (args[1][i])
@@ -34,9 +43,15 @@ void execexit(char *b, char *buff, char *name, t_nums *n)
3443
printf
3544
("exit: argument: '%s' is not numeric or exceeds scope\n", args[1]);
3645
exitall(b, buff, name, n);
46+
free(args[0]);
47+
i = 0;
48+
while (args[i])
49+
free(args[i++]);
3750
free(args);
3851
exit(255);
3952
}
53+
free(args[0]);
54+
free(args[1]);
4055
free(args);
4156
exit (ft_atoi(args[1]));
4257
}

commands2.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2022/02/01 16:12:34 by mchatzip ### ########.fr */
9+
/* Updated: 2022/02/05 19:54:38 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -16,11 +16,13 @@ void execexport(char *b)
1616
{
1717
int i;
1818
int c;
19+
char *dest;
1920
char **s;
2021

2122
b = xportnmskip(b);
2223
i = 0;
2324
c = -1;
25+
dest = malloc(1000);
2426
if (echoerrcheck(b))
2527
return ;
2628
s = processinput(b);
@@ -31,12 +33,17 @@ void execexport(char *b)
3133
{
3234
if (g_env[i])
3335
free(g_env[i]);
34-
evalquotes(exportout(s[c]));
35-
g_env[i] = ft_strdup(exportout(s[c]));
36+
evalquotes(exportout2(dest, s[c]));
37+
ft_bzero(dest, 1000);
38+
g_env[i] = ft_strdup(exportout2(dest, s[c]));
3639
}
3740
i = 0;
3841
}
42+
i = -1;
43+
while (s[++i])
44+
free(s[i]);
3945
free(s);
46+
free(dest);
4047
cleartrash(g_env);
4148
}
4249

@@ -59,6 +66,8 @@ void execunset(char *b)
5966
ft_bzero(g_env[i], ft_strlen(g_env[i]));
6067
i = -1;
6168
}
69+
while (s[++i])
70+
free(s[i]);
6271
free(s);
6372
}
6473

exportutils.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2022/02/05 18:33:21 by mchatzip ### ########.fr */
9+
/* Updated: 2022/02/05 21:01:59 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -87,7 +87,7 @@ char *exportout(char *b)
8787
{
8888
char *ret;
8989

90-
ret = malloc(1000);
90+
ret = ft_calloc(1000, 1000);
9191
if (echoerrcheck(b))
9292
return ("");
9393
while (*b == ' ')
@@ -96,3 +96,14 @@ char *exportout(char *b)
9696
b = handlescharsxp(b, ret);
9797
return (ret);
9898
}
99+
100+
char *exportout2(char *dest, char *b)
101+
{
102+
if (echoerrcheck(b))
103+
return ("");
104+
while (*b == ' ')
105+
b++;
106+
while (*b)
107+
b = handlescharsxp(b, dest);
108+
return (dest);
109+
}

exportutils3.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,21 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2022/01/25 13:23:43 by mchatzip ### ########.fr */
9+
/* Updated: 2022/02/05 21:01:36 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "minishell.h"
1414

1515
int incrementi(int i, char *s)
1616
{
17-
while (g_env[i] && (!namecmp(g_env[i], exportout(s)) || !g_env[i][0]))
17+
char *dest;
18+
19+
dest = malloc(1000);
20+
while (g_env[i]
21+
&& (!namecmp(g_env[i], exportout2(dest, s)) || !g_env[i][0]))
1822
i++;
23+
free(dest);
1924
return (i);
2025
}
2126

minishell.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2022/02/01 18:20:06 by mchatzip ### ########.fr */
9+
/* Updated: 2022/02/05 20:49:35 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -103,8 +103,7 @@ int main(int argc, char **argv, char **envp)
103103
}
104104
if (!b)
105105
{
106-
free(nums);
107-
free(g_env);
106+
freeenvnstruct(nums);
108107
return (0);
109108
}
110109
}

minishell.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:15:48 by mchatzip #+# #+# */
9-
/* Updated: 2022/02/02 14:20:04 by mchatzip ### ########.fr */
9+
/* Updated: 2022/02/05 21:25:18 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -37,7 +37,6 @@ typedef struct s_nums
3737
int print;
3838
bool hyphen;
3939
char *envbuff;
40-
char **pr;
4140
} t_nums;
4241

4342
void execexit(char *b, char *buff, char *name, t_nums *n);
@@ -105,5 +104,7 @@ char *handlehyphen(char *b, char *ret);
105104
int handlerightredir(char *b, int i);
106105
int handleleftredir(char *b, int i);
107106
void exitall(char *b, char *buff, char *name, t_nums *n);
107+
void freeenvnstruct(t_nums *n);
108+
char *exportout2(char *dest, char *b);
108109

109110
#endif

pipenredirutils.c

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2022/02/01 17:21:25 by mchatzip ### ########.fr */
9+
/* Updated: 2022/02/05 21:25:54 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -63,29 +63,40 @@ void initparse(char *b, t_nums *n)
6363
{
6464
char *buff;
6565
char *name;
66+
int i;
67+
char **pr;
6668

69+
i = -1;
6770
if (echoerrcheck(b))
6871
return ;
6972
name = parsecmdname(b);
70-
n->pr = checkpipesnredirs(b);
71-
if (!*n->pr)
73+
pr = checkpipesnredirs(b);
74+
if (!*pr)
7275
{
73-
free(n->pr);
76+
while (++i < 1000)
77+
free(pr[i]);
78+
free(pr);
79+
free(name);
7480
return ;
7581
}
76-
if (!n->pr[1])
82+
if (!pr[1])
7783
{
7884
if (checkstrayops(b))
7985
{
80-
free(n->pr);
86+
while (++i < 1000)
87+
free(pr[i]);
88+
free(pr);
89+
free(name);
8190
return ;
8291
}
8392
buff = exportout(b);
8493
parseargs(b, buff, name, n);
8594
n->hyphen = 1;
86-
free3(n->pr, buff, name);
8795
}
8896
//else to be added for pipes/redirections handling
97+
while (pr[++i])
98+
free(pr[i]);
99+
free3(pr, buff, name);
89100
}
90101

91102
// for (int k = 0; ret[k]; k++)

utils4.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2022/01/31 12:24:04 by mchatzip ### ########.fr */
9+
/* Updated: 2022/02/05 21:42:11 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -37,6 +37,10 @@ char **processinput(char *b)
3737
while (*b == ' ')
3838
b++;
3939
s = xportsplit(b);
40+
if (!*s)
41+
while (g_env[++i])
42+
printf("declare -x %s\n", g_env[i]);
43+
i = -1;
4044
while (s[++i])
4145
{
4246
if (isnumeric(s[i]))
@@ -89,6 +93,18 @@ int isnumeric(char *b)
8993
return (0);
9094
}
9195

96+
void freeenvnstruct(t_nums *n)
97+
{
98+
int i;
99+
100+
i = -1;
101+
while (g_env[++i])
102+
free(g_env[i]);
103+
free (g_env[998]);
104+
free(g_env);
105+
free(n);
106+
}
107+
92108
// g_env = malloc(1000 * sizeof(char *));
93109
// g_env[0] = ft_strjoin("PATH=", getenv("PATH"));
94110
// g_env[1] = ft_strjoin("PWD=", getenv("PWD"));

utils7.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2022/02/01 16:16:54 by mchatzip ### ########.fr */
9+
/* Updated: 2022/02/05 20:48:48 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

utils8.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2022/02/02 14:19:47 by mchatzip ### ########.fr */
9+
/* Updated: 2022/02/05 21:26:54 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -99,6 +99,12 @@ char *handlehyphen(char *b, char *ret)
9999

100100
void exitall(char *b, char *buff, char *name, t_nums *n)
101101
{
102+
int i;
103+
104+
i = -1;
105+
while (g_env[++i])
106+
free(g_env[i]);
107+
free(g_env[998]);
102108
free(g_env);
103109
free(b);
104110
free(buff);

0 commit comments

Comments
 (0)