| 419 | } |
| 420 | |
| 421 | static int reiser_dir(disk_t *disk_car, const partition_t *partition, dir_data_t *dir_data, const unsigned long int cluster, file_info_t *dir_list) |
| 422 | { |
| 423 | struct rfs_dir_struct *ls=(struct rfs_dir_struct*)dir_data->private_dir_data; |
| 424 | reiserfs_dir_t *dir; |
| 425 | reiserfs_dir_entry_t entry; |
| 426 | ls->dir_list=dir_list; |
| 427 | if (!(dir = reiserfs_dir_open(ls->current_fs, dir_data->current_directory))) { |
| 428 | screen_buffer_add("Couldn't open dir\n"); |
| 429 | log_error("Couldn't open dir\n"); |
| 430 | return -1; |
| 431 | } |
| 432 | while (reiserfs_dir_read(dir, &entry)) |
| 433 | { |
| 434 | char name[MAX_NAME_LEN(DEFAULT_BLOCK_SIZE)]; |
| 435 | reiserfs_object_t *entity; |
| 436 | strncpy(name,dir_data->current_directory,sizeof(name)); |
| 437 | strcat(name,"/"); |
| 438 | strcat(name,entry.de_name); |
| 439 | if((entity=reiserfs_object_create(ls->current_fs,name,1))) |
| 440 | { |
| 441 | unsigned int thislen; |
| 442 | file_info_t *new_file=(file_info_t *)MALLOC(sizeof(*new_file)); |
| 443 | thislen=(MAX_NAME_LEN(DEFAULT_BLOCK_SIZE)<DIR_NAME_LEN?MAX_NAME_LEN(DEFAULT_BLOCK_SIZE):DIR_NAME_LEN); |
| 444 | memcpy(new_file->name,entry.de_name,thislen); |
| 445 | new_file->name[thislen-1]='\0'; |
| 446 | |
| 447 | new_file->status=0; |
| 448 | new_file->st_ino=entity->stat.st_ino; |
| 449 | new_file->st_mode=entity->stat.st_mode; |
| 450 | // new_file->st_nlink=entity->stat.st_nlink; |
| 451 | new_file->st_uid=entity->stat.st_uid; |
| 452 | new_file->st_gid=entity->stat.st_gid; |
| 453 | new_file->st_size=entity->stat.st_size; |
| 454 | // new_file->st_blksize=entity->stat.st_blksize; |
| 455 | new_file->td_atime=entity->stat.st_atime; |
| 456 | new_file->td_mtime=entity->stat.st_mtime; |
| 457 | new_file->td_ctime=entity->stat.st_ctime; |
| 458 | reiserfs_object_free(entity); |
| 459 | td_list_add_tail(&new_file->list, &dir_list->list); |
| 460 | } |
| 461 | } |
| 462 | reiserfs_dir_close(dir); |
| 463 | return 0; |
| 464 | } |
| 465 | |
| 466 | static void dir_partition_reiser_close(dir_data_t *dir_data) |
| 467 | { |
nothing calls this directly
no test coverage detected