@@ -16,7 +16,7 @@ int main(int argc, char **argv)
1616 PedDisk * disk = NULL ;
1717 char * user_dev ;
1818 char buf [128 ];
19- size_t n = sizeof (buf );
19+ size_t n = 0 , left = sizeof (buf ) - 1 ;
2020
2121 user_dev = argc > 1 ? argv [1 ] : NULL ;
2222
@@ -29,24 +29,20 @@ int main(int argc, char **argv)
2929 if (part -> num < 0 )
3030 continue ;
3131 memset (buf , 0 , sizeof (buf ));
32- snprintf (buf , sizeof ( buf ) - 1 , "%s%d:" , dev -> path , part -> num );
33- n -= strlen ( buf ) + 1 ;
32+ n += snprintf (buf , left , "%s%d:" , dev -> path , part -> num );
33+ left -= n ;
3434 while ((flag = ped_partition_flag_next (flag ))) {
35- if (ped_partition_get_flag (part , flag )) {
36- if (n > 0 ) {
37- strncat (buf , ped_partition_flag_get_name (flag ), n );
38- n = sizeof (buf ) - strlen (buf ) - 1 ;
39- }
40- if (n > 0 ) {
41- strncat (buf , "," , n );
42- n -- ;
43- }
35+ if (ped_partition_get_flag (part , flag ) && left > 0 ) {
36+ n += snprintf (& buf [n ], left , "%s," , ped_partition_flag_get_name (flag ));
37+ left -= n ;
4438 }
4539 }
46- if (buf [strlen ( buf ) - 1 ] == ',' )
47- buf [strlen ( buf ) - 1 ] = '\0' ;
40+ if (buf [n - 1 ] == ',' )
41+ buf [n - 1 ] = '\0' ;
4842 printf ("%s\n" , buf );
43+ left = sizeof (buf ) - 1 ;
4944 flag = 0 ;
45+ n = 0 ;
5046 }
5147 part = NULL ;
5248 ped_disk_destroy (disk );
0 commit comments