[PATCH] Cygwin: Add /dev/disk/by-label and /dev/disk/by-uuid symlinks

Corinna Vinschen corinna-cygwin@cygwin.com
Mon Nov 20 09:40:53 GMT 2023


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


More information about the Cygwin-patches mailing list