On Thu, Jul 10, 2025 at 11:55 PM David E. Wheeler <da...@justatheory.com>
wrote:

> On Jul 10, 2025, at 16:38, Florents Tselai <florents.tse...@gmail.com>
> wrote:
>
> > Why isn’t this sufficient?
> >
> > static uint64
> > pg_base64_encode_internal(const char *src, size_t len, char *dst, bool
> url)
> > {
> > const char *alphabet = url ? _base64url : _base64;
>
> Ah, it is. I hadn’t got that far. I was tripped up to see this in your
> patch:
>
> ```patch
> +static uint64
> +pg_base64url_encode(const char *src, size_t len, char *dst)
> +{
> +       uint64 encoded_len;
> +       if (len == 0)
> +               return 0;
> +
> +       encoded_len = pg_base64_encode(src, len, dst);
> +
> +       /* Convert Base64 to Base64URL */
> +       for (uint64 i = 0; i < encoded_len; i++) {
> +               if (dst[i] == '+')
> +                       dst[i] = '-';
> +               else if (dst[i] == '/')
> +                       dst[i] = '_';
> +       }
> +
> +       /* Trim '=' padding */
> +       while (encoded_len > 0 && dst[encoded_len - 1] == '=')
> +               encoded_len--;
> +
> +       return encoded_len;
> +}
> ```
>
> I didn’t realize it was a set of patches for stuff you did and then later
> undid. Could you flatten the patch into just what’s changed at the end?
>

 Attached

Attachment: v4-0001-Add-base64url.patch
Description: Binary data

Reply via email to