Probleme de renvoi au shell
Bonjour
J'essai de renvoyer une liste de fichier au shell apres avoir selectioner ces fichiers grace a un programme qui s'appel my_select (projet pour mon ecole a rendre demain)
Je gere la pluspart de ce qui m'est demander mais il me manque un truc important que je n'arrive pas a resoudre.
my_select doit etre capable de renvoyer une liste (de fichier dans cette exemple) au shell .
Par exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11
| $> set reponse = `my_select choix1 choix2 choix3 choix4`
$> more `my_select *.c`
$> rm `my_select ~/*` NB: N'utilisez cette commande QUE si
vous etes sur que votre my_select
fonctionne. Nous degageons toute
responsabilite en cas de bug de
votre my_select...
$> ls `my_select /u/ept1/*` > liste |
Mais je me heure toujours au meme probleme si je met comme descripteur STDIN j'ai access a l'interface du programme mais il ne renvoi pas les donne mais si je met STDOUT l'interface ne se lance pas et il est impossible de choisir ses fichiers.
Si quelau'un pouvais m'aider a trouver ce que j;ai rater ca serais cool parceque je ne comprend pas (et ca m'enerve carement), voila la partie du code qui est charger de renvoyer les nom de fichiers :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
void youhavselec(t_cstr act, t_chaine *current)
{
int first;
first = 0;
tputs(act.clstr, 1, my_ichar);
tputs(tgoto(act.cmstr, 0, 0), 1, my_ichar);
tputs(act.vestr, 1, my_ichar);
while (current != 0)
{
if (current->select)
{
if (first)
my_putchar(' ');
my_putstr(current->data);
first = 1;
}
current = current->next;
}
exit(0);
} |
Merci a tous ceux qui voudraient bien m'aider (je ne demande forcement une reponse precise, je peux me contenter d'un indice qui pourrait m;aider)
Pendant que j'y suis voici les fonctions my_putchar et my_putstr
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| void my_putstr(char *str)
{
int fd;
fd = fcntl(STDIN_FILENO, F_DUPFD, 0);
while (*str++ != '\0')
write(fd, str - 1, 1);
}
void my_putchar(char c)
{
int fd;
fd = fcntl(STDIN_FILENO, F_DUPFD, 0);
write(fd, &c, 1);
} |