github.com/tetratelabs/wazero@v1.7.1/imports/wasi_snapshot_preview1/example/testdata/zig/cat.zig (about)

     1  const std = @import("std");
     2  const io = std.io;
     3  const os = std.os;
     4  const allocator = std.heap.page_allocator;
     5  const stdout = std.io.getStdOut();
     6  const warn = std.log.warn;
     7  
     8  pub fn main() !void {
     9      // Allocate arguments from the the operating system.
    10      const args = try std.process.argsAlloc(allocator);
    11      defer std.process.argsFree(allocator, args);
    12  
    13      // loop on the args, skipping the filename (args[0])
    14      for (args[1..args.len]) |arg| {
    15  
    16          // open the file from a relative path, as "/" is pre-opened and the CWD.
    17          const file = std.fs.cwd().openFile(arg, .{ .mode = .read_only }) catch |err| {
    18              warn("Unable to open file {s}: {s}\n", .{ arg, @errorName(err) });
    19              return err;
    20          };
    21          defer file.close();
    22  
    23          // Write the contents to stdout
    24          stdout.writeFileAll(file, .{}) catch |err| {
    25              warn("Unable to write contents to stdout: {s}\n", .{@errorName(err)});
    26              return err;
    27          };
    28      }
    29  }