Programmation de la commande ls pour un debutant en langage reseaux C

Signaler
Messages postés
1
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
9 mars 2009
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonjour,
J'ai pour mission de coder la fonction ls avec le maximum d'option.
Pour l'instant j'ai réussi a programmer une commande permettant de faire comme un ls -l mais avec en plus affichage des droits ( rwx )




#include <sys/stat.h>
#include <stdio.h>
#include<dirent.h>
#include<errno.h>
#include

int main (int argc, char* argv[])
{
DIR* ptdir;
struct dirent* entree;
char les_droits[8][4] = {"---", "--x", "-w-", "-wx", "r--", "r-x", "rw-","rwx" };
int droit;
int bool;
struct stat info;
ptdir = opendir(".");
if (!ptdir) { fprintf(stderr,"pb opendir\n");
exit(1);
}
while ((entree = readdir (ptdir)) != NULL)
{if (argc==0)
printf ("%s %d \n",entree->d_name, entree->d_ino);
else {
bool = lstat (entree->d_name, &info);
if (bool == -1){printf ("chemin inexistant\n");}
else {
if (entree->d_name[0] != ".")
printf ("%s", les_droits[(droit>>6)&7] ); // décale de 6 bits et fait une somme bit à bit avec 7 donc fait apparaitre les droits propriétaire
printf ("%s", les_droits[(droit>>3)&7] ); // même opération mais décale de 3 --> droits groupe
printf ("%s", les_droits[(droit)&7] ); // même opération mais ne décale pas pour faire apparaitre les droits des autres.
printf ("%s %d \n",entree->d_name, entree->d_ino);
droit = info.st_mode; //met les droits en binaire dans droit


}}}
closedir(ptdir);
return(0);
}


Il me reste les autre options mais je ne voit pas trop comment faire donc je me permet de vous demander de m'aider pour les autres options.
Pourriez-vous m'indiquer quelles pistes suivrent?
Je vous remercie d'avance.
Au revoir.

1 réponse

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
salut

le man de ls est tres precis sur les options que tu peux gerer.

le tri, les parametres d'affichages, ce sont des choses tres simples.