function msum_maybe_add_roles($user_login)
{
    $userdata = get_userdatabylogin($user_login);
    if ($userdata != false && get_user_meta($userdata->ID, 'msum_has_caps', true) != 'true') {
        msum_add_roles($userdata->ID);
    }
}
/**
 * The 'wpmu_activate_user', 'wpmu_new_user' & 'wpmu_activate_blog' actions can only be 
 * hooked if the plugin is in the mu-plugins folder, which is a PITA. 
 * 
 * This function calls @see msum_add_roles from the 'wp_login' action.  
 */
function msum_maybe_add_roles($user_login)
{
    if (function_exists('get_user_by')) {
        $userdata = get_user_by('login', $user_login);
    } else {
        $userdata = get_userdatabylogin($user_login);
    }
    if ($userdata != false && get_user_meta($userdata->ID, 'msum_has_caps', true) != 'true') {
        msum_add_roles($userdata->ID);
    }
}