示例#1
0
size_t FileSystem::dir_size(fs_dir_t dir)
{
    off_t off = dir_tell(dir);
    size_t size = 0;
    struct dirent *ent = new struct dirent;

    dir_rewind(dir);
    while (true) {
        int res = dir_read(dir, ent);
        if (res <= 0) {
            break;
        }

        size += 1;
    }
    dir_seek(dir, off);

    delete ent;
    return size;
}
示例#2
0
void FileSystem::dir_rewind(fs_dir_t dir)
{
    // Note, the may not satisfy rewind on all filesystems
    dir_seek(dir, 0);
}
示例#3
0
/*
 *  call-seq:
 *     dir.pos( integer ) => integer
 *
 *  Synonym for <code>Dir#seek</code>, but returns the position
 *  parameter.
 *
 *     d = Dir.new("testdir")   #=> #<Dir:0x401b3c40>
 *     d.read                   #=> "."
 *     i = d.pos                #=> 12
 *     d.read                   #=> ".."
 *     d.pos = i                #=> 12
 *     d.read                   #=> ".."
 */
static VALUE
dir_set_pos(VALUE dir, VALUE pos)
{
    dir_seek(dir, pos);
    return pos;
}