implement ability to pipe in text (#3)
This commit is contained in:
parent
80d0f8c377
commit
a7b917d3e9
23
src/main.zig
23
src/main.zig
|
@ -24,7 +24,7 @@ const LINES = 8;
|
|||
// Device specifications
|
||||
const PAGES = 8;
|
||||
|
||||
var lines: [LINES]*const [:0]u8 = undefined;
|
||||
var lines: [LINES]*[:0]u8 = undefined;
|
||||
|
||||
fn usage(args: [][]u8) !void {
|
||||
const writer = std.io.getStdErr().writer();
|
||||
|
@ -53,25 +53,34 @@ pub fn main() !void {
|
|||
// from the file
|
||||
const stdin_file = std.io.getStdIn();
|
||||
var stdin_data: [WIDTH * HEIGHT + 1]u8 = undefined;
|
||||
// Need this to support deallocation of memory
|
||||
var line_inx: usize = 0;
|
||||
var stdin_lines: [LINES][:0]u8 = undefined;
|
||||
defer {
|
||||
for (0..line_inx) |i| {
|
||||
alloc.free(@constCast(lines[i].*));
|
||||
alloc.free(stdin_lines[i]);
|
||||
}
|
||||
}
|
||||
var nothing: [:0]u8 = @constCast("");
|
||||
for (lines, 0..) |_, i| {
|
||||
lines[i] = ¬hing;
|
||||
}
|
||||
if (!stdin_file.isTty()) {
|
||||
const read = try stdin_file.readAll(&stdin_data);
|
||||
if (read == stdin_data.len) {
|
||||
try std.io.getStdErr().writer().print("ERROR: data provided exceeds what can be sent to device!\n", .{});
|
||||
try usage(args);
|
||||
}
|
||||
var it = std.mem.split(u8, &stdin_data, "\n");
|
||||
var read_data = stdin_data[0..read];
|
||||
var it = std.mem.split(u8, read_data, "\n");
|
||||
while (it.next()) |line| {
|
||||
const bwahahaha = try alloc.dupeZ(u8, line);
|
||||
lines[line_inx] = &bwahahaha;
|
||||
if (line.len == 0) continue;
|
||||
stdin_lines[line_inx] = try alloc.dupeZ(u8, line);
|
||||
lines[line_inx] = &stdin_lines[line_inx];
|
||||
line_inx += 1;
|
||||
}
|
||||
}
|
||||
std.debug.print("delme: {s}\n", .{lines[0].*});
|
||||
const opts = try processArgs(alloc, args, &lines);
|
||||
defer alloc.destroy(opts);
|
||||
if (opts.background_filename.len > 0) try stdout.print("Converting {s}\n", .{opts.background_filename});
|
||||
|
@ -94,10 +103,6 @@ fn processArgs(allocator: std.mem.Allocator, args: [][:0]u8, line_array: *[LINES
|
|||
if (!std.mem.eql(u8, opts.device_file, "-") and !std.mem.startsWith(u8, opts.device_file, prefix)) try usage(args);
|
||||
|
||||
opts.background_filename = @constCast("");
|
||||
const nothing: [:0]u8 = @constCast("");
|
||||
for (line_array.*, 0..) |_, i| {
|
||||
line_array.*[i] = ¬hing;
|
||||
}
|
||||
var is_filename = false;
|
||||
var line_number: ?usize = null;
|
||||
for (args[1..], 1..) |arg, i| {
|
||||
|
|
Loading…
Reference in New Issue
Block a user