P
Hallo , also ich habe sie funktion mal so gemacht.
und bei der Funktion Zeige Verzeichniss diese eingefügt aber es passiert nichts. Bekomme keine Rechte angezeigt sonder nor das 5 Agrgument.
Wenn ich die Funktion so aufrufe
[cpp]char buf[80];
strcpy(buf, dirEntry->d_name);
printf("\n%s\n",buf);
void zeige_rechte2(const char *buf[]);[/cpp]
void zeige_rechte2(const char *name)
{
struct stat s;
stat(name, &s);
printf("%s","Dateiname");
struct stat attribut;
int i;
char l_rwx[10];
char rwx[] = "rwxrwxrwx";
int bits[] = {
S_IRUSR,S_IWUSR,S_IXUSR, /* Zugriffsrechte User */
//S_IRGRP,S_IWGRP,S_IXGRP, /* Zugriffsrechte Gruppe */
//S_IROTH,S_IWOTH,S_IXOTH /* Zugriffsrechte der Rest */
};
while(*++argv) {
l_rwx[0]='\0';
// mua|...
printf("mua|%s|%s|%s|%s|",argv[0],argv[1],argv[2],argv[3]);
if(stat(argv[3],&attribut) < 0)
{
fprintf(stderr, "Fehler bei stat ...\n");
return ;
}
// Verzeichnis ?
// der - oder d vor rwxrwxrwx
if(attribut.st_mode & S_IFDIR)
printf("d");
else
printf("-");
// rwxrwxrwx
for(i = 0; i < 9; i++)
{
/* wenn nicht 0, dann gesetzt */
if(attribut.st_mode & bits[i])
l_rwx[i]=rwx[i]; /*r,w oder x*/
else
l_rwx[i] = '-'; /*wenn nicht gesetzt, dann '-'*/
}
l_rwx[9]='\0';
printf("%s",l_rwx);
// Eigentümer
printf("|USER:%d", attribut.st_uid);
// Gruppe
printf("|GROUP:%d", attribut.st_gid);
// Grosse
printf("|SIZE:%ld", attribut.st_size);
// letzte änderung
printf("|LAST:%s\n", ctime(&attribut.st_mtime));
return ;