src/dbfs/attr.c
branchnew-evsql
changeset 49 bb2ff0d2d343
parent 48 8b019d191353
equal deleted inserted replaced
48:8b019d191353 49:bb2ff0d2d343
    13     struct fuse_req *req = arg;
    13     struct fuse_req *req = arg;
    14     struct stat st; ZINIT(st);
    14     struct stat st; ZINIT(st);
    15     int err = 0;
    15     int err = 0;
    16     
    16     
    17     uint32_t ino;
    17     uint32_t ino;
       
    18     struct dbfs_stat_values stat_values;
    18 
    19 
    19     // check the results
    20     // result info
    20     if ((err = _dbfs_check_res(res, 1, 5)))
    21     static struct evsql_result_info result_info = {
    21         SERROR(err = (err ==  1 ? ENOENT : EIO));
    22         0, {
    22         
    23             {   EVSQL_FMT_BINARY,   EVSQL_TYPE_UINT32   },  // inodes.ino
    23     // get our data
    24             DBFS_STAT_RESULT_INFO,
    24     if (0
    25             {   0,                  0                   }
    25         ||  evsql_result_uint32(res, 0, 0, &ino,        0 ) // inodes.ino
    26         }
    26     )
    27     };
    27         EERROR(err = EIO, "invalid db data");
    28 
    28  
    29     // begin
    29         
    30     if ((err = evsql_result_begin(&result_info, res)))
       
    31         EERROR(err, "query failed");
       
    32 
       
    33     // get the one row of data
       
    34     if ((err = evsql_result_next(res, &ino, DBFS_STAT_RESULT_VALUES(&stat_values))) <= 0)
       
    35         EERROR(err = (err ? err : ENOENT), "evsql_result_next");
       
    36 
    30     INFO("\t[dbfs.getattr %p] -> ino=%lu, stat follows", req, (unsigned long int) ino);
    37     INFO("\t[dbfs.getattr %p] -> ino=%lu, stat follows", req, (unsigned long int) ino);
    31     
    38 
    32     // inode
    39     // inode
    33     st.st_ino = ino;
    40     st.st_ino = ino;
    34 
    41 
    35     // stat attrs
    42     // stat attrs
    36     if ((err = _dbfs_stat_info(&st, res, 0, 1)))
    43     if ((err = _dbfs_stat_info(&st, &stat_values)))
    37         goto error;
    44         goto error;
    38 
    45     
    39     // reply
    46     // reply
    40     if ((err = fuse_reply_attr(req, &st, st.st_nlink ? CACHE_TIMEOUT : 0)))
    47     if ((err = fuse_reply_attr(req, &st, st.st_nlink ? CACHE_TIMEOUT : 0)))
    41         EERROR(err, "fuse_reply_entry");
    48         EERROR(err, "fuse_reply_entry");
    42 
    49 
    43 error:
    50 error: