48 |
48 |
49 int _dbfs_stat_info (struct stat *st, const struct evsql_result_info *res, size_t row, size_t col_offset) { |
49 int _dbfs_stat_info (struct stat *st, const struct evsql_result_info *res, size_t row, size_t col_offset) { |
50 int err = 0; |
50 int err = 0; |
51 |
51 |
52 uint16_t mode; |
52 uint16_t mode; |
53 uint64_t size, nlink; |
53 uint32_t size = 0; // NULL for non-REG inodes |
|
54 uint64_t nlink; |
54 const char *type; |
55 const char *type; |
55 |
56 |
56 // extract the data |
57 // extract the data |
57 if (0 |
58 if (0 |
58 || evsql_result_string(res, row, col_offset + 0, &type, 0 ) // inodes.type |
59 || evsql_result_string(res, row, col_offset + 0, &type, 0 ) // inodes.type |
59 || evsql_result_uint16(res, row, col_offset + 1, &mode, 0 ) // inodes.mode |
60 || evsql_result_uint16(res, row, col_offset + 1, &mode, 0 ) // inodes.mode |
60 || evsql_result_uint64(res, row, col_offset + 2, &size, 0 ) // inodes.size |
61 || evsql_result_uint32(res, row, col_offset + 2, &size, 1 ) // size |
61 || evsql_result_uint64(res, row, col_offset + 3, &nlink, 0 ) // count(*) |
62 || evsql_result_uint64(res, row, col_offset + 3, &nlink, 0 ) // count(*) |
62 ) |
63 ) |
63 EERROR(err = EIO, "invalid db data"); |
64 EERROR(err = EIO, "invalid db data"); |
64 |
65 |
65 INFO("\tst_mode=S_IF%s | %ho, st_nlink=%llu, st_size=%llu", type, mode, (long long unsigned int) nlink, (long long unsigned int) size); |
66 INFO("\tst_mode=S_IF%s | %ho, st_nlink=%llu, st_size=%llu", type, mode, (long long unsigned int) nlink, (long long unsigned int) size); |