1818#include "zns.h"
1919
2020static const char * namespace_id = "Namespace identifier to use" ;
21- static const char dash [100 ] = { [0 ... 99 ] = '-' };
2221
2322static int detect_zns (nvme_ns_t ns , int * out_supported )
2423{
@@ -39,7 +38,7 @@ static int detect_zns(nvme_ns_t ns, int *out_supported)
3938 return err ;
4039}
4140
42- static int print_zns_list_ns (nvme_ns_t ns )
41+ static int print_zns_list_ns (nvme_ns_t ns , struct table * t )
4342{
4443 int supported ;
4544 int err = 0 ;
@@ -51,12 +50,12 @@ static int print_zns_list_ns(nvme_ns_t ns)
5150 }
5251
5352 if (supported )
54- nvme_show_list_item (ns );
53+ nvme_show_list_item (ns , t );
5554
5655 return err ;
5756}
5857
59- static int print_zns_list (nvme_root_t nvme_root )
58+ static int print_zns_list (nvme_root_t nvme_root , struct table * t )
6059{
6160 int err = 0 ;
6261 nvme_host_t h ;
@@ -67,14 +66,14 @@ static int print_zns_list(nvme_root_t nvme_root)
6766 nvme_for_each_host (nvme_root , h ) {
6867 nvme_for_each_subsystem (h , s ) {
6968 nvme_subsystem_for_each_ns (s , n ) {
70- err = print_zns_list_ns (n );
69+ err = print_zns_list_ns (n , t );
7170 if (err )
7271 return err ;
7372 }
7473
7574 nvme_subsystem_for_each_ctrl (s , c ) {
7675 nvme_ctrl_for_each_ns (c , n ) {
77- err = print_zns_list_ns (n );
76+ err = print_zns_list_ns (n , t );
7877 if (err )
7978 return err ;
8079 }
@@ -90,21 +89,31 @@ static int list(int argc, char **argv, struct command *cmd,
9089{
9190 int err = 0 ;
9291 nvme_root_t nvme_root ;
93-
94- printf ("%-21s %-20s %-40s %-9s %-26s %-16s %-8s\n" , "Node" , "SN" ,
95- "Model" , "Namespace" , "Usage" , "Format" , "FW Rev" );
96- printf ("%-.21s %-.20s %-.40s %-.9s %-.26s %-.16s %-.8s\n" , dash , dash ,
97- dash , dash , dash , dash , dash );
92+ struct table_column columns [] = {
93+ { "Node" , LEFT , 21 },
94+ { "Generic" , LEFT , 21 },
95+ { "SN" , LEFT , 20 },
96+ { "Model" , LEFT , 40 },
97+ { "Namespace" , LEFT , 10 },
98+ { "Usage" , LEFT , 26 },
99+ { "Format" , LEFT , 16 },
100+ { "FW Rev" , LEFT , 8 },
101+ };
102+ struct table * t = table_init_with_columns (columns , ARRAY_SIZE (columns ));
98103
99104 nvme_root = nvme_scan (NULL );
100- if (nvme_root ) {
101- err = print_zns_list (nvme_root );
102- nvme_free_tree (nvme_root );
103- } else {
105+ if (!nvme_root ) {
104106 fprintf (stderr , "Failed to scan nvme subsystems\n" );
105- err = - errno ;
107+ return - errno ;
106108 }
107109
110+ err = print_zns_list (nvme_root , t );
111+ nvme_free_tree (nvme_root );
112+
113+ table_print (t );
114+
115+ table_free (t );
116+
108117 return err ;
109118}
110119
0 commit comments