structstd.fs.File.MetadataLinux[src]

MetadataUnix, but using Linux's statx syscall.

Fields

statx: std.os.linux.Statx

Functions

Functionsize[src]

pub fn size(self: Self) u64

Returns the size of the file

Parameters

self: Self

Source Code

Source code
pub fn size(self: Self) u64 {
    return self.statx.size;
}

Functionpermissions[src]

pub fn permissions(self: Self) Permissions

Returns a Permissions struct, representing the permissions on the file

Parameters

self: Self

Source Code

Source code
pub fn permissions(self: Self) Permissions {
    return Permissions{ .inner = PermissionsUnix{ .mode = self.statx.mode } };
}

Functionkind[src]

pub fn kind(self: Self) Kind

Returns the Kind of the file

Parameters

self: Self

Source Code

Source code
pub fn kind(self: Self) Kind {
    const m = self.statx.mode & posix.S.IFMT;

    switch (m) {
        posix.S.IFBLK => return .block_device,
        posix.S.IFCHR => return .character_device,
        posix.S.IFDIR => return .directory,
        posix.S.IFIFO => return .named_pipe,
        posix.S.IFLNK => return .sym_link,
        posix.S.IFREG => return .file,
        posix.S.IFSOCK => return .unix_domain_socket,
        else => {},
    }

    return .unknown;
}

Functionaccessed[src]

pub fn accessed(self: Self) i128

Returns the last time the file was accessed in nanoseconds since UTC 1970-01-01

Parameters

self: Self

Source Code

Source code
pub fn accessed(self: Self) i128 {
    return @as(i128, self.statx.atime.sec) * std.time.ns_per_s + self.statx.atime.nsec;
}

Functionmodified[src]

pub fn modified(self: Self) i128

Returns the last time the file was modified in nanoseconds since UTC 1970-01-01

Parameters

self: Self

Source Code

Source code
pub fn modified(self: Self) i128 {
    return @as(i128, self.statx.mtime.sec) * std.time.ns_per_s + self.statx.mtime.nsec;
}

Functioncreated[src]

pub fn created(self: Self) ?i128

Returns the time the file was created in nanoseconds since UTC 1970-01-01. Returns null if this is not supported by the filesystem, or on kernels before than version 4.11

Parameters

self: Self

Source Code

Source code
pub fn created(self: Self) ?i128 {
    if (self.statx.mask & std.os.linux.STATX_BTIME == 0) return null;
    return @as(i128, self.statx.btime.sec) * std.time.ns_per_s + self.statx.btime.nsec;
}

Source Code

Source code
pub const MetadataLinux = struct {
    statx: std.os.linux.Statx,

    const Self = @This();

    /// Returns the size of the file
    pub fn size(self: Self) u64 {
        return self.statx.size;
    }

    /// Returns a `Permissions` struct, representing the permissions on the file
    pub fn permissions(self: Self) Permissions {
        return Permissions{ .inner = PermissionsUnix{ .mode = self.statx.mode } };
    }

    /// Returns the `Kind` of the file
    pub fn kind(self: Self) Kind {
        const m = self.statx.mode & posix.S.IFMT;

        switch (m) {
            posix.S.IFBLK => return .block_device,
            posix.S.IFCHR => return .character_device,
            posix.S.IFDIR => return .directory,
            posix.S.IFIFO => return .named_pipe,
            posix.S.IFLNK => return .sym_link,
            posix.S.IFREG => return .file,
            posix.S.IFSOCK => return .unix_domain_socket,
            else => {},
        }

        return .unknown;
    }

    /// Returns the last time the file was accessed in nanoseconds since UTC 1970-01-01
    pub fn accessed(self: Self) i128 {
        return @as(i128, self.statx.atime.sec) * std.time.ns_per_s + self.statx.atime.nsec;
    }

    /// Returns the last time the file was modified in nanoseconds since UTC 1970-01-01
    pub fn modified(self: Self) i128 {
        return @as(i128, self.statx.mtime.sec) * std.time.ns_per_s + self.statx.mtime.nsec;
    }

    /// Returns the time the file was created in nanoseconds since UTC 1970-01-01.
    /// Returns null if this is not supported by the filesystem, or on kernels before than version 4.11
    pub fn created(self: Self) ?i128 {
        if (self.statx.mask & std.os.linux.STATX_BTIME == 0) return null;
        return @as(i128, self.statx.btime.sec) * std.time.ns_per_s + self.statx.btime.nsec;
    }
}