summaryrefslogtreecommitdiff
path: root/util/file.zig
blob: 90849e93576562c014b08e8d84b6b397e851fab6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const std = @import("std");

/// Reads an entire file into memory, caller owns the returned slice.
pub fn slurp(allocator: std.mem.Allocator, file_path: []const u8) ![]u8 {
    var path_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined;
    const path = try std.fs.realpath(file_path, &path_buffer);

    const file = try std.fs.openFileAbsolute(path, .{});
    defer file.close();

    return try file.readToEndAlloc(
        allocator,
        (try file.stat()).size,
    );
}