On Fri, Feb 18, 2011 at 03:21:02PM -0600, Alex Elder wrote:
> There is probably not much need for an extreme amount of randomness
> in the obfuscated names produced in metadumps. Limit the character
> set used for (most of) these names to printable characters rather
> than every permittable byte. The result makes metadumps a bit more
> natural to work with.
>
> I chose the set of all upper- and lower-case letters, digits, and
> the dash and underscore for the alphabet. It could easily be
> expanded to include others (or reduced for that matter).
>
> This change also avoids ever having to retry after picking an
> unusable character.
>
> Signed-off-by: Alex Elder <aelder@xxxxxxx>
>
> No significant changes in this version from the last version posted.
>
> ---
> db/metadump.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> Index: b/db/metadump.c
> ===================================================================
> --- a/db/metadump.c
> +++ b/db/metadump.c
> @@ -412,12 +412,11 @@ nametable_add(xfs_dahash_t hash, int nam
> static inline uchar_t
> random_filename_char(void)
> {
> - uchar_t c;
> + static uchar_t filename_alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
> + "abcdefghijklmnopqrstuvwxyz"
> + "0123456789-_";
>
> - do {
> - c = random() % 127 + 1;
> - } while (c == '/');
> - return c;
> + return filename_alphabet[random() % (sizeof filename_alphabet - 1)];
> }
Why not just:
do {
c = random() % 127 + 1;
} while (!isalnum(c));
return c;
Cheers,
Dave.
--
Dave Chinner
david@xxxxxxxxxxxxx
|