summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cimport.zig6
-rw-r--r--src/main.zig29
2 files changed, 17 insertions, 18 deletions
diff --git a/src/cimport.zig b/src/cimport.zig
index 65666b2..19416af 100644
--- a/src/cimport.zig
+++ b/src/cimport.zig
@@ -1,8 +1,4 @@
-pub const FILE = stdio.FILE;
-pub const fclose = stdio.fclose;
-pub const fopen = stdio.fopen;
-pub const fputs = stdio.fputs;
-pub const stdio = @cImport(@cInclude("stdio.h"));
+pub const FILE = @import("std").c.FILE;
pub const bits = u64;
diff --git a/src/main.zig b/src/main.zig
index fbbb8b1..993c0a1 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -9,6 +9,8 @@ const c = @import("cimport.zig");
const cWriter = std.io.cWriter;
const eql = std.mem.eql;
const exit = std.os.exit;
+const fclose = std.c.fclose;
+const fopen = std.c.fopen;
const getStdErr = std.io.getStdErr;
const getStdOut = std.io.getStdOut;
const isAlphabetic = std.ascii.isAlphabetic;
@@ -159,8 +161,8 @@ const Parser = struct {
c.T = default_target.*;
var args = try argsWithAllocator(allocator);
var dbg = false;
- var out: *c.FILE = c.stdio.stdout.?;
- errdefer _ = c.fclose(out);
+ var out = fopen("/dev/stdout", "w").?;
+ errdefer _ = fclose(out);
const prog = args.next().?;
while (args.next()) |arg| {
@@ -181,8 +183,8 @@ const Parser = struct {
}
},
'o' => {
- _ = c.fclose(out);
- out = c.fopen(value, "w") // TODO: explicit OpenError
+ _ = fclose(out);
+ out = fopen(value, "w") // TODO: explicit OpenError
orelse try die("cannot open '{s}'\n", .{ value }, 1);
},
't' => {
@@ -200,16 +202,18 @@ const Parser = struct {
}
}
- if (dbg)
- _ = c.fclose(out);
- return .{ .dbg = dbg, .out = if (dbg) c.stdio.stderr.? else out };
+ if (dbg) {
+ _ = fclose(out);
+ out = fopen("/dev/stdout", "w").?;
+ }
+ return .{ .dbg = dbg, .out = out };
}
/// Finish writing to output file.
pub fn deinit(self: Parser) void {
if (!self.dbg)
c.T.emitfin(self.out);
- _ = c.fclose(self.out);
+ _ = fclose(self.out);
}
/// Skip emitting data in debug mode.
@@ -233,6 +237,7 @@ pub fn main() !void {
var read_stdin = true;
var args = try argsWithAllocator(allocator);
_ = args.next().?;
+ const stdin = fopen("/dev/stdin", "r").?;
while (args.next()) |arg| {
if (arg[0] == '-' and arg.len > 1) {
// must be -d, -o or -t
@@ -241,13 +246,11 @@ pub fn main() !void {
continue;
}
read_stdin = false;
- const in_file = if (eql(u8, arg, "-"))
- c.stdio.stdin.?
- else c.fopen(arg, "r") // TODO: explicit OpenError
+ const in_file = if (eql(u8, arg, "-")) stdin else fopen(arg, "r")
orelse try die("cannot open '{s}'\n", .{ arg }, 1);
- defer _ = c.fclose(in_file);
+ defer _ = fclose(in_file);
parser.parse(in_file, arg.ptr);
}
if (read_stdin)
- parser.parse(c.stdio.stdin.?, "-");
+ parser.parse(stdin, "-");
}