@@ -8,15 +8,15 @@ const RegisterID = Database.RegisterID;
88const StructID = Database .StructID ;
99const EnumID = Database .EnumID ;
1010
11- pub fn load_into_db (db : * Database , path : []const u8 , device : ? []const u8 ) ! void {
12- var targetdb_dir = try std .fs . cwd ().openDir (path , .{});
13- defer targetdb_dir .close ();
11+ pub fn load_into_db (io : std.Io , db : * Database , path : []const u8 , device : ? []const u8 ) ! void {
12+ var targetdb_dir = try std .Io . Dir . cwd ().openDir (io , path , .{});
13+ defer targetdb_dir .close (io );
1414
15- var devices_dir = try targetdb_dir .openDir ("devices" , .{ .iterate = true });
16- defer devices_dir .close ();
15+ var devices_dir = try targetdb_dir .openDir (io , "devices" , .{ .iterate = true });
16+ defer devices_dir .close (io );
1717
1818 var it = devices_dir .iterate ();
19- while (try it .next ()) | entry | {
19+ while (try it .next (io )) | entry | {
2020 if (entry .kind != .file )
2121 continue ;
2222
@@ -26,22 +26,19 @@ pub fn load_into_db(db: *Database, path: []const u8, device: ?[]const u8) !void
2626
2727 if (device ) | d | {
2828 if (std .mem .eql (u8 , d , entry .name [0 .. entry .name .len - ".xml" .len ])) {
29- try load_device (db , devices_dir , entry .name );
29+ try load_device (io , db , devices_dir , entry .name );
3030 return ;
3131 }
3232 } else {
33- try load_device (db , devices_dir , entry .name );
33+ try load_device (io , db , devices_dir , entry .name );
3434 }
3535 } else if (device != null ) {
3636 return error .DeviceMissing ;
3737 }
3838}
3939
40- fn load_device (db : * Database , devices_dir : std.fs.Dir , filename : []const u8 ) ! void {
41- const device_file = try devices_dir .openFile (filename , .{});
42- defer device_file .close ();
43-
44- const device_text = try device_file .readToEndAlloc (db .gpa , 1024 * 1024 );
40+ fn load_device (io : std.Io , db : * Database , devices_dir : std.Io.Dir , filename : []const u8 ) ! void {
41+ const device_text = try devices_dir .readFileAlloc (io , filename , db .gpa , .unlimited );
4542 defer db .gpa .free (device_text );
4643
4744 var doc = try xml .Doc .from_memory (device_text );
@@ -66,21 +63,24 @@ fn load_device(db: *Database, devices_dir: std.fs.Dir, filename: []const u8) !vo
6663 var instance_it = cpu_node .iterate (&.{}, &.{"instance" });
6764
6865 while (instance_it .next ()) | instance_node | {
69- try load_instance (db , device_id , devices_dir , instance_node );
66+ try load_instance (io , db , device_id , devices_dir , instance_node );
7067 }
7168}
7269
73- fn load_instance (db : * Database , device_id : DeviceID , devices_dir : std.fs.Dir , node : xml.Node ) ! void {
70+ fn load_instance (
71+ io : std.Io ,
72+ db : * Database ,
73+ device_id : DeviceID ,
74+ devices_dir : std.Io.Dir ,
75+ node : xml.Node ,
76+ ) ! void {
7477 const name = node .get_attribute ("id" ) orelse return error .MissingField ;
7578 const href = node .get_attribute ("href" ) orelse return error .MissingField ;
7679
7780 const baseaddr_str = node .get_attribute ("baseaddr" ) orelse return error .MissingField ;
7881 const baseaddr = try std .fmt .parseInt (u64 , baseaddr_str , 0 );
7982
80- const module_file = try devices_dir .openFile (href , .{});
81- defer module_file .close ();
82-
83- const module_text = try module_file .readToEndAlloc (db .gpa , 1024 * 1024 );
83+ const module_text = try devices_dir .readFileAlloc (io , href , db .gpa , .unlimited );
8484 defer db .gpa .free (module_text );
8585
8686 var doc = try xml .Doc .from_memory (module_text );
0 commit comments