Erel69
206 (¯`·.__[T3aM.L1b3rTe©]__.·´¯)
Messages : 19 449 Inscrit le 07/11/01
Ville : Lyon
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 37 m 00 s |
|
|
Reprise du message précédent :
déjà ajouter du char avec du int c'est normal ?
|
|
| |
Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 210 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 39 m 17 s |
|
|
ou ca?
Bon, choix difficile, mais je crois que je vais tout recommencer depuis le debut.
Apres tout, j'ai encore 11h20 pour faire ce que j'ai mis 1 semaine a 10h/jours a faire!
|
|
| |
Message édité 1 fois, la dernière par Woofy le 18 novembre 2004 - 21 h 40. |
| |
Totalement inutile, donc completement indispensable 
|
Erel69
206 (¯`·.__[T3aM.L1b3rTe©]__.·´¯)
Messages : 19 449 Inscrit le 07/11/01
Ville : Lyon
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 41 m 13 s |
|
|
|
|
|
| |
Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 419 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 41 m 36 s |
|
|
Le 18 novembre 2004 - 21 h 37, Erel69 a écrit :
déjà ajouter du char avec du int c'est normal ?
|
oui, parce que en C un char c'est un entier. Si, si, je t'assure !
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 210 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 42 m 34 s |
|
|
Oui, je le prend caractere par caractere, donc le code ascii qui est un entier.
|
|
| |
Totalement inutile, donc completement indispensable 
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 419 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 44 m 51 s |
|
|
dans make_list_path tu fais :
head[i] = ll_create();
head[i] = 0;
|
du coup head[i] = ll_create(); est écrasé...
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 419 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 46 m 37 s |
|
|
Le 18 novembre 2004 - 21 h 42, Woofy a écrit :
Oui, je le prend caractere par caractere, donc le code ascii qui est un entier.
|
fais gaffe quand même aux débordement qui pourraient être dus aux négatifs. Parfois, vaut mieux utiliser des unsigned...
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 210 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 46 m 56 s |
|
|
Heu... oui mais non, y a le for avant.
donc quand on aura head[i] = 0, i ne sera pas egal a head[i] = ll_create.
Mais je vais l'enlever pour voir, il n'est pas indispensable.
|
|
| |
Totalement inutile, donc completement indispensable 
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 419 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 50 m 31 s |
|
|
Le 18 novembre 2004 - 21 h 46, Woofy a écrit :
Heu... oui mais non, y a le for avant.
donc quand on aura head[i] = 0, i ne sera pas egal a head[i] = ll_create.
Mais je vais l'enlever pour voir, il n'est pas indispensable.
|
j'avais pas vu, d'où l'intérêt de toujours encadrer les if, for, while et consorts par des {} même pour une seule instruction.
EDIT : et ce qui n'est pas indispensable est inutile, donc est néfaste et encombre... Le C c'est déjà bien assez touffu comme ça !
|
|
| |
Message édité 1 fois, la dernière par bernie38 le 18 novembre 2004 - 21 h 52. |
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 210 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 51 m 56 s |
|
|
ouaip, sauf quand tu est limite a 25 lignes (et je depasse largement)
|
|
| |
Totalement inutile, donc completement indispensable 
|
bernie38
Waldorf (le pote à Statler)
Messages : 11 419 Inscrit le 28/08/03
Ville : Claix
Non connecté
|
|
Posté le 18 novembre 2004 - 21 h 55 m 51 s |
|
|
Le 18 novembre 2004 - 21 h 51, Woofy a écrit :
ouaip, sauf quand tu est limite a 25 lignes (et je depasse largement)
|
pourquoi 25 lignes ? une limitation du prof ? alors explique lui que les {et } ne comptent pas, et pourtant sont d'une importance terrible. J'ai vu dans un prog des trucs comme ça, et une personne qui devait faire de la maintenance a voulu rajouter une instruction (un delete sql) au if, a pas vu qu'il y avait pas de {}, du coup le prog a gentiment supprimé un tas de lignes de la base de données à la 1ère éxécution (en test, heureusement, mais ça aurait pu passer inaperçu dans autre chose qu'un delete et être tout aussi grave)
|
|
| |
La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 210 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 18 novembre 2004 - 22 h 12 m 15 s |
|
|
Ben c'est la norme qui est fait comme ca, j'y peut rien moi. Beaucoup on essaye, mais personne n'y est arrive.
Si la fonction fait plus de 25 lignes, alors il faut la decouper en plusieurs fonction. Si c'est pas possible, alors elle est mal faite et doit etre repensee.
Bon j'ai laisse tombe et tout repris depuis le debut.
|
|
| |
Totalement inutile, donc completement indispensable 
|
iraysyvalo
-
Messages : 9 647 Inscrit le 19/11/02
Ville : Lyon
Non connecté
|
|
Posté le 18 novembre 2004 - 22 h 36 m 51 s |
|
|
Ben tu appelles a la rescousse aussi 12h avant la fin
T'as pas un ftp free ou tu peux mettre le tarball ??
|
|
| |
Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 210 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 18 novembre 2004 - 23 h 01 m 31 s |
|
|
Heu... pas le temps, la j'ai tout repris, vitesse grand V.
Pour l'instant, j'ai une structure qui marche bien, le tableau de pointeur sur fonction marche, le prompt marche, exit marche, s'il ne trouve pas de built in il lance un fork avec un execve, ca marche (mon, iol me lance une fonction au pif pour l'instant, j'ai pas encore fait mon tableau de liste chainnee).
Si j'appel a la rescousse, c'est aussi un peu bernie qui m'a pousse, j'essaie de faire sans aide ce qu'on me demande.
bon, mon code jusqu'a present :
mysh.c :
/*
** mysh.c for minishell in /u/ept3s/nicola_f/rendu/c/minishell/shell
**
** Made by florian nicolais
** Login <nicola_f@epita.fr>
**
** Started on Thu Nov 18 21:55:48 2004 florian nicolais
** Last update Thu Nov 18 22:33:36 2004 florian nicolais
*/
#include "my.h"
#include <stdlib.h>
char *my_read();
int exec_com(int ac, char **av);
int my_tablen(char **av)
{
int count;
count = 0;
while (av[count])
count++;
return (count);
}
int main()
{
char *s;
char **av;
int ac;
while (1)
{
my_putstr("Prompt -=>");
s = my_read();
if (s)
{
av = my_str_to_wordtab(s);
ac = my_tablen(av);
if (my_strcmp(s, "exit") == 0)
break;
else
exec_com(ac, av);
}
free(s);
}
return (0);
}
|
my_read.c :
/*
** my_read.c for minishell in /u/ept3s/nicola_f/rendu/c/minishell/shell
**
** Made by florian nicolais
** Login <nicola_f@epita.fr>
**
** Started on Thu Nov 18 21:56:47 2004 florian nicolais
** Last update Thu Nov 18 22:08:53 2004 florian nicolais
*/
#include <unistd.h>
#include <stdlib.h>
char *my_read()
{
int i;
int lenread;
char bufread[255];
char *bufres;
i = 0;
bufres = malloc(sizeof(*bufres) * 256);
lenread = read(0, &bufread, 255);
while (i < lenread && bufread[i] != '\n')
{
bufres[i] = bufread[i];
i++;
}
bufres[i] = '\0';
if (lenread == 1)
return (NULL);
return (bufres);
}
|
exec_com.c :
/*
** exec_com.c for minishell in /u/ept3s/nicola_f/rendu/c/minishell/shell
**
** Made by florian nicolais
** Login <nicola_f@epita.fr>
**
** Started on Thu Nov 18 22:24:24 2004 florian nicolais
** Last update Thu Nov 18 22:48:57 2004 florian nicolais
*/
#include "my.h"
#include <unistd.h>
#include <sys/wait.h>
struct s_com
{
char *com;
int (*f)();
};
struct s_com tab_com[]=
{
{0,0}
};
extern char **environ;
int exec_com(int ac, char **av)
{
int i;
i = 0;
while (tab_com[i].com != 0)
{
if (my_strcmp(av[0], tab_com[i].com) == 0)
{
tab_com[i].f(ac, av);
break;
}
i++;
}
if (tab_com[i].com == 0)
{
if (!fork())
{
execve("/bin/df", av, environ);
exit (0);
}
else
wait(0);
}
return (0);
}
|
Voila, ca compile sans Warning et ca marche.
Prochaines etapes : passer environ dans une liste chainee, et faire la fonction pour passer la liste chainee en tableau de char.
|
|
| |
Totalement inutile, donc completement indispensable 
|
iraysyvalo
-
Messages : 9 647 Inscrit le 19/11/02
Ville : Lyon
Non connecté
|
|
Posté le 18 novembre 2004 - 23 h 05 m 33 s |
|
|
C'est tout a ton honneur
Sauf que la, c'est trop short .. rien que le temps pour reflechir a l'architecture du mini-shell ou l'architecture que tu veux mettre en place manque .. ce qui fait qu'on a une vison tres parcellaire de ce que tu veux faire .:(
|
|
| |
Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.
|
iraysyvalo
-
Messages : 9 647 Inscrit le 19/11/02
Ville : Lyon
Non connecté
|
|
Posté le 18 novembre 2004 - 23 h 14 m 14 s |
|
|
Au fait, c'est facile a faire un tgz puis ca prend pas du temps de l'envoyer au lieu de mettre plein de trace de toi sur le forum ..
|
|
| |
Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 210 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 18 novembre 2004 - 23 h 56 m 56 s |
|
|
Oui, mais ca aide a la remontee dans bigboard!
Bon, me reste lpus qu'a faire la fonction de conversion list -> tableau et je pourrais tester, si ca passe je passe a l'etape suivante.
Plus que 9h!
|
|
| |
Totalement inutile, donc completement indispensable 
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 210 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 19 novembre 2004 - 00 h 46 m 34 s |
|
|
Bon, la j'ai un gros segfault qui fait chier en plein dans une fonction, et je sais pas pourquoi!!!!
Le meme code qui marche pour une variable et ne marche pas pour la suivant! Je vois pas ce qui cloche!
|
|
| |
Totalement inutile, donc completement indispensable 
|
Erel69
206 (¯`·.__[T3aM.L1b3rTe©]__.·´¯)
Messages : 19 449 Inscrit le 07/11/01
Ville : Lyon
Non connecté
|
|
Posté le 19 novembre 2004 - 01 h 43 m 59 s |
|
|
Je sens la nuit blanche
|
|
| |
Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...
|
Woofy
Pour les bons tuyaux me demander
Messages : 26 210 Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
|
|
Posté le 19 novembre 2004 - 01 h 44 m 57 s |
|
|
Ben de toute facon, si je suis pas parti a 23h42 je ne peut pas rentrer chez moi : plus de RER!
Tiens, tu t'y connais en pointeurs?
Ca fait 2h que je suis sur ma segfault!
|
|
| |
Totalement inutile, donc completement indispensable 
|
Erel69
206 (¯`·.__[T3aM.L1b3rTe©]__.·´¯)
Messages : 19 449 Inscrit le 07/11/01
Ville : Lyon
Non connecté
|
|
Posté le 19 novembre 2004 - 01 h 48 m 25 s |
|
|
Y'a un an ça aurait été sans problème, mais la il faudrait que je me mette dans le trip, et je pense plus à mon lit
Tu devrais poser tes problèmes quelques jours avant ça serait mieux quand même  Mais je suppose que c'est au jour le jour dans ton 'école'
|
|
| |
Message édité 1 fois, la dernière par Erel69 le 19 novembre 2004 - 01 h 48. |
| |
Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...
|