Eliminate a now pointless loop. Done as a separate patch to make the effects of upcoming changes more clear. Signed-off-by: Alex Elder <aelder@xxxxxxx> --- db/metadump.c | 129 ++++++++++++++++++++++++++++------------------------------ 1 file changed, 63 insertions(+), 66 deletions(-) Index: b/db/metadump.c =================================================================== --- a/db/metadump.c +++ b/db/metadump.c @@ -443,80 +443,77 @@ generate_obfuscated_name( if (*name == '/') name++; do { + uchar_t high_bit; + dup = 0; - for (;;) { - uchar_t high_bit; - /* - * The beginning of the obfuscated name can - * be pretty much anything, so fill it in - * with random characters. - */ - newhash = 0; - for (i = 0; i < namelen - 5; i++) { - newp[i] = random_filename_char(); - newhash = newp[i] ^ rol32(newhash, 7); - } + /* + * The beginning of the obfuscated name can be + * pretty much anything, so fill it in with random + * characters. + */ + newhash = 0; + for (i = 0; i < namelen - 5; i++) { + newp[i] = random_filename_char(); + newhash = newp[i] ^ rol32(newhash, 7); + } - /* - * Compute which five bytes need to be used - * at the end of the name so the hash of the - * obfuscated is the same as the hash of the - * original. If any result in an invalid - * character, flip a bit and arrange for a - * corresponding bit in a neighboring byte - * to be flipped as well. For the last - * byte, the "neighbor" to change is the - * first byte we're computing here. - */ - newhash = rol32(newhash, 3) ^ hash; + /* + * Compute which five bytes need to be used at the + * end of the name so the hash of the obfuscated is + * the same as the hash of the original. If any + * result in an invalid character, flip a bit and + * arrange for a corresponding bit in a neighboring + * byte to be flipped as well. For the last byte, + * the "neighbor" to change is the first byte we're + * computing here. + */ + newhash = rol32(newhash, 3) ^ hash; + + high_bit = 0; + newp[namelen - 5] = (newhash >> 28) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 5])) { + newp[namelen - 5] ^= 1; + high_bit = 0x80; + } else high_bit = 0; - newp[namelen - 5] = (newhash >> 28) & 0x7f ^ high_bit; + newp[namelen - 4] = (newhash >> 21) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 4])) { + newp[namelen - 4] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + newp[namelen - 3] = (newhash >> 14) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 3])) { + newp[namelen - 3] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + newp[namelen - 2] = (newhash >> 7) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 2])) { + newp[namelen - 2] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + newp[namelen - 1] = (newhash >> 0) & 0x7f ^ high_bit; + if (is_invalid_char(newp[namelen - 1])) { + newp[namelen - 1] ^= 1; + high_bit = 0x80; + } else + high_bit = 0; + + if (high_bit) { + newp[namelen - 5] ^= 0x10; if (is_invalid_char(newp[namelen - 5])) { - newp[namelen - 5] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 4] = (newhash >> 21) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 4])) { - newp[namelen - 4] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 3] = (newhash >> 14) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 3])) { - newp[namelen - 3] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 2] = (newhash >> 7) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 2])) { - newp[namelen - 2] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - newp[namelen - 1] = (newhash >> 0) & 0x7f ^ high_bit; - if (is_invalid_char(newp[namelen - 1])) { - newp[namelen - 1] ^= 1; - high_bit = 0x80; - } else - high_bit = 0; - - if (high_bit) { - newp[namelen - 5] ^= 0x10; - if (is_invalid_char(newp[namelen - 5])) { - newp[namelen - 1] ^= 2; - newp[namelen - 5] ^= 0x20; - ASSERT(!is_invalid_char(newp[namelen - 1])); - } + newp[namelen - 1] ^= 2; + newp[namelen - 5] ^= 0x20; + ASSERT(!is_invalid_char(newp[namelen - 1])); } - break; } ASSERT(libxfs_da_hashname(newname, namelen) == hash); _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs