Skip to content

Commit a12c83f

Browse files
author
Michail Chatzipanagiotou
committed
added 0, signals mostly done
1 parent c2e2280 commit a12c83f

12 files changed

+78
-77
lines changed

exporttmpfile

-3 Bytes
Binary file not shown.

exportutils2.c

Lines changed: 7 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/01/24 17:13:37 by mchatzip ### ########.fr */
9+
/* Updated: 2022/01/27 12:13:37 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -46,6 +46,11 @@ char *zeroorhashxp(char *s, int fd)
4646
dprintf(fd, "0");
4747
s += 2;
4848
}
49+
else if (s[1] == '?')
50+
{
51+
dprintf(fd, "%s", g_env[998]);
52+
s += 2;
53+
}
4954
return (s);
5055
}
5156

@@ -72,7 +77,7 @@ char *printvarxp(char *s, int fd)
7277
name = ft_substr(&s[1], 0, i - 1);
7378
if (!*name)
7479
s = emptynamexp(s, fd);
75-
else if (s[1] == '0' || s[1] == '#')
80+
else if (s[1] == '0' || s[1] == '#' || s[1] == '?')
7681
s = zeroorhashxp(s, fd);
7782
else
7883
{

libft/ft_freeall.c

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,49 +6,38 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2021/12/13 14:47:58 by mchatzip ### ########.fr */
9+
/* Updated: 2022/01/27 13:23:32 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include <stdarg.h>
1414
#include <stdio.h>
1515
#include "libft.h"
1616

17-
static size_t numlen(void *p)
18-
{
19-
size_t i;
20-
long l;
21-
22-
i = 1;
23-
l = (long)p;
24-
while (l)
25-
{
26-
i++;
27-
l /= 10;
28-
}
29-
return (i);
30-
}
31-
32-
void ft_freeall(void *p, ...)
17+
void ft_freeall(size_t ptrnum, void *p, ...)
3318
{
3419
va_list args;
3520
void *pt;
21+
size_t i;
3622

23+
i = 0;
3724
va_start(args, p);
3825
pt = va_arg(args, void *);
3926
free(p);
40-
while ((numlen(pt)) >= 8)
27+
while (i++ < ptrnum)
4128
{
29+
printf("%p\n", pt);
4230
free(pt);
4331
pt = va_arg(args, void *);
32+
printf("%p\n", pt);
4433
}
4534
va_end(args);
4635
}
4736

48-
/*int main()
49-
{
50-
char *s,*c;
37+
// int main()
38+
// {
39+
// char *s,*c, *k, *j;
5140

52-
s = malloc(1); c = malloc(1);;
53-
ft_freeall(s, c);
54-
}*/
41+
// s = malloc(1); c = malloc(1); k = malloc(1); j = malloc(1);
42+
// ft_freeall(3, s, c, k, j);
43+
// }

libft/libft.h

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

@@ -108,6 +108,6 @@ t_list *ft_lstnew(void *content);
108108

109109
int ft_lstsize(t_list *lst);
110110

111-
void ft_freeall(void *p, ...);
111+
void ft_freeall(size_t ptrnum, void *p, ...);
112112

113113
#endif

minishell.c

Lines changed: 5 additions & 4 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/01/26 16:43:58 by mchatzip ### ########.fr */
9+
/* Updated: 2022/01/27 13:30:03 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -93,20 +93,21 @@ void initialise(t_nums *nums)
9393
{
9494
nums->hlogc = 1;
9595
nums->hfd = 0;
96-
setenviron();
96+
nums->sig = 0;
97+
setenviron(nums);
9798
}
9899

99100
int main(void)
100101
{
101102
char *b;
102103
t_nums *nums;
103-
int sigx;
104104

105105
nums = malloc(sizeof(t_nums));
106106
initialise(nums);
107+
signal(SIGINT, dhandler);
108+
signal(SIGQUIT, dhandler);
107109
while (1)
108110
{
109-
sigx = sighandler();
110111
b = readline("Mike's minishell % ");
111112
if (b)
112113
{

minishell.h

Lines changed: 4 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:15:48 by mchatzip #+# #+# */
9-
/* Updated: 2022/01/26 15:58:28 by mchatzip ### ########.fr */
9+
/* Updated: 2022/01/27 13:04:16 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -24,6 +24,7 @@
2424
# include <dirent.h>
2525
# include <signal.h>
2626
# include <stdbool.h>
27+
# include <stdlib.h>
2728
# include "libft/libft.h"
2829

2930
char **g_env;
@@ -46,7 +47,7 @@ void loghistory(char *b, t_nums *nums);
4647
void execprog(char *b);
4748
void exec(char *b);
4849
void ukncommand(char *b);
49-
int sighandler(void);
50+
void sighandler(void);
5051
void exececho(char *b);
5152
int countchar(char *s, char c);
5253
int prints(char *s, t_nums *n);
@@ -62,7 +63,7 @@ void execenv(char *b);
6263
char *saveenv(void);
6364
void restoreenv(char *s);
6465
void free3(void *s, void *sp, void *sav);
65-
void setenviron(void);
66+
void setenviron(t_nums *n);
6667
char **processinput(char *b);
6768
char *handlespace(char *b);
6869
char *handlesquotes(char *b);

pipenredirutils.c

Lines changed: 3 additions & 6 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/01/26 17:08:12 by mchatzip ### ########.fr */
9+
/* Updated: 2022/01/27 11:58:29 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -61,7 +61,6 @@ bool checkstrayops(char *b)
6161

6262
void initparse(char *b, t_nums *nums)
6363
{
64-
char *buff;
6564
char **pr;
6665

6766
loghistory(b, nums);
@@ -71,7 +70,7 @@ void initparse(char *b, t_nums *nums)
7170
if (!*pr)
7271
{
7372
free(pr);
74-
return ;
73+
return ;
7574
}
7675
if (!pr[1])
7776
{
@@ -80,9 +79,7 @@ void initparse(char *b, t_nums *nums)
8079
free(pr);
8180
return ;
8281
}
83-
buff = ft_strdup(exportout(b));
84-
parseargs(buff);
85-
free(buff);
82+
parseargs(b);
8683
free(pr);
8784
}
8885
//else to be added for pipes/redirections handling

prog.c

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,27 @@
1+
/* ************************************************************************** */
2+
/* */
3+
/* ::: :::::::: */
4+
/* prog.c :+: :+: :+: */
5+
/* +:+ +:+ +:+ */
6+
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
7+
/* +#+#+#+#+#+ +#+ */
8+
/* Created: 2022/01/27 13:44:37 by mchatzip #+# #+# */
9+
/* Updated: 2022/01/27 13:45:43 by mchatzip ### ########.fr */
10+
/* */
11+
/* ************************************************************************** */
12+
113
#include "minishell.h"
214

3-
int main(int argc, char **argv)
15+
int main(int argc, char **argv)
416
{
5-
char c = getchar();
17+
char c;
18+
19+
c = getchar();
620
if (c == EOF)
7-
return 0;
21+
return (0);
822
if (argv[1])
923
printf("test successful with args\n");
1024
else
1125
printf("test successful without args\n");
1226
return (0);
13-
}
27+
}

utils.c

Lines changed: 9 additions & 25 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/01/20 15:34:10 by mchatzip ### ########.fr */
9+
/* Updated: 2022/01/27 13:46:06 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -19,7 +19,11 @@ void exec(char *b)
1919
pid = fork();
2020
if (!pid)
2121
execprog(b);
22-
wait(&pid);
22+
else
23+
wait(&pid);
24+
if (g_env[998])
25+
free(g_env[998]);
26+
g_env[998] = ft_itoa(WEXITSTATUS(pid));
2327
}
2428

2529
void ukncommand(char *b)
@@ -38,31 +42,11 @@ void dhandler(int signum)
3842
{
3943
if (signum == SIGINT)
4044
{
41-
write(2, "\n", 1);
42-
rl_on_new_line();
43-
//rl_replace_line("", 0);
44-
rl_redisplay();
45+
write(2, "\b\b ", 4);
46+
write(2, "\nMike's minishell % ", 20);
4547
}
4648
else if (signum == SIGQUIT)
47-
{
48-
write(2, "\b \b", 5);
49-
rl_on_new_line();
50-
//rl_replace_line("", 0);
51-
rl_redisplay();
52-
}
53-
}
54-
55-
int sighandler(void)
56-
{
57-
struct sigaction s;
58-
int i;
59-
60-
i = 1;
61-
s.sa_handler = dhandler;
62-
s.sa_flags = SA_RESTART;
63-
i = sigaction(SIGINT, &s, NULL);
64-
i = sigaction(SIGQUIT, &s, NULL);
65-
return (i);
49+
return ;
6650
}
6751

6852
int countchar(char *s, char c)

utils2.c

Lines changed: 2 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/01/20 16:03:43 by mchatzip ### ########.fr */
9+
/* Updated: 2022/01/27 12:22:34 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -79,7 +79,7 @@ char *printvar(char *s)
7979
name = ft_substr(&s[1], 0, i - 1);
8080
if (!*name)
8181
s = emptyname(s);
82-
else if (s[1] == '0' || s[1] == '#')
82+
else if (s[1] == '0' || s[1] == '#' || s[1] == '?')
8383
s = zeroorhash(s);
8484
else
8585
{

utils4.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
/* By: mchatzip <[email protected]> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2021/11/16 11:19:39 by mchatzip #+# #+# */
9-
/* Updated: 2022/01/25 15:12:35 by mchatzip ### ########.fr */
9+
/* Updated: 2022/01/27 12:49:35 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "minishell.h"
1414

15-
void setenviron2(void)
15+
void setenviron2(t_nums *n)
1616
{
1717
g_env[8] = ft_strjoin("__CF_USER_TEXT_ENCODING=",
1818
getenv("__CF_USER_TEXT_ENCODING"));
@@ -22,9 +22,11 @@ void setenviron2(void)
2222
getenv("TERM_PROGRAM_VERSION"));
2323
g_env[21] = ft_strjoin("_=", getenv("_"));
2424
g_env[22] = ft_strjoin("OLDPWD=", getenv("OLDPWD"));
25+
g_env[998] = ft_itoa(0);
26+
g_env[997] = (char *)n;
2527
}
2628

27-
void setenviron(void)
29+
void setenviron(t_nums *n)
2830
{
2931
g_env = malloc(1000 * sizeof(char *));
3032
g_env[0] = ft_strjoin("PATH=", getenv("PATH"));
@@ -45,7 +47,7 @@ void setenviron(void)
4547
g_env[18] = ft_strjoin("LANG=", getenv("LANG"));
4648
g_env[19] = ft_strjoin("COLORTERM=", getenv("COLORTERM"));
4749
g_env[20] = ft_strjoin("GIT_ASKPASS=", getenv("GIT_ASKPASS"));
48-
setenviron2();
50+
setenviron2(n);
4951
g_env[999] = 0;
5052
}
5153

utils5.c

Lines changed: 9 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/20 15:55:08 by mchatzip ### ########.fr */
9+
/* Updated: 2022/01/27 12:13:59 by mchatzip ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -74,6 +74,9 @@ char *emptyname(char *s)
7474

7575
char *zeroorhash(char *s)
7676
{
77+
int status;
78+
79+
wait(&status);
7780
if (s[1] == '0')
7881
{
7982
printf("minishell");
@@ -84,6 +87,11 @@ char *zeroorhash(char *s)
8487
printf("0");
8588
s += 2;
8689
}
90+
else if (s[1] == '?')
91+
{
92+
printf("%s", g_env[998]);
93+
s += 2;
94+
}
8795
return (s);
8896
}
8997

0 commit comments

Comments
 (0)