Hi Christian, This puzzles me:
On Nov 17 21:25, Christian Franke wrote: > @@ -610,7 +607,7 @@ get_by_id_table (by_id_entry * &table, > fhandler_dev_disk::dev_disk_location loc) > if (!table) > return (errno_set ? -1 : 0); > > - /* Sort by name and remove duplicates. */ > + /* Sort by name and mark duplicates. */ > qsort (table, table_size, sizeof (*table), by_id_compare_name); > for (unsigned i = 0; i < table_size; i++) by_id_compare_name only compars the actual names... > { > @@ -619,12 +616,13 @@ get_by_id_table (by_id_entry * &table, > fhandler_dev_disk::dev_disk_location loc) > j++; > if (j == i + 1) > continue; > - /* Duplicate(s) found, remove all entries with this name. */ > - debug_printf ("removing duplicates %d-%d: '%s'", i, j - 1, > table[i].name); > - if (j < table_size) > - memmove (table + i, table + j, (table_size - j) * sizeof (*table)); > - table_size -= j - i; > - i--; > + /* Duplicate(s) found, append "#N" to all entries. This never ...but the names are identical. So the *order* within the identically named entries depends on qsort's reshuffling of table entries. Which in turn depends on outside factors like number of table entries and the ultimate position of the identical entries within the ordered table. Having said that, I don't see how adding ordinals to the names can be unambiguous. AFAICS, the numbers may change by just adding another disk (USB Stick) to the system... Thanks, Corinna