Re: ANN: lynx2.9.0dev.7

Steffen Nurpmeso <[email protected]>
Newsgroups gmane.comp.web.lynx.devel
Message-ID <20210727140412.0Fn0_%[email protected]>
Gisle Vanem wrote in
 <[email protected]>:
 |> * modify SGML parsing to allow DEL and INS tags to work on a block-level \
 |> rather
 |>    than only inline (Debian #981351) -TD
 |> * modify configure script to check for libidn2, add options menu \
 |> setting for
 |
 |Tried building with 'libidn':
 |   WWW/Library/Implementation/HTParse.c(29): fatal error C1083:
 |   Cannot open include file: 'idn2.h': No such file or directory
 |
 |There is no 'idn2.h' in libidna. But including
 |'idna.h + 'idn-free.h' works.
 |
 |But then this error too:
 |   WWW/Library/Implementation/HTParse.c(340):
 |   error C2065: 'IDN2_OK': undeclared identifier

Heck there is also idnkit 1 + 2, and i also felt it is a pity
noone uses it!
My MUA can (should be able to) use idnkit 1 + 2, libidn and
libidn2, though the new versions of the latter two have not been
tested yet.  Also i did not know about the bugs the lynx code
mentioned for elder libidn2 implementations!

  #ifdef mx_HAVE_IDNA
  # if mx_HAVE_IDNA == n_IDNA_IMPL_LIBIDN2
  #  include <idn2.h>
  # elif mx_HAVE_IDNA == n_IDNA_IMPL_LIBIDN
  #  include <idna.h>
  #  include <idn-free.h>
  # elif mx_HAVE_IDNA == n_IDNA_IMPL_IDNKIT
  #  include <idn/api.h>
  # endif
  #endif

  ...

  #ifdef mx_HAVE_IDNA
  FL boole
  n_idna_to_ascii(struct n_string *out, char const *ibuf, uz ilen){
     char *idna_utf8;
     boole lofi, rv;
     NYD_IN;
  
     if(ilen == UZ_MAX)
        ilen = su_cs_len(ibuf);
  
     lofi = FAL0;
  
     if((rv = (ilen == 0)))
        goto jleave;
     if(ibuf[ilen] != '\0'){
        lofi = TRU1;
        idna_utf8 = n_lofi_alloc(ilen +1);
        su_mem_copy(idna_utf8, ibuf, ilen);
        idna_utf8[ilen] = '\0';
        ibuf = idna_utf8;
     }
     ilen = 0;
  
  # ifndef mx_HAVE_ALWAYS_UNICODE_LOCALE
     if(n_psonce & n_PSO_UNICODE)
  # endif
        idna_utf8 = n_UNCONST(ibuf);
  # ifndef mx_HAVE_ALWAYS_UNICODE_LOCALE
     else if((idna_utf8 = n_iconv_onetime_cp(n_ICONV_NONE, "utf-8",
           ok_vlook(ttycharset), ibuf)) == NULL)
        goto jleave;
  # endif

  # if mx_HAVE_IDNA == n_IDNA_IMPL_LIBIDN2
     /* C99 */{
        char *idna_ascii;
        int f, rc;
  
        f = IDN2_NONTRANSITIONAL;
  jidn2_redo:
        if((rc = idn2_to_ascii_8z(idna_utf8, &idna_ascii, f)) == IDN2_OK){
           out = n_string_assign_cp(out, idna_ascii);
           idn2_free(idna_ascii);
           rv = TRU1;
           ilen = out->s_len;
        }else if(rc == IDN2_DISALLOWED && f != IDN2_TRANSITIONAL){
           f = IDN2_TRANSITIONAL;
           goto jidn2_redo;
        }
     }
  
  # elif mx_HAVE_IDNA == n_IDNA_IMPL_LIBIDN
     /* C99 */{
        char *idna_ascii;
  
        if(idna_to_ascii_8z(idna_utf8, &idna_ascii, 0) == IDNA_SUCCESS){
           out = n_string_assign_cp(out, idna_ascii);
           idn_free(idna_ascii);
           rv = TRU1;
           ilen = out->s_len;
        }
     }
  
  # elif mx_HAVE_IDNA == n_IDNA_IMPL_IDNKIT
     ilen = su_cs_len(idna_utf8);
  jredo:
     switch(idn_encodename(
        /* LOCALCONV changed meaning in v2 and is no longer available for
         * encoding.  This makes sense, bu */
           (
  #  ifdef IDN_UNICODECONV /* v2 */
           IDN_ENCODE_APP & ~IDN_UNICODECONV
  #  else
           IDN_DELIMMAP | IDN_LOCALMAP | IDN_NAMEPREP | IDN_IDNCONV |
           IDN_LENCHECK | IDN_ASCCHECK
  #  endif
           ), idna_utf8,
           n_string_resize(n_string_trunc(out, 0), ilen)->s_dat, ilen)){
     case idn_buffer_overflow:
        ilen += HOST_NAME_MAX +1;
        goto jredo;
     case idn_success:
        rv = TRU1;
        ilen = su_cs_len(out->s_dat);
        break;
     default:
        ilen = 0;
        break;
     }
  
  # else
  #  error Unknown mx_HAVE_IDNA
  # endif

  jleave:
     if(lofi)
        n_lofi_free(n_UNCONST(ibuf));
     out = n_string_trunc(out, ilen);
     NYD_OU;
     return rv;
  }
  #endif /* mx_HAVE_IDNA */

--steffen
|
|Der Kragenbaer,                The moon bear,
|der holt sich munter           he cheerfully and one by one
|einen nach dem anderen runter  wa.ks himself off
|(By Robert Gernhardt)

_______________________________________________
Lynx-dev mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lynx-dev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.