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 )


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
 
 
#include <sys/stat.h>
#include <stdio.h>
#include<dirent.h>
#include<errno.h>
#include<unistd.h>
 
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.