- 论坛徽章:
- 2
|
本帖最后由 Zhc1993 于 2013-03-28 19:06 编辑
- /*set the local files'value*/
- /*set the local files'value*/
- gboolean get_file_info_stat(const char *file_name,struct stat *s_buff, File *local_file)
- {
- char date[20];
- char mode[11] ="----------";
- if(s_buff == NULL || local_file == NULL)
- {
- printf("s_buff or local_file is NULL pointer:%s\n",file_name);
- return FALSE;
- }
- mode_t file_mode = s_buff->st_mode;
- struct passwd *passwd_info = getpwuid(s_buff->st_uid);
- if(passwd_info == NULL)
- {
- perror("getpwuid:\n");
- printf("%s\n",file_name);
- return TRUE;
- }
- if(passwd_info != NULL)
- {
- struct group *group_info = getgrgid(s_buff->st_gid);
- if(group_info == NULL)
- {
- printf("getgrgid error:%s\n",file_name);
- }
- if(group_info != NULL)
- {
- /*file types*/
- if(S_ISDIR(file_mode))
- mode[0] = 'd';
- else if(S_ISREG(file_mode))
- mode[0] = 'r';
- else if(S_ISCHR(file_mode))
- mode[0] = 'c';
- else if(S_ISBLK(file_mode))
- mode[0] = 'b';
- else if(S_ISFIFO(file_mode))
- mode[0] = 'p';
- else if(S_ISLNK(file_mode))
- mode[0] = 'l';
- else if(S_ISSOCK(file_mode))
- mode[0] = 's';
- else
- {
- printf("file mode error:%s\n",file_name);
- return FALSE;
- }
-
- /*file state*/
- mode[1] = (file_mode & S_IRUSR) ? 'r' : '-';
- mode[2] = (file_mode & S_IWUSR) ? 'w' : '-';
- mode[3] = (file_mode & S_IXUSR) ? 'x' : '-';
- mode[4] = (file_mode & S_IRGRP) ? 'r' : '-';
- mode[5] = (file_mode & S_IWGRP) ? 'w' : '-';
- mode[6] = (file_mode & S_IXGRP) ? 'x' : '-';
- mode[7] = (file_mode & S_IROTH) ? 'r' : '-';
- mode[8] = (file_mode & S_IWOTH) ? 'w' : '-';
- mode[9] = (file_mode & S_IXOTH) ? 'x' : '-';
-
- strftime(date,13,"%b %d %H:%M",localtime(&(s_buff->st_mtime)));
- /*give the value to local_file pointer*/
- strcpy(local_file->file_name,file_name);
- local_file->file_size = (gint)s_buff->st_size;
- strcpy(local_file->own_name,passwd_info->pw_name);
- strcpy(local_file->group_name,group_info->gr_name);
- strcpy(local_file->date,date);
- strcpy(local_file->file_state,mode);
- return TRUE;
- }
-
- }
- return FALSE;
- }
-
复制代码 |
|