- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
static struct passwd *pd=getpwuid(st->st_uid);
  if(pd==NULL){
    fprintf(stderr, "no correspound user!\n");
  }
  char *perm=(char*)malloc(16);
  if(perm==NULL){fprintf(stderr, "out of memory!\n");return -1;}
   memset( perm,'\0',16); 
  if(st->st_mode & S_ISUID){perm[0]='s';} else perm[0]='-';
  if(st->st_mode & S_IRUSR){perm[1]='r';} else perm[1]='-';
  if(st->st_mode & S_IWUSR){perm[2]='w';} else perm[2]='-';
  if(st->st_mode & S_IXUSR){perm[3]='x';} else perm[3]='-';
  if(st->st_mode & S_IRGRP){perm[4]='r';} else perm[4]='-';
  if(st->st_mode & S_IWGRP){perm[5]='w';} else perm[5]='-';
  if(st->st_mode & S_IXGRP){perm[6]='x';} else perm[6]='-';
  if(st->st_mode & S_IROTH){perm[7]='r';} else perm[7]='-';
  if(st->st_mode & S_IWOTH){perm[8]='w';} else perm[8]='-';
  if(st->st_mode & S_IXOTH){
    if(st->st_mode & S_ISVTX){
      perm[9]='t';
    }
   else perm[9]='x';
    
  } else perm[9]='-';
  if(st->st_mode & S_ISUID){
   if(st->st_mode & S_IXUSR){
     perm[4]='s';
   } else perm[4]='S';
  }
   if(st->st_mode & S_ISGID){
    if(st->st_mode & S_IXGRP){
    perm[7]='s';
    } else perm[7]='S';
  }
  if(st->st_mode & S_ISVTX){
    if(st->st_mode & S_IXOTH){perm[9]='t';} else {
    perm[9]='T';
    }
  }
   if((st->st_mode & S_IFMT) == S_IFDIR) { perm[0]='d';}
   if((st->st_mode & S_IFMT)==S_IFSOCK){ perm[0]='s';}
   if((st->st_mode & S_IFMT) == S_IFCHR) { perm[0]='c';}
   if((st->st_mode & S_IFMT)==S_IFCHR){perm[0]='c';} else if(st->st_mode & S_IFBLK){perm[0]='b';} else
   if((st->st_mode & S_IFMT)== S_IFREG){ perm[0]='-';}
   if((st->st_mode &S_IFMT)==S_IFBLK) { perm[0]='b';}
   if((st->st_mode & S_IFMT)==S_IFIFO) { perm[0]='p';}
   if((st->st_mode & S_IFMT)== S_IFLNK){ perm[0]='l';}
  if(!S_ISDIR(st->st_mode)){
      if(S_ISREG(st->st_mode)){
	printf("<file type=\"regular file\" permissions=\"%s\" owner=\"%s\" group=\"%d\" size=\"%d\">%s</file>\n",perm,pd->pw_name,st->st_gid,st->st_size,dir);
	return 0;
      };
                                 
        
из одного советского фильма для молодёжи:
«Рукописи не горят!»(М.Булгаков)
«Это точно»(Вася Лопотухин)