Upstream Links 2.29

This commit is contained in:
Juhani Krekelä 2023-04-06 20:18:18 +03:00
parent c5df2f9b41
commit adc4c50290
33 changed files with 1704 additions and 1056 deletions

View File

@ -399,3 +399,12 @@ zinov@waifu.club:
Martin Michel <martin.famic.de>: Martin Michel <martin.famic.de>:
Updated the German translation Updated the German translation
Updated the initial bookmarks Updated the initial bookmarks
notcancername <notcancername@protonmail.com>
Support AVIF images
Juhani Krekela <juhani@krekela.fi>
Implement strike formatting
Florian Weimer <fweimer@redhat.com>
Add "#define _GNU_SOURCE" to the configure test for memrchr

View File

@ -1,3 +1,29 @@
=== RELEASE 2.29 ===
Thu Mar 9 19:51:20 CET 2023 Florian Weimer <fweimer@redhat.com>:
Add "#define _GNU_SOURCE" to the configure test for memrchr
Thu Mar 9 18:37:12 CET 2023 Juhani Krekela <juhani@krekela.fi>:
Implement strike formatting
Wed Mar 8 20:08:01 CET 2023 mikulas:
Fixed a bug that image was sometimes displayed with too small size
Mon Jan 23 19:25:18 CET 2023 mikulas:
Fixed a bug that webp images from local disk could not be displayed
Mon Jan 23 19:24:06 CET 2023 notcancername <notcancername@protonmail.com>:
Support AVIF images
Sun Oct 9 15:54:06 CEST 2022 Jakub Bogusz <qboosh@pld-linux.org>:
Updated Polish Translation
=== RELEASE 2.28 === === RELEASE 2.28 ===
Sat Sep 17 21:54:44 CEST 2022 mikulas: Sat Sep 17 21:54:44 CEST 2022 mikulas:

View File

@ -1,4 +1,4 @@
Links 2.28 -- How To Install Links 2.29 -- How To Install
---------------------------- ----------------------------
Follow this step-by-step: Follow this step-by-step:

View File

@ -24,7 +24,7 @@ if JAVASCRIPT
links_LDADD=builtin.o context.o ipret.o javascr.o javascript.o md5.o md5hl.o ns.o pomocny.o regexp.o links_LDADD=builtin.o context.o ipret.o javascr.o javascript.o md5.o md5hl.o ns.o pomocny.o regexp.o
endif endif
links_SOURCES=af_unix.c auth.c beos.c bfu.c block.c bookmark.c cache.c charsets.c compress.c connect.c cookies.c data.c default.c dip.c directfb.c dither.c dns.c doh.c dos.c drivers.c error.c file.c finger.c fn_impl.c fontconf.c font_inc.c framebuf.c freetype.c ftp.c gif.c grx.c hpux.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c string.c suffix.c svg.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c vms.c webp.c x.c xbm.c beos.h bits.h cfg.h codepage.h com-defs.h config-vms.h dfb_cur.h hpux.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc certs.inc codepage.inc entity.inc fbcommon.inc language.inc links_ic.inc locase.inc suffix.inc suffix_x.inc uni_7b.inc upcase.inc vpipe.inc links_SOURCES=af_unix.c avif.c auth.c beos.c bfu.c block.c bookmark.c cache.c charsets.c compress.c connect.c cookies.c data.c default.c dip.c directfb.c dither.c dns.c doh.c dos.c drivers.c error.c file.c finger.c fn_impl.c fontconf.c font_inc.c framebuf.c freetype.c ftp.c gif.c grx.c hpux.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c string.c suffix.c svg.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c vms.c webp.c x.c xbm.c beos.h bits.h cfg.h codepage.h com-defs.h config-vms.h dfb_cur.h hpux.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc certs.inc codepage.inc entity.inc fbcommon.inc language.inc links_ic.inc locase.inc suffix.inc suffix_x.inc uni_7b.inc upcase.inc vpipe.inc
# builtin.c context.c ipret.c javascr.c javascript.c md5.c md5hl.c ns.c pomocny.c regexp.c md5.h ns.h struct.h tree.h typy.h ipret.h javascript.h builtin.h builtin_keys.h # builtin.c context.c ipret.c javascr.c javascript.c md5.c md5hl.c ns.c pomocny.c regexp.c md5.h ns.h struct.h tree.h typy.h ipret.h javascript.h builtin.h builtin_keys.h
dist-hook: dist-hook:
@ -45,4 +45,3 @@ haiku.o: $(srcdir)/haiku.cpp
datadir = $(prefix)/@DATADIRNAME@ datadir = $(prefix)/@DATADIRNAME@
LIBS = @LIBS@ LIBS = @LIBS@

View File

@ -78,7 +78,7 @@ bin_PROGRAMS = links
@HAIKU_GR_TRUE@links_LDADD = haiku.o @HAIKU_GR_TRUE@links_LDADD = haiku.o
@JAVASCRIPT_TRUE@links_LDADD = builtin.o context.o ipret.o javascr.o javascript.o md5.o md5hl.o ns.o pomocny.o regexp.o @JAVASCRIPT_TRUE@links_LDADD = builtin.o context.o ipret.o javascr.o javascript.o md5.o md5hl.o ns.o pomocny.o regexp.o
links_SOURCES = af_unix.c auth.c beos.c bfu.c block.c bookmark.c cache.c charsets.c compress.c connect.c cookies.c data.c default.c dip.c directfb.c dither.c dns.c doh.c dos.c drivers.c error.c file.c finger.c fn_impl.c fontconf.c font_inc.c framebuf.c freetype.c ftp.c gif.c grx.c hpux.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c string.c suffix.c svg.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c vms.c webp.c x.c xbm.c beos.h bits.h cfg.h codepage.h com-defs.h config-vms.h dfb_cur.h hpux.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc certs.inc codepage.inc entity.inc fbcommon.inc language.inc links_ic.inc locase.inc suffix.inc suffix_x.inc uni_7b.inc upcase.inc vpipe.inc links_SOURCES = af_unix.c avif.c auth.c beos.c bfu.c block.c bookmark.c cache.c charsets.c compress.c connect.c cookies.c data.c default.c dip.c directfb.c dither.c dns.c doh.c dos.c drivers.c error.c file.c finger.c fn_impl.c fontconf.c font_inc.c framebuf.c freetype.c ftp.c gif.c grx.c hpux.c html.c html_gr.c html_r.c html_tbl.c http.c https.c img.c imgcache.c jpeg.c jsint.c kbd.c language.c listedit.c lru.c mailto.c main.c memory.c menu.c objreq.c os_dep.c pmshell.c png.c sched.c select.c session.c smb.c string.c suffix.c svg.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c vms.c webp.c x.c xbm.c beos.h bits.h cfg.h codepage.h com-defs.h config-vms.h dfb_cur.h hpux.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc certs.inc codepage.inc entity.inc fbcommon.inc language.inc links_ic.inc locase.inc suffix.inc suffix_x.inc uni_7b.inc upcase.inc vpipe.inc
CXXFLAGS = @CXXFLAGS@ CXXFLAGS = @CXXFLAGS@
@ -94,7 +94,7 @@ PROGRAMS = $(bin_PROGRAMS)
DEFS = @DEFS@ -I. -I$(srcdir) -I. DEFS = @DEFS@ -I. -I$(srcdir) -I.
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
links_OBJECTS = af_unix.o auth.o beos.o bfu.o block.o bookmark.o \ links_OBJECTS = af_unix.o avif.o auth.o beos.o bfu.o block.o bookmark.o \
cache.o charsets.o compress.o connect.o cookies.o data.o default.o \ cache.o charsets.o compress.o connect.o cookies.o data.o default.o \
dip.o directfb.o dither.o dns.o doh.o dos.o drivers.o error.o file.o \ dip.o directfb.o dither.o dns.o doh.o dos.o drivers.o error.o file.o \
finger.o fn_impl.o fontconf.o font_inc.o framebuf.o freetype.o ftp.o \ finger.o fn_impl.o fontconf.o font_inc.o framebuf.o freetype.o ftp.o \
@ -103,10 +103,10 @@ img.o imgcache.o jpeg.o jsint.o kbd.o language.o listedit.o lru.o \
mailto.o main.o memory.o menu.o objreq.o os_dep.o pmshell.o png.o \ mailto.o main.o memory.o menu.o objreq.o os_dep.o pmshell.o png.o \
sched.o select.o session.o smb.o string.o suffix.o svg.o svgalib.o \ sched.o select.o session.o smb.o string.o suffix.o svg.o svgalib.o \
terminal.o tiff.o types.o url.o view.o view_gr.o vms.o webp.o x.o xbm.o terminal.o tiff.o types.o url.o view.o view_gr.o vms.o webp.o x.o xbm.o
@ATHEOS_GR_TRUE@links_DEPENDENCIES = atheos.o
@JAVASCRIPT_TRUE@links_DEPENDENCIES = builtin.o context.o ipret.o \ @JAVASCRIPT_TRUE@links_DEPENDENCIES = builtin.o context.o ipret.o \
@JAVASCRIPT_TRUE@javascr.o javascript.o md5.o md5hl.o ns.o pomocny.o \ @JAVASCRIPT_TRUE@javascr.o javascript.o md5.o md5hl.o ns.o pomocny.o \
@JAVASCRIPT_TRUE@regexp.o @JAVASCRIPT_TRUE@regexp.o
@ATHEOS_GR_TRUE@links_DEPENDENCIES = atheos.o
@HAIKU_GR_TRUE@links_DEPENDENCIES = haiku.o @HAIKU_GR_TRUE@links_DEPENDENCIES = haiku.o
links_LDFLAGS = links_LDFLAGS =
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
@ -352,6 +352,8 @@ af_unix.o: af_unix.c links.h cfg.h config.h com-defs.h os_dep.h \
os_depx.h setup.h language.h codepage.h os_depx.h setup.h language.h codepage.h
auth.o: auth.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \ auth.o: auth.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
setup.h language.h codepage.h setup.h language.h codepage.h
avif.o: avif.c cfg.h config.h links.h com-defs.h os_dep.h os_depx.h \
setup.h language.h codepage.h
beos.o: beos.c beos.o: beos.c
bfu.o: bfu.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \ bfu.o: bfu.c links.h cfg.h config.h com-defs.h os_dep.h os_depx.h \
setup.h language.h codepage.h setup.h language.h codepage.h

View File

@ -244,5 +244,8 @@
/* WebP */ /* WebP */
#undef HAVE_WEBP #undef HAVE_WEBP
/* AVIF */
#undef HAVE_AVIF
/* Gpm_Event has wdx and wdy */ /* Gpm_Event has wdx and wdy */
#undef HAVE_WDX_WDY #undef HAVE_WDX_WDY

105
avif.c Normal file
View File

@ -0,0 +1,105 @@
#include "cfg.h"
#ifdef G
#include "links.h"
#ifdef HAVE_AVIF
#include <avif/avif.h>
struct avif_decoder {
unsigned char *buffer;
int len;
};
void avif_start(struct cached_image *cimg)
{
struct avif_decoder *deco;
deco = mem_alloc(sizeof(struct avif_decoder));
deco->buffer = init_str();
deco->len = 0;
cimg->decoder = deco;
}
void avif_restart(struct cached_image *cimg, unsigned char *data, int length)
{
struct avif_decoder *deco = (struct avif_decoder *)cimg->decoder;
add_bytes_to_str(&deco->buffer, &deco->len, data, length);
}
void avif_finish(struct cached_image *cimg)
{
avifRGBImage ari;
struct avif_decoder *deco;
avifDecoder *decoder;
memset(&ari, 0, sizeof(avifRGBImage));
deco = (struct avif_decoder *)cimg->decoder;
decoder = avifDecoderCreate();
if (!decoder)
goto end;
#if AVIF_VERSION > 90001
decoder->strictFlags = AVIF_STRICT_DISABLED;
#endif
decoder->ignoreExif = 1;
decoder->ignoreXMP = 1;
if (avifDecoderSetIOMemory(decoder, deco->buffer, deco->len) != AVIF_RESULT_OK)
goto destroy_decoder;
if (avifDecoderParse(decoder) != AVIF_RESULT_OK)
goto destroy_decoder;
cimg->width = decoder->image->width;
cimg->height = decoder->image->height;
cimg->buffer_bytes_per_pixel = 4;
cimg->red_gamma = cimg->green_gamma = cimg->blue_gamma = (float)sRGB_gamma;
cimg->strip_optimized = 0;
if (avifDecoderNextImage(decoder) != AVIF_RESULT_OK)
goto destroy_decoder;
avifRGBImageSetDefaults(&ari, decoder->image);
ari.depth = 8;
ari.format = AVIF_RGB_FORMAT_RGBA;
if (header_dimensions_known(cimg))
goto destroy_decoder;
ari.pixels = cimg->buffer;
ari.rowBytes = (unsigned)cimg->width * 4;
if (avifImageYUVToRGB(decoder->image, &ari) != AVIF_RESULT_OK)
goto destroy_decoder;
destroy_decoder:
avifDecoderDestroy(decoder);
end:
img_end(cimg);
}
void avif_destroy_decoder(struct cached_image *cimg)
{
struct avif_decoder *deco = (struct avif_decoder *)cimg->decoder;
mem_free(deco->buffer);
}
void add_avif_version(unsigned char **s, int *l)
{
add_to_str(s, l, cast_uchar "AVIF (");
add_num_to_str(s, l, AVIF_VERSION_MAJOR);
add_chr_to_str(s, l, '.');
add_num_to_str(s, l, AVIF_VERSION_MINOR);
add_chr_to_str(s, l, '.');
add_num_to_str(s, l, AVIF_VERSION_PATCH);
#ifdef AVIF_VERSION_DEVEL
if (AVIF_VERSION_DEVEL) {
add_chr_to_str(s, l, '-');
add_num_to_str(s, l, AVIF_VERSION_DEVEL);
}
#endif
add_chr_to_str(s, l, ')');
}
#endif
#endif

View File

@ -232,9 +232,7 @@ void detach_cache_entry(struct cache_entry *e)
static void mem_free_fragment(struct fragment *f) static void mem_free_fragment(struct fragment *f)
{ {
size_t s = (size_t)f->length;
mem_free(f); mem_free(f);
s += sizeof(struct fragment);
} }
#define sf(x) e->data_size += (x), cache_size += (my_uintptr_t)(x) #define sf(x) e->data_size += (x), cache_size += (my_uintptr_t)(x)
@ -477,6 +475,11 @@ void delete_cache_entry(struct cache_entry *e)
mem_free(e); mem_free(e);
} }
void finish_cache_entry(struct cache_entry *e)
{
e->count = cache_count++;
}
static int shrink_file_cache(int u) static int shrink_file_cache(int u)
{ {
int r = 0; int r = 0;

View File

@ -558,6 +558,9 @@
/* Define if you have the <atheos/threads.h> header file. */ /* Define if you have the <atheos/threads.h> header file. */
/* #undef HAVE_ATHEOS_THREADS_H */ /* #undef HAVE_ATHEOS_THREADS_H */
/* Define if you have the <avif/avif.h> header file. */
/* #undef HAVE_AVIF_AVIF_H */
/* Define if you have the <brotli/decode.h> header file. */ /* Define if you have the <brotli/decode.h> header file. */
/* #undef HAVE_BROTLI_DECODE_H */ /* #undef HAVE_BROTLI_DECODE_H */
@ -828,6 +831,9 @@
/* Define if you have the atheos library (-latheos). */ /* Define if you have the atheos library (-latheos). */
/* #undef HAVE_LIBATHEOS */ /* #undef HAVE_LIBATHEOS */
/* Define if you have the avif library (-lavif). */
/* #undef HAVE_LIBAVIF */
/* Define if you have the be library (-lbe). */ /* Define if you have the be library (-lbe). */
/* #undef HAVE_LIBBE */ /* #undef HAVE_LIBBE */
@ -934,11 +940,11 @@
#define PACKAGE "links" #define PACKAGE "links"
/* Version number of package */ /* Version number of package */
#define VERSION "2.28" #define VERSION "2.29"
/* */ /* */
#define VERSION "2.28" #define VERSION "2.29"
/* */ /* */
/* #undef HAVE_OPENMP */ /* #undef HAVE_OPENMP */
@ -1174,5 +1180,8 @@
/* WebP */ /* WebP */
/* #undef HAVE_WEBP */ /* #undef HAVE_WEBP */
/* AVIF */
/* #undef HAVE_AVIF */
/* Gpm_Event has wdx and wdy */ /* Gpm_Event has wdx and wdy */
/* #undef HAVE_WDX_WDY */ /* #undef HAVE_WDX_WDY */

View File

@ -572,6 +572,9 @@
/* Define if you have the <atheos/threads.h> header file. */ /* Define if you have the <atheos/threads.h> header file. */
#undef HAVE_ATHEOS_THREADS_H #undef HAVE_ATHEOS_THREADS_H
/* Define if you have the <avif/avif.h> header file. */
#undef HAVE_AVIF_AVIF_H
/* Define if you have the <brotli/decode.h> header file. */ /* Define if you have the <brotli/decode.h> header file. */
#undef HAVE_BROTLI_DECODE_H #undef HAVE_BROTLI_DECODE_H
@ -848,6 +851,9 @@
/* Define if you have the atheos library (-latheos). */ /* Define if you have the atheos library (-latheos). */
#undef HAVE_LIBATHEOS #undef HAVE_LIBATHEOS
/* Define if you have the avif library (-lavif). */
#undef HAVE_LIBAVIF
/* Define if you have the be library (-lbe). */ /* Define if you have the be library (-lbe). */
#undef HAVE_LIBBE #undef HAVE_LIBBE
@ -1203,5 +1209,8 @@
/* WebP */ /* WebP */
#undef HAVE_WEBP #undef HAVE_WEBP
/* AVIF */
#undef HAVE_AVIF
/* Gpm_Event has wdx and wdy */ /* Gpm_Event has wdx and wdy */
#undef HAVE_WDX_WDY #undef HAVE_WDX_WDY

1492
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@
AC_INIT(main.c) AC_INIT(main.c)
AM_INIT_AUTOMAKE(links, 2.28) AM_INIT_AUTOMAKE(links, 2.29)
ACLOCAL="./missing aclocal" ACLOCAL="./missing aclocal"
AUTOCONF="./missing autoconf" AUTOCONF="./missing autoconf"
@ -410,7 +410,8 @@ fi
AC_HAVE_FUNCS(memrchr) AC_HAVE_FUNCS(memrchr)
AC_CACHE_CHECK([for memrchr], ac_cv_have_memrchr, AC_CACHE_CHECK([for memrchr], ac_cv_have_memrchr,
AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; volatile int l = 1; return !!memrchr(str, 0, l);], ac_cv_have_memrchr=yes, ac_cv_have_memrchr=no) AC_TRY_LINK([#define _GNU_SOURCE
#include <string.h>], [char * volatile str = ""; volatile int l = 1; return !!memrchr(str, 0, l);], ac_cv_have_memrchr=yes, ac_cv_have_memrchr=no)
) )
if test "$ac_cv_have_memrchr" = yes; then if test "$ac_cv_have_memrchr" = yes; then
AC_DEFINE(HAVE_MEMRCHR) AC_DEFINE(HAVE_MEMRCHR)
@ -1489,6 +1490,19 @@ fi
fi fi
fi fi
AC_ARG_WITH(libavif, [ --without-libavif compile without AVIF support],[if test "$withval" = no; then disable_avif=yes; else disable_avif=no; fi])
cf_have_avif=no
if test "$disable_avif" != yes; then
AC_CHECK_HEADERS(avif/avif.h)
AC_CHECK_LIB(avif, avifDecoderSetIOMemory)
if test "$ac_cv_header_avif_avif_h" = yes && test "$ac_cv_lib_avif_avifDecoderSetIOMemory" = yes; then
AC_DEFINE(HAVE_AVIF)
cf_have_avif=yes
image_formats="$image_formats AVIF"
fi
fi
if test -z "$drivers" && test "$cf_use_graphics" != no; then if test -z "$drivers" && test "$cf_use_graphics" != no; then
AC_MSG_ERROR([No graphics drivers found.]) AC_MSG_ERROR([No graphics drivers found.])
dnl else dnl else
@ -1577,4 +1591,3 @@ fi
dnl mv Makefile Makefile.tmp dnl mv Makefile Makefile.tmp
dnl grep -v DEPS_MAGIC Makefile.tmp >Makefile dnl grep -v DEPS_MAGIC Makefile.tmp >Makefile
dnl rm Makefile.tmp dnl rm Makefile.tmp

View File

@ -76,7 +76,7 @@ CFLAGS=/DEFINE=(HAVE_CONFIG_VMS_H$(DEFS_OPTIMIZE)$(DEFS_SSL)$(DEFS_GFX)) /INCLUD
LINKFLAGS=$(LIBS_SSL)$(LIBS_GFX)/MAP/FULL/THREADS_ENABLE LINKFLAGS=$(LIBS_SSL)$(LIBS_GFX)/MAP/FULL/THREADS_ENABLE
OBJS=AF_UNIX.OBJ,AUTH.OBJ,BEOS.OBJ,BFU.OBJ,BLOCK.OBJ,BOOKMARK.OBJ,CACHE.OBJ,CHARSETS.OBJ,COMPRESS.OBJ,CONNECT.OBJ,COOKIES.OBJ,DATA.OBJ,DEFAULT.OBJ,DIP.OBJ,DIRECTFB.OBJ,DITHER.OBJ,DNS.OBJ,DOH.OBJ,DOS.OBJ,DRIVERS.OBJ,ERROR.OBJ,FILE.OBJ,FINGER.OBJ,FN_IMPL.OBJ,FONT_INC.OBJ,FRAMEBUF.OBJ,FTP.OBJ,GIF.OBJ,HPUX.OBJ,HTML.OBJ,HTML_GR.OBJ,HTML_R.OBJ,HTML_TBL.OBJ,HTTP.OBJ,HTTPS.OBJ,IMG.OBJ,IMGCACHE.OBJ,JPEG.OBJ,JSINT.OBJ,KBD.OBJ,LANGUAGE.OBJ,LISTEDIT.OBJ,LRU.OBJ,MAILTO.OBJ,MAIN.OBJ,MEMORY.OBJ,MENU.OBJ,OBJREQ.OBJ,OS_DEP.OBJ,PMSHELL.OBJ,PNG.OBJ,SCHED.OBJ,SELECT.OBJ,SESSION.OBJ,SMB.OBJ,STRING.OBJ,SUFFIX.OBJ,SVG.OBJ,SVGALIB.OBJ,TERMINAL.OBJ,TIFF.OBJ,TYPES.OBJ,URL.OBJ,VIEW.OBJ,VIEW_GR.OBJ,VMS.OBJ,WEBP.OBJ,X.OBJ,XBM.OBJ OBJS=AF_UNIX.OBJ,AUTH.OBJ,AVIF.OBJ,BEOS.OBJ,BFU.OBJ,BLOCK.OBJ,BOOKMARK.OBJ,CACHE.OBJ,CHARSETS.OBJ,COMPRESS.OBJ,CONNECT.OBJ,COOKIES.OBJ,DATA.OBJ,DEFAULT.OBJ,DIP.OBJ,DIRECTFB.OBJ,DITHER.OBJ,DNS.OBJ,DOH.OBJ,DOS.OBJ,DRIVERS.OBJ,ERROR.OBJ,FILE.OBJ,FINGER.OBJ,FN_IMPL.OBJ,FONT_INC.OBJ,FRAMEBUF.OBJ,FTP.OBJ,GIF.OBJ,HPUX.OBJ,HTML.OBJ,HTML_GR.OBJ,HTML_R.OBJ,HTML_TBL.OBJ,HTTP.OBJ,HTTPS.OBJ,IMG.OBJ,IMGCACHE.OBJ,JPEG.OBJ,JSINT.OBJ,KBD.OBJ,LANGUAGE.OBJ,LISTEDIT.OBJ,LRU.OBJ,MAILTO.OBJ,MAIN.OBJ,MEMORY.OBJ,MENU.OBJ,OBJREQ.OBJ,OS_DEP.OBJ,PMSHELL.OBJ,PNG.OBJ,SCHED.OBJ,SELECT.OBJ,SESSION.OBJ,SMB.OBJ,STRING.OBJ,SUFFIX.OBJ,SVG.OBJ,SVGALIB.OBJ,TERMINAL.OBJ,TIFF.OBJ,TYPES.OBJ,URL.OBJ,VIEW.OBJ,VIEW_GR.OBJ,VMS.OBJ,WEBP.OBJ,X.OBJ,XBM.OBJ
LINKS.EXE : $(OBJS) LINKS.EXE : $(OBJS)
$(LINK) /EXECUTABLE=LINKS.EXE $(OBJS)$(LINKFLAGS) $(LINK) /EXECUTABLE=LINKS.EXE $(OBJS)$(LINKFLAGS)

50
dip.c
View File

@ -1996,11 +1996,14 @@ bypass_freetype:
* at least 1 apart * at least 1 apart
* Otherwise g_print_text will print nonsense (but won't segfault) * Otherwise g_print_text will print nonsense (but won't segfault)
*/ */
static void get_underline_pos(int height, int *top, int *bottom) static void get_line_pos(int height, int *top, int *bottom, unsigned style)
{ {
int thickness, baseline; int thickness, baseline;
thickness=(height+15)/16; thickness=(height+15)/16;
baseline=height/7; if (style == FF_STRIKE)
baseline=height/2 - height/12;
else
baseline=height/7;
if (baseline<=0) baseline=1; if (baseline<=0) baseline=1;
if (thickness>baseline) thickness=baseline; if (thickness>baseline) thickness=baseline;
*top=height-baseline; *top=height-baseline;
@ -2010,38 +2013,39 @@ static void get_underline_pos(int height, int *top, int *bottom)
/* *width will be advanced by the width of the text */ /* *width will be advanced by the width of the text */
void g_print_text(struct graphics_device *device, int x, int y, struct style *style, unsigned char *text, int *width) void g_print_text(struct graphics_device *device, int x, int y, struct style *style, unsigned char *text, int *width)
{ {
int top_underline, bottom_underline, original_width, my_width; int top_line, bottom_line, original_width, my_width;
unsigned char original_flags; unsigned char original_flags, line_style;
struct rect saved_clip; struct rect saved_clip;
if (y + style->height <= device->clip.y1 || y >= device->clip.y2) if (y + style->height <= device->clip.y1 || y >= device->clip.y2)
goto o; goto o;
if (style->flags & FF_UNDERLINE) { if (style->flags & FF_UNDERLINE || style->flags & FF_STRIKE) {
/* Underline */ /* Underline or strike */
if (!width) { if (!width) {
width = &my_width; width = &my_width;
*width = 0; *width = 0;
} }
original_flags = style->flags; original_flags = style->flags;
original_width = *width; original_width = *width;
style->flags &= ~FF_UNDERLINE; line_style = style->flags & FF_UNDERLINE ? FF_UNDERLINE : FF_STRIKE;
get_underline_pos(style->height, &top_underline, &bottom_underline); style->flags &= ~line_style;
restrict_clip_area(device, &saved_clip, 0, 0, device->size.x2, y + top_underline); get_line_pos(style->height, &top_line, &bottom_line, line_style);
restrict_clip_area(device, &saved_clip, 0, 0, device->size.x2, y + top_line);
g_print_text(device, x, y, style, text, width); g_print_text(device, x, y, style, text, width);
set_clip_area(device, &saved_clip); set_clip_area(device, &saved_clip);
if (bottom_underline - top_underline == 1) { if (bottom_line - top_line == 1) {
/* Line */ /* Line */
drv->draw_hline(device, x, y + top_underline, safe_add(x, *width) - original_width, style->underline_color); drv->draw_hline(device, x, y + top_line, safe_add(x, *width) - original_width, style->line_color);
} else { } else {
/* Area */ /* Area */
drv->fill_area(device, x, y + top_underline, safe_add(x, *width) - original_width, y + bottom_underline, style->underline_color); drv->fill_area(device, x, y + top_line, safe_add(x, *width) - original_width, y + bottom_line, style->line_color);
} }
if (bottom_underline < style->height) { if (bottom_line < style->height) {
/* Do the bottom half only if the underline is above /* Do the bottom half only if the line is above
* the bottom of the letters. * the bottom of the letters.
*/ */
*width = original_width; *width = original_width;
restrict_clip_area(device, &saved_clip, 0, y + bottom_underline, device->size.x2, device->size.y2); restrict_clip_area(device, &saved_clip, 0, y + bottom_line, device->size.x2, device->size.y2);
g_print_text(device, x, y, style, text, width); g_print_text(device, x, y, style, text, width);
set_clip_area(device, &saved_clip); set_clip_area(device, &saved_clip);
} }
@ -2275,9 +2279,11 @@ struct style *g_invert_style(struct style *old)
#ifdef HAVE_FREETYPE #ifdef HAVE_FREETYPE
st->ft_face = old->ft_face; st->ft_face = old->ft_face;
#endif #endif
if (st->flags & FF_UNDERLINE) { if (st->flags & FF_UNDERLINE || st->flags & FF_STRIKE) {
/* We have to get a foreground color for underlining */ /* We have to get a foreground color for underlining and
st->underline_color = dip_get_color_sRGB((st->r1 << 16) | (st->g1 << 8) | (st->b1)); * striking
*/
st->line_color = dip_get_color_sRGB((st->r1 << 16) | (st->g1 << 8) | (st->b1));
} }
st->mono_space = old->mono_space; st->mono_space = old->mono_space;
st->mono_height = old->mono_height; st->mono_height = old->mono_height;
@ -2323,9 +2329,11 @@ struct style *g_get_style_font(int fg, int bg, int size, int fflags, unsigned ch
else else
st->ft_face = freetype_get_font(font); st->ft_face = freetype_get_font(font);
#endif #endif
if (fflags & FF_UNDERLINE) { if (fflags & FF_UNDERLINE || fflags & FF_STRIKE) {
/* We have to get a foreground color for underlining */ /* We have to get a foreground color for underlining and
st->underline_color = dip_get_color_sRGB(fg); * striking
*/
st->line_color = dip_get_color_sRGB(fg);
} }
if (fflags & FF_MONOSPACED) if (fflags & FF_MONOSPACED)
load_metric(st, ' ', &st->mono_space, &st->mono_height); load_metric(st, ' ', &st->mono_space, &st->mono_height);

34
html.c
View File

@ -967,6 +967,12 @@ static void html_underline(unsigned char *a)
format_.attr |= AT_UNDERLINE; format_.attr |= AT_UNDERLINE;
} }
static void html_strike(unsigned char *a)
{
get_js_events(a);
format_.attr |= AT_STRIKE;
}
static void html_fixed(unsigned char *a) static void html_fixed(unsigned char *a)
{ {
get_js_events(a); get_js_events(a);
@ -1773,6 +1779,16 @@ static void html_button(unsigned char *a)
{ {
unsigned char *al; unsigned char *al;
struct form_control *fc; struct form_control *fc;
if ((al = get_attr_val(a, cast_uchar "class"))) { /* Wikipedia hack */
if (strstr(cast_const_char al, "vector-toc-toggle") || strstr(cast_const_char al, "vector-pinnable-header-toggle-button")) {
html_top.invisible = INVISIBLE;
mem_free(al);
return;
}
mem_free(al);
}
find_form_for_input(a); find_form_for_input(a);
fc = mem_calloc(sizeof(struct form_control)); fc = mem_calloc(sizeof(struct form_control));
if (!(al = get_attr_val(a, cast_uchar "type"))) { if (!(al = get_attr_val(a, cast_uchar "type"))) {
@ -2777,8 +2793,10 @@ static struct element_info elements[] = {
{"EM", html_italic, 0, 0}, {"EM", html_italic, 0, 0},
{"ABBR", html_italic, 0, 0}, {"ABBR", html_italic, 0, 0},
{"U", html_underline, 0, 0}, {"U", html_underline, 0, 0},
{"S", html_underline, 0, 0}, {"INS", html_underline, 0, 0},
{"STRIKE", html_underline, 0, 0}, {"S", html_strike, 0, 0},
{"DEL", html_strike, 0, 0},
{"STRIKE", html_strike, 0, 0},
{"FIXED", html_fixed, 0, 0}, {"FIXED", html_fixed, 0, 0},
{"CODE", html_fixed, 0, 0}, {"CODE", html_fixed, 0, 0},
{"TT", html_fixed, 0, 0}, {"TT", html_fixed, 0, 0},
@ -3184,6 +3202,18 @@ do { \
format_.fontsize = list_struct(e->list_entry.next, struct html_element)->attr.fontsize; format_.fontsize = list_struct(e->list_entry.next, struct html_element)->attr.fontsize;
ln_break(lnb); ln_break(lnb);
while (e->list_entry.prev != &html_stack) kill_html_stack_item(list_struct(e->list_entry.prev, struct html_element)); while (e->list_entry.prev != &html_stack) kill_html_stack_item(list_struct(e->list_entry.prev, struct html_element));
if (e->namelen == 4 && !casecmp(e->name, cast_uchar "SPAN", 4)) { /* Wikipedia hack */
unsigned char *al;
if ((al = get_attr_val(e->options, cast_uchar "class"))) {
if (!strcmp(cast_const_char al, "vector-toc-numb"))
putsp = 1;
mem_free(al);
}
}
if (e->namelen == 2 && (!casecmp(e->name, cast_uchar "UL", 2) || !casecmp(e->name, cast_uchar "OL", 2))) { /* Wikipedia hack */
while (html < eof && WHITECHAR(*html))
html++;
}
kill_html_stack_item(e); kill_html_stack_item(e);
break; break;
} }

View File

@ -113,6 +113,7 @@ static struct style *get_style_by_ta(struct text_attrib *ta)
fflags = 0; fflags = 0;
if (ta->attr & AT_UNDERLINE) fflags |= FF_UNDERLINE; if (ta->attr & AT_UNDERLINE) fflags |= FF_UNDERLINE;
if (ta->attr & AT_STRIKE) fflags |= FF_STRIKE;
if (ta->attr & AT_BOLD) fflags |= FF_BOLD; if (ta->attr & AT_BOLD) fflags |= FF_BOLD;
if (ta->attr & AT_ITALIC) fflags |= FF_ITALIC; if (ta->attr & AT_ITALIC) fflags |= FF_ITALIC;
if (ta->attr & AT_FIXED) fflags |= FF_MONOSPACED; if (ta->attr & AT_FIXED) fflags |= FF_MONOSPACED;

View File

@ -868,6 +868,7 @@ static void put_chars(void *p_, unsigned char *c, int l)
fg = fg_color(fg, bg); fg = fg_color(fg, bg);
if (format_.attr & AT_ITALIC) fg = fg ^ 0x01; if (format_.attr & AT_ITALIC) fg = fg ^ 0x01;
if (format_.attr & AT_UNDERLINE) fg = (fg ^ 0x04) | 0x08; if (format_.attr & AT_UNDERLINE) fg = (fg ^ 0x04) | 0x08;
if (format_.attr & AT_STRIKE) fg = (fg ^ 0x06);
if (format_.attr & AT_BOLD) fg = fg | 0x08; if (format_.attr & AT_BOLD) fg = fg | 0x08;
fg = fg_color(fg, bg); fg = fg_color(fg, bg);
if (format_.attr & AT_GRAPHICS) bg = bg | 0x10; if (format_.attr & AT_GRAPHICS) bg = bg | 0x10;

4
http.c
View File

@ -551,7 +551,7 @@ static void add_user_agent(unsigned char **hdr, int *l, unsigned char *url)
{ {
add_to_str(hdr, l, cast_uchar "User-Agent: "); add_to_str(hdr, l, cast_uchar "User-Agent: ");
if (SCRUB_HEADERS) { if (SCRUB_HEADERS) {
add_to_str(hdr, l, cast_uchar "Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0\r\n"); add_to_str(hdr, l, cast_uchar "Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Firefox/102.0\r\n");
} else if (!(*http_options.header.fake_useragent)) { } else if (!(*http_options.header.fake_useragent)) {
/* /*
@ -661,7 +661,7 @@ static void add_accept(unsigned char **hdr, int *l, struct connection *c)
if (c->doh) { if (c->doh) {
add_to_str(hdr, l, cast_uchar "Accept: application/dns-message\r\n"); add_to_str(hdr, l, cast_uchar "Accept: application/dns-message\r\n");
} else if (SCRUB_HEADERS) { } else if (SCRUB_HEADERS) {
add_to_str(hdr, l, cast_uchar "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"); add_to_str(hdr, l, cast_uchar "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n");
} else { } else {
add_to_str(hdr, l, cast_uchar "Accept: */*\r\n"); add_to_str(hdr, l, cast_uchar "Accept: */*\r\n");
} }

35
img.c
View File

@ -65,6 +65,11 @@ static void destroy_decoder (struct cached_image *cimg)
case IM_WEBP: case IM_WEBP:
webp_destroy_decoder(cimg); webp_destroy_decoder(cimg);
break; break;
#endif
#ifdef HAVE_AVIF
case IM_AVIF:
avif_destroy_decoder(cimg);
break;
#endif #endif
} }
mem_free(cimg->decoder); mem_free(cimg->decoder);
@ -782,6 +787,17 @@ static void type(struct cached_image *cimg, unsigned char *content_type, unsigne
#ifdef HAVE_WEBP #ifdef HAVE_WEBP
if (data[0] == 'R' && data[1] == 'I' && data[2] == 'F' && data[3] == 'F') if (data[0] == 'R' && data[1] == 'I' && data[2] == 'F' && data[3] == 'F')
goto have_webp; goto have_webp;
#endif
#if 0
if (data[4] == 'f' && data[5] == 't' && data[6] == 'y' && data[7] == 'p' &&
(memcmp(data + 8, "avi", 3) &&
(data[11] == 'f' || data[11] == 's' || data[11] == 'o')) ||
(data[8] == 'm' &&
(data[9] == 'i' || data[9] == 's') &&
data[10] == 'f' && data[11] == '1') ||
memcmp(data + 8, "miaf", 4) ||
memcmp(data + 8, "MA1B", 4))
goto have_avif;
#endif #endif
if (data[0] == 0x89 && data[1] == 'P' && data[2] == 'N' && data[3] == 'G') if (data[0] == 0x89 && data[1] == 'P' && data[2] == 'N' && data[3] == 'G')
goto have_png; goto have_png;
@ -835,6 +851,13 @@ static void type(struct cached_image *cimg, unsigned char *content_type, unsigne
webp_start(cimg); webp_start(cimg);
} else } else
#endif /* #ifdef HAVE_WEBP */ #endif /* #ifdef HAVE_WEBP */
#ifdef HAVE_AVIF
if (dtest(cast_uchar "image/avif",content_type)) {
/*have_avif:*/
cimg->image_type=IM_AVIF;
avif_start(cimg);
} else
#endif /* #ifdef HAVE_AVIF */
{ {
/* Error */ /* Error */
img_end(cimg); img_end(cimg);
@ -937,6 +960,11 @@ static int img_process_download(struct g_object_image *goi, struct f_data_c *fda
webp_restart(cimg,data,length); webp_restart(cimg,data,length);
break; break;
#endif /* #ifdef HAVE_WEBP */ #endif /* #ifdef HAVE_WEBP */
#ifdef HAVE_AVIF
case IM_AVIF:
avif_restart(cimg,data,length);
break;
#endif /* #ifdef HAVE_AVIF */
#ifdef DEBUG #ifdef DEBUG
default: default:
fprintf(stderr,"cimg->image_type=%d\n",cimg->state); fprintf(stderr,"cimg->image_type=%d\n",cimg->state);
@ -967,6 +995,10 @@ img_process_download.\n");
#ifdef HAVE_WEBP #ifdef HAVE_WEBP
if (cimg->image_type==IM_WEBP) if (cimg->image_type==IM_WEBP)
webp_finish(cimg); webp_finish(cimg);
#endif
#ifdef HAVE_AVIF
if (cimg->image_type==IM_AVIF)
avif_finish(cimg);
#endif #endif
} }
cimg->eof_hit=1; cimg->eof_hit=1;
@ -1373,6 +1405,9 @@ int known_image_type(unsigned char *type)
#ifdef HAVE_WEBP #ifdef HAVE_WEBP
if (!casestrcmp(type, cast_uchar "image/webp")) return 1; if (!casestrcmp(type, cast_uchar "image/webp")) return 1;
#endif #endif
#ifdef HAVE_AVIF
if (!casestrcmp(type, cast_uchar "image/avif")) return 1;
#endif
#endif #endif
return 0; return 0;
} }

View File

@ -1,7 +1,7 @@
When you add or delete any text, add or delete it in english.lng and run When you add or delete any text, add or delete it in english.lng and run
script ./synclang. It adds NULL entries to other languages. Then run ./gen-intl. script ./synclang. It adds NULL entries to other languages. Then run ./gen-intl.
When you change any text, run ./get-intl. When you change any text, run ./gen-intl.
Menu hotkeys are also translated via this interface. You can specify more Menu hotkeys are also translated via this interface. You can specify more
hotkeys. When using normal letters as hotkeys, always use upper case. When using hotkeys. When using normal letters as hotkeys, always use upper case. When using

View File

@ -14,7 +14,7 @@ T_BAD_IP_ADDRESS, "B
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, "Nie można użyć lokalnego adresu IP", T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, "Nie można użyć lokalnego adresu IP",
T_CONFIG_ERROR, "Błąd konfiguracji", T_CONFIG_ERROR, "Błąd konfiguracji",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Nie można zapisać do pliku konfiguracyjnego", T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Nie można zapisać do pliku konfiguracyjnego",
T_HOME_DIRECTORY_INACCESSIBLE, NULL, T_HOME_DIRECTORY_INACCESSIBLE, "Katalog domowy niedostêpny",
T_BOOKMARK_ERROR, "Błąd zakładki", T_BOOKMARK_ERROR, "Błąd zakładki",
T_UNABLE_TO_WRITE_TO_BOOKMARK_FILE, "Nie można zapisać pliku zakładek", T_UNABLE_TO_WRITE_TO_BOOKMARK_FILE, "Nie można zapisać pliku zakładek",
T_ABOUT, "O programie", T_ABOUT, "O programie",
@ -43,16 +43,16 @@ T_GPM_MOUSE_DRIVER, "Sterownik myszy GPM",
T_XTERM_FOR_OS2, "Xterm dla OS/2", T_XTERM_FOR_OS2, "Xterm dla OS/2",
T_GRAPHICS_MODE, "Tryb graficzny", T_GRAPHICS_MODE, "Tryb graficzny",
T_IMAGE_LIBRARIES, "Biblioteki obrazów", T_IMAGE_LIBRARIES, "Biblioteki obrazów",
T_FONT_RENDERING, NULL, T_FONT_RENDERING, "Renderowanie fontów",
T_INTERNAL, NULL, T_INTERNAL, "Wewnêtrzne",
T_OPENMP, "OpenMP", T_OPENMP, "OpenMP",
T_NOT_USED_IN_TEXT_MODE, NULL, T_NOT_USED_IN_TEXT_MODE, "Nie u¿ywane w trybie tekstowym",
T_DISABLED, "Wyłączone", T_DISABLED, "Wyłączone",
T_THREAD, "wątek", T_THREAD, "wątek",
T_THREADS, "wątki", T_THREADS, "wątki",
T_THREADS5, "wątków", T_THREADS5, "wątków",
T_CONFIGURATION_DIRECTORY, NULL, T_CONFIGURATION_DIRECTORY, "Katalog konfiguracyjny",
T_NONE, NULL, T_NONE, "Brak",
T_KEYS, "Klawiszologia", T_KEYS, "Klawiszologia",
T_KEYS_DESC, "ESC pokaż menu\n^C, q wyjście\np, l przewiń góra,dół\n[, ] przewiń lewo,prawo\ngóra, dół zaznacz link\n-> wybierz link\n<- powrót\ng przejdź do URL-a\nG przejdź do URL-a bazującego na aktualnym\n/ szukaj\nn znajdź następny\nd pobierz\n* przełącz wyświetlanie obrazków\n^W dopełnij URL lub szukany łańcuch\n^B, ^X, ^V skopiuj, wytnij, wklej do/ze schowka\nAlt-1 .. Alt-9 przełącz ekran wirtualny (svgalib lub framebuffer)", T_KEYS_DESC, "ESC pokaż menu\n^C, q wyjście\np, l przewiń góra,dół\n[, ] przewiń lewo,prawo\ngóra, dół zaznacz link\n-> wybierz link\n<- powrót\ng przejdź do URL-a\nG przejdź do URL-a bazującego na aktualnym\n/ szukaj\nn znajdź następny\nd pobierz\n* przełącz wyświetlanie obrazków\n^W dopełnij URL lub szukany łańcuch\n^B, ^X, ^V skopiuj, wytnij, wklej do/ze schowka\nAlt-1 .. Alt-9 przełącz ekran wirtualny (svgalib lub framebuffer)",
T_KEYS_BRAILLE_DESC, "a, t kursor do linii stanu lub tytułu\n{, } kursor do początku/końca linii\n^T, ^Y następny lub poprzedni odnośnik", T_KEYS_BRAILLE_DESC, "a, t kursor do linii stanu lub tytułu\n{, } kursor do początku/końca linii\n^T, ^Y następny lub poprzedni odnośnik",
@ -65,7 +65,7 @@ T_FONT_CACHE, "Pami
T_IMAGE_CACHE, "Pamięć podręczna obrazów", T_IMAGE_CACHE, "Pamięć podręczna obrazów",
T_FORMATTED_DOCUMENT_CACHE, "Sformatowane dokumenty w pamięci podręcznej", T_FORMATTED_DOCUMENT_CACHE, "Sformatowane dokumenty w pamięci podręcznej",
T_DNS_CACHE, "Pamięć podręczna DNS", T_DNS_CACHE, "Pamięć podręczna DNS",
T_TLS_SESSION_CACHE, NULL, T_TLS_SESSION_CACHE, "Pamiêæ podrêczna sesji TLS",
T_HANDLES, "uchwyt(ów)", T_HANDLES, "uchwyt(ów)",
T_TIMERS, "zegar(ów)", T_TIMERS, "zegar(ów)",
T_WAITING, "oczekujących", T_WAITING, "oczekujących",
@ -82,14 +82,14 @@ T_DOCUMENTS, "dokument
T_SERVERS, "serwerów", T_SERVERS, "serwerów",
T_MEMORY_ALLOCATED, "przydzielonej pamięci", T_MEMORY_ALLOCATED, "przydzielonej pamięci",
T_BLOCKS_ALLOCATED, "bloków", T_BLOCKS_ALLOCATED, "bloków",
T_MEMORY_LARGE_BLOCKS, NULL, T_MEMORY_LARGE_BLOCKS, "przydzielonych w du¿ych blokach",
T_BLOCKS_LARGE_BLOCKS, NULL, T_BLOCKS_LARGE_BLOCKS, "du¿ych bloków",
T_MEMORY_REQUESTED, "żądanej z systemu pamięci", T_MEMORY_REQUESTED, "żądanej z systemu pamięci",
T_BLOCKS_REQUESTED, "bloków", T_BLOCKS_REQUESTED, "bloków",
T_JS_MEMORY_ALLOCATED, "przydzielonej pamięci dla javascriptu", T_JS_MEMORY_ALLOCATED, "przydzielonej pamięci dla javascriptu",
T_MEMORY_INFO, "Informacje o pamięci", T_MEMORY_INFO, "Informacje o pamięci",
T_MOST_ALLOCATED, NULL, T_MOST_ALLOCATED, "Najwiêcej przydzielone",
T_LARGEST_BLOCKS, NULL, T_LARGEST_BLOCKS, "Najwiêksze bloki",
T_NO_HISTORY, "Brak historii", T_NO_HISTORY, "Brak historii",
T_NO_DOWNLOADS, "Brak pobrań", T_NO_DOWNLOADS, "Brak pobrań",
T_NO_FRAMES, "Brak ramek", T_NO_FRAMES, "Brak ramek",
@ -97,7 +97,7 @@ T_VT_100_FRAMES, "Ramki VT100",
T_LINUX_OR_OS2_FRAMES, "Ramki typu Linux lub OS/2", T_LINUX_OR_OS2_FRAMES, "Ramki typu Linux lub OS/2",
T_KOI8R_FRAMES, "Ramki KOI8-R", T_KOI8R_FRAMES, "Ramki KOI8-R",
T_FREEBSD_FRAMES, "Ramki FreeBSD", T_FREEBSD_FRAMES, "Ramki FreeBSD",
T_UTF8_FRAMES, NULL, T_UTF8_FRAMES, "Ramki UTF-8",
T_USE_11M, "Użyj ^[[11m", T_USE_11M, "Użyj ^[[11m",
T_RESTRICT_FRAMES_IN_CP850_852, "Ogranicz ramki w cp850/852", T_RESTRICT_FRAMES_IN_CP850_852, "Ogranicz ramki w cp850/852",
T_BLOCK_CURSOR, "Kursor blokowy", T_BLOCK_CURSOR, "Kursor blokowy",
@ -126,30 +126,30 @@ T_SOCKS_4A_PROXY__USER_HOST_PORT, "Proxy Socks4a (user@host:port)",
T_APPEND_TEXT_TO_SOCKS_LOOKUPS, "Dołączanie tekstu do nazwy hosta (wybór węzła tora)", T_APPEND_TEXT_TO_SOCKS_LOOKUPS, "Dołączanie tekstu do nazwy hosta (wybór węzła tora)",
T_NOPROXY_LIST, "Lista domen dostępnych bez proxy", T_NOPROXY_LIST, "Lista domen dostępnych bez proxy",
T_ONLY_PROXIES, "Łączenie się tylko przez proxy lub Socks (przydatne z torem)", T_ONLY_PROXIES, "Łączenie się tylko przez proxy lub Socks (przydatne z torem)",
T_TOR_MODE_ENABLED, NULL, T_TOR_MODE_ENABLED, "Tryb TOR w³±czony, poniewa¿ port socks to 9050.",
T_SSL_OPTIONS, "Opcje SSL", T_SSL_OPTIONS, "Opcje SSL",
T_ACCEPT_INVALID_CERTIFICATES, "Akceptowanie błędnych certyfikatów i słabych szyfrów", T_ACCEPT_INVALID_CERTIFICATES, "Akceptowanie błędnych certyfikatów i słabych szyfrów",
T_WARN_ON_INVALID_CERTIFICATES, "Ostrzeganie o błędnych certyfikatach i słabych szyfrach", T_WARN_ON_INVALID_CERTIFICATES, "Ostrzeganie o błędnych certyfikatach i słabych szyfrach",
T_REJECT_INVALID_CERTIFICATES, "Odrzucanie błędnych certyfikatów i słabych szyfrów", T_REJECT_INVALID_CERTIFICATES, "Odrzucanie błędnych certyfikatów i słabych szyfrów",
T_USE_BUILT_IN_CERTIFICATES, NULL, T_USE_BUILT_IN_CERTIFICATES, "U¿ycie wbudowanych certyfikatów",
T_CLIENT_CERTIFICATE_KEY_FILE, "Plik klucza certyfikatu klienta", T_CLIENT_CERTIFICATE_KEY_FILE, "Plik klucza certyfikatu klienta",
T_CLIENT_CERTIFICATE_FILE, "Plik certyfikatu klienta", T_CLIENT_CERTIFICATE_FILE, "Plik certyfikatu klienta",
T_CLIENT_CERTIFICATE_KEY_PASSWORD, "Hasło certyfikatu klienta (nie będzie zapisane w pliku konfiguracyjnym)", T_CLIENT_CERTIFICATE_KEY_PASSWORD, "Hasło certyfikatu klienta (nie będzie zapisane w pliku konfiguracyjnym)",
T_BAD_FILE, "Błędny plik", T_BAD_FILE, "Błędny plik",
T_THE_FILE_DOES_NOT_EXIST, "Plik nie istnieje", T_THE_FILE_DOES_NOT_EXIST, "Plik nie istnieje",
T_THE_FILE_HAS_INVALID_FORMAT, "Plik ma błędny format", T_THE_FILE_HAS_INVALID_FORMAT, "Plik ma błędny format",
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL, T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, "B³±d inicjowania wbudowanych certyfikatów",
T_FAILED, NULL, T_FAILED, "nie powiod³o siê",
T_DNS_OPTIONS, NULL, T_DNS_OPTIONS, "Opcje DNS",
T_DNS_OVER_HTTPS_URL, NULL, T_DNS_OVER_HTTPS_URL, "DNS po HTTPS (host lub URL)",
T_CONNECTIONS, "Połączenia", T_CONNECTIONS, "Połączenia",
T_MAX_CONNECTIONS, "Maksymalna liczba połączeń", T_MAX_CONNECTIONS, "Maksymalna liczba połączeń",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Maksymalna liczba połączeń z jednym serwerem", T_MAX_CONNECTIONS_TO_ONE_HOST, "Maksymalna liczba połączeń z jednym serwerem",
T_RETRIES, "Próby (0 - bez ograniczeń)", T_RETRIES, "Próby (0 - bez ograniczeń)",
T_RECEIVE_TIMEOUT_SEC, "Maksymalny czas oczekiwania na połączenie (sek)", T_RECEIVE_TIMEOUT_SEC, "Maksymalny czas oczekiwania na połączenie (sek)",
T_TIMEOUT_WHEN_UNRESTARTABLE, "Maks. czas oczekiwania na połączenie niewznawialne", T_TIMEOUT_WHEN_UNRESTARTABLE, "Maks. czas oczekiwania na połączenie niewznawialne",
T_TIMEOUT_WHEN_TRYING_MULTIPLE_ADDRESSES, NULL, T_TIMEOUT_WHEN_TRYING_MULTIPLE_ADDRESSES, "Maks. czas oczekiwania przy wielu adresach",
T_TIMEOUT_WHEN_TRYING_KEEPALIVE_CONNECTION, NULL, T_TIMEOUT_WHEN_TRYING_KEEPALIVE_CONNECTION, "Maks. czas oczekiwania przy po³±czeniach podtrzymywanych",
T_BIND_TO_LOCAL_IP_ADDRESS, "Przypisanie do lokalnego adresu IP", T_BIND_TO_LOCAL_IP_ADDRESS, "Przypisanie do lokalnego adresu IP",
T_BIND_TO_LOCAL_IPV6_ADDRESS, "... adresu IPv6", T_BIND_TO_LOCAL_IPV6_ADDRESS, "... adresu IPv6",
T_ASYNC_DNS_LOOKUP, "Asynchroniczne szukanie nazw", T_ASYNC_DNS_LOOKUP, "Asynchroniczne szukanie nazw",
@ -217,9 +217,9 @@ T_FIND_PREVIOUS, "Znajd
T_TOGGLE_HTML_PLAIN, "Przełącz html/plain", T_TOGGLE_HTML_PLAIN, "Przełącz html/plain",
T_DOCUMENT_INFO, "Informacje o dokumencie", T_DOCUMENT_INFO, "Informacje o dokumencie",
T_FRAME_AT_FULL_SCREEN, "Ramka na całym ekranie", T_FRAME_AT_FULL_SCREEN, "Ramka na całym ekranie",
T_SAVE_CLIPBOARD_TO_A_FILE, NULL, T_SAVE_CLIPBOARD_TO_A_FILE, "Zapis schowka do pliku",
T_LOAD_CLIPBOARD_FROM_A_FILE, NULL, T_LOAD_CLIPBOARD_FROM_A_FILE, "Odczyt schowka z pliku",
T_THE_CLIPBOARD_IS_EMPTY, NULL, T_THE_CLIPBOARD_IS_EMPTY, "Schowek jest pusty",
T_SAVE_HTML_OPTIONS, "Zapisz ustawienia HTML", T_SAVE_HTML_OPTIONS, "Zapisz ustawienia HTML",
T_CHARACTER_SET, "Zestaw znaków", T_CHARACTER_SET, "Zestaw znaków",
T_DEFAULT_CHARSET, "Domyślny", T_DEFAULT_CHARSET, "Domyślny",
@ -233,7 +233,7 @@ T_FILE, "Plik",
T_VIEW, "Widok", T_VIEW, "Widok",
T_LINK, "Link", T_LINK, "Link",
T_DOWNLOADS, "Pobieranie", T_DOWNLOADS, "Pobieranie",
T_WINDOWS, NULL, T_WINDOWS, "Okna",
T_SETUP, "Ustawienia", T_SETUP, "Ustawienia",
T_HELP, "Pomoc", T_HELP, "Pomoc",
T_ENTER_URL, "Wprowadź URL", T_ENTER_URL, "Wprowadź URL",
@ -244,8 +244,8 @@ T_SEARCH_FOR_TEXT, "Znajd
T_PAGE_P, "(s. ", T_PAGE_P, "(s. ",
T_PAGE_OF, " z ", T_PAGE_OF, " z ",
T_PAGE_CL, ")", T_PAGE_CL, ")",
T_FORMATTING_DOCUMENT, NULL, T_FORMATTING_DOCUMENT, "Formatowanie dokumentu",
T_SEARCHING, NULL, T_SEARCHING, "Wyszukiwanie",
T_WAITING_IN_QUEUE, "Oczekujące w kolejce", T_WAITING_IN_QUEUE, "Oczekujące w kolejce",
T_LOOKING_UP_HOST, "Szukam serwera", T_LOOKING_UP_HOST, "Szukam serwera",
T_MAKING_CONNECTION, "Nawiązywanie połączenia", T_MAKING_CONNECTION, "Nawiązywanie połączenia",
@ -261,7 +261,7 @@ T_INTERRUPTED, "Przerwano",
T_INTERNAL_ERROR, "Błąd wewnętrzny", T_INTERNAL_ERROR, "Błąd wewnętrzny",
T_OUT_OF_MEMORY, "Brak pamięci", T_OUT_OF_MEMORY, "Brak pamięci",
T_HOST_NOT_FOUND, "Nie znaleziono serwera", T_HOST_NOT_FOUND, "Nie znaleziono serwera",
T_PROXY_NOT_FOUND, NULL, T_PROXY_NOT_FOUND, "Nie znaleziono proxy",
T_ERROR_WRITING_TO_SOCKET, "Błąd przy zapisywaniu do gniazda", T_ERROR_WRITING_TO_SOCKET, "Błąd przy zapisywaniu do gniazda",
T_ERROR_READING_FROM_SOCKET, "Błąd przy czytaniu z gniazda", T_ERROR_READING_FROM_SOCKET, "Błąd przy czytaniu z gniazda",
T_DATA_MODIFIED, "Dane zostały zmodyfikowane", T_DATA_MODIFIED, "Dane zostały zmodyfikowane",
@ -273,7 +273,7 @@ T_CANT_GET_SOCKET_STATE, "Nie mo
T_CYCLIC_REDIRECT, "Cykliczne przekierowanie", T_CYCLIC_REDIRECT, "Cykliczne przekierowanie",
T_TOO_LARGE_FILE, "Plik zbyt duży", T_TOO_LARGE_FILE, "Plik zbyt duży",
T_BAD_HTTP_RESPONSE, "Nieprawidłowa odpowiedź HTTP", T_BAD_HTTP_RESPONSE, "Nieprawidłowa odpowiedź HTTP",
T_HTTP_100, NULL, T_HTTP_100, "HTTP 100 (\?\?\?)",
T_NO_CONTENT, "Plik pusty", T_NO_CONTENT, "Plik pusty",
T_HTTPS_FWD_ERROR, "Przekierowanie HTTPS nie powiodło się", T_HTTPS_FWD_ERROR, "Przekierowanie HTTPS nie powiodło się",
T_INVALID_CERTIFICATE, "Błędny certyfikat", T_INVALID_CERTIFICATE, "Błędny certyfikat",
@ -314,7 +314,7 @@ T_ABORT, "Przerwij",
T_ABORT_AND_DELETE_FILE, "Przerwij i usuń plik", T_ABORT_AND_DELETE_FILE, "Przerwij i usuń plik",
T_YES, "Tak", T_YES, "Tak",
T_NO, "Nie", T_NO, "Nie",
T_NEVER, NULL, T_NEVER, "Nigdy",
T_DIRECTORY, "Katalog", T_DIRECTORY, "Katalog",
T_FILE_ALREADY_EXISTS, "Plik już istnieje", T_FILE_ALREADY_EXISTS, "Plik już istnieje",
T_ALREADY_EXISTS_AS_DOWNLOAD, "już istnieje jako aktywne ściąganie.", T_ALREADY_EXISTS_AS_DOWNLOAD, "już istnieje jako aktywne ściąganie.",
@ -375,7 +375,7 @@ T_NO_PREVIOUS_SEARCH, "Niczego wcze
T_SEARCH_STRING_NOT_FOUND, "Nie znaleziono wyrażenia", T_SEARCH_STRING_NOT_FOUND, "Nie znaleziono wyrażenia",
T_SAVE_ERROR, "Błąd zapisu", T_SAVE_ERROR, "Błąd zapisu",
T_ERROR_WRITING_TO_FILE, "Błąd zapisu do pliku", T_ERROR_WRITING_TO_FILE, "Błąd zapisu do pliku",
T_ERROR_READING_THE_FILE, NULL, T_ERROR_READING_THE_FILE, "B³±d odczytu z pliku",
T_DISPLAY_USEMAP, "Pokaż mapę obrazków", T_DISPLAY_USEMAP, "Pokaż mapę obrazków",
T_FOLLOW_LINK, "Wybierz link", T_FOLLOW_LINK, "Wybierz link",
T_OPEN_IN_NEW_WINDOW, "Otwórz w nowym oknie", T_OPEN_IN_NEW_WINDOW, "Otwórz w nowym oknie",
@ -418,8 +418,8 @@ T_HEADER_INFO, "Informacje nag
T_YOU_ARE_NOWHERE, "Tak naprawdę to jesteś nigdzie!", T_YOU_ARE_NOWHERE, "Tak naprawdę to jesteś nigdzie!",
T_NO_HEADER, "Dokument nie ma nagłówka", T_NO_HEADER, "Dokument nie ma nagłówka",
T_URL, "URL", T_URL, "URL",
T_IP_ADDRESS, NULL, T_IP_ADDRESS, "Adres IP",
T_IP_ADDRESSES, NULL, T_IP_ADDRESSES, "Adresy IP",
T_SIZE, "Rozmiar", T_SIZE, "Rozmiar",
T_COMPRESSED_WITH, "skompresowany", T_COMPRESSED_WITH, "skompresowany",
T_INCOMPLETE, "niekompletne", T_INCOMPLETE, "niekompletne",
@ -430,8 +430,8 @@ T_SERVER, "Serwer",
T_DATE, "Data", T_DATE, "Data",
T_LAST_MODIFIED, "Ostatnia zmiana", T_LAST_MODIFIED, "Ostatnia zmiana",
T_SSL_CIPHER, "Szyfr SSL", T_SSL_CIPHER, "Szyfr SSL",
T_CERTIFICATE_AUTHORITY, NULL, T_CERTIFICATE_AUTHORITY, "Instytucja certyfikacji",
T_CERTIFICATE_AUTHORITIES, NULL, T_CERTIFICATE_AUTHORITIES, "Instytucje certyfikacji",
T_LANGUAGE, "Język", T_LANGUAGE, "Język",
T_DEFAULT_LANG, "Domyślny", T_DEFAULT_LANG, "Domyślny",
T_GO_TO_LINK, "Przejdź do odnośnika", T_GO_TO_LINK, "Przejdź do odnośnika",
@ -446,7 +446,7 @@ T_fOLDER, "folder",
T_ADD, "Dodaj", T_ADD, "Dodaj",
T_DELETE, "Usuń", T_DELETE, "Usuń",
T_EDIT, "Edytuj", T_EDIT, "Edytuj",
T_SELECT, NULL, T_SELECT, "Zaznacz",
T_MOVE, "Przenieś", T_MOVE, "Przenieś",
T_NO_ITEMS_SELECTED, "Nie zaznaczyłeś niczego", T_NO_ITEMS_SELECTED, "Nie zaznaczyłeś niczego",
T_UNSELECT_ALL, "Odznacz wszystkie", T_UNSELECT_ALL, "Odznacz wszystkie",
@ -507,8 +507,8 @@ T_TELNET_PROG, "Program us
T_TN3270_PROG, "Program Tn3270 (% jest zastępowany przez \"host\" lub przez \"host port\")", T_TN3270_PROG, "Program Tn3270 (% jest zastępowany przez \"host\" lub przez \"host port\")",
T_MMS_PROG, "Program MMS (% jest zastępowany przez URL)", T_MMS_PROG, "Program MMS (% jest zastępowany przez URL)",
T_MAGNET_PROG, "Program Magnet (% jest zastępowany przez URL)", T_MAGNET_PROG, "Program Magnet (% jest zastępowany przez URL)",
T_GOPHER_PROG, NULL, T_GOPHER_PROG, "Program Gopher (% jest zastêpowany przez URL)",
T_SHELL_PROG, "Program pow³oki", T_SHELL_PROG, "Pow³oka do wykonywania poleceñ zewnêtrznych (% jest zastêpowany poleceniem)",
T_MAIL_AND_TELNET_PROGRAMS, "Obsługa poczty i usługi Telnet", T_MAIL_AND_TELNET_PROGRAMS, "Obsługa poczty i usługi Telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Obsługa poczty, usługi Telnet i powłoki", T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Obsługa poczty, usługi Telnet i powłoki",
T_NO_PROGRAM, "Nie określono programu", T_NO_PROGRAM, "Nie określono programu",
@ -518,7 +518,7 @@ T_TELNET, "telneta",
T_TN3270, "tn3270", T_TN3270, "tn3270",
T_MMS, "mms", T_MMS, "mms",
T_MAGNET, "magneta", T_MAGNET, "magneta",
T_GOPHER, NULL, T_GOPHER, "gopher",
T_BAD_MAILTO_URL, "Błędny adres e-mail", T_BAD_MAILTO_URL, "Błędny adres e-mail",
T_BAD_TELNET_URL, "Niewłaściwy adres serwera dla programu Telnet", T_BAD_TELNET_URL, "Niewłaściwy adres serwera dla programu Telnet",
T_BAD_TN3270_URL, "Niewłaściwy adres serwera dla programu Tn3270", T_BAD_TN3270_URL, "Niewłaściwy adres serwera dla programu Tn3270",
@ -555,9 +555,9 @@ T_DITHER_IMAGES, "Dithering obraz
T_8_BIT_GAMMA_CORRECTION, "8-bitowa korekcja gamma", T_8_BIT_GAMMA_CORRECTION, "8-bitowa korekcja gamma",
T_16_BIT_GAMMA_CORRECTION, "16-bitowa korekcja gamma", T_16_BIT_GAMMA_CORRECTION, "16-bitowa korekcja gamma",
T_AUTO_GAMMA_CORRECTION, "Automatyczna korekcja gamma", T_AUTO_GAMMA_CORRECTION, "Automatyczna korekcja gamma",
T_RGB_PALETTE_8x8x4, NULL, T_RGB_PALETTE_8x8x4, "Paleta RGB 8x8x4",
T_RGB_PALETTE_6x6x6, NULL, T_RGB_PALETTE_6x6x6, "Paleta RGB 6x6x6",
T_SWITCH_PALETTE, NULL, T_SWITCH_PALETTE, "Zmieñ paletê",
T_OVERWRITE_SCREEN_INSTEAD_OF_SCROLLING_IT, "Przykrycie ekranu zamiast przewijania", T_OVERWRITE_SCREEN_INSTEAD_OF_SCROLLING_IT, "Przykrycie ekranu zamiast przewijania",
T_ALERT, "Uwaga", T_ALERT, "Uwaga",
T_QUESTION, "Pytanie", T_QUESTION, "Pytanie",
@ -571,16 +571,16 @@ T_ENABLE_JAVASCRIPT, "W
T_VERBOSE_JS_ERRORS, "Śledzenie błędów Javascriptu", T_VERBOSE_JS_ERRORS, "Śledzenie błędów Javascriptu",
T_VERBOSE_JS_WARNINGS, "Śledzenie ostrzeżeń Javascriptu", T_VERBOSE_JS_WARNINGS, "Śledzenie ostrzeżeń Javascriptu",
T_MISCELANEOUS_OPTIONS, "Opcje różne", T_MISCELANEOUS_OPTIONS, "Opcje różne",
T_FONTS, NULL, T_FONTS, "Fonty",
T_REGULAR_FONT, NULL, T_REGULAR_FONT, "Font zwyk³y",
T_BOLD_FONT, NULL, T_BOLD_FONT, "Font pogrubiony",
T_MONOSPACED_FONT, NULL, T_MONOSPACED_FONT, "Font o sta³ej szeroko¶ci",
T_MONOSPACED_BOLD_FONT, NULL, T_MONOSPACED_BOLD_FONT, "Font pogrubiony o sta³ej szeroko¶ci",
T_ITALIC_FONT, NULL, T_ITALIC_FONT, "Font pochy³y",
T_ITALIC_BOLD_FONT, NULL, T_ITALIC_BOLD_FONT, "Font pochy³y pogrubiony",
T_MONOSPACED_ITALIC_FONT, NULL, T_MONOSPACED_ITALIC_FONT, "Font pochy³y o sta³ej szeroko¶ci",
T_MONOSPACED_ITALIC_BOLD_FONT, NULL, T_MONOSPACED_ITALIC_BOLD_FONT, "Font pochy³y, pogrubiony o sta³ej szeroko¶ci",
T_BUILT_IN_FONT, NULL, T_BUILT_IN_FONT, "Font wbudowany",
T_JAVASCRIPT_ERROR, "Błąd Javascriptu", T_JAVASCRIPT_ERROR, "Błąd Javascriptu",
T_JAVASCRIPT_WARNING, "Ostrzeżenie Javascriptu", T_JAVASCRIPT_WARNING, "Ostrzeżenie Javascriptu",
T_DISMISS, "Pomiń", T_DISMISS, "Pomiń",
@ -606,12 +606,12 @@ T_SCROLL_BAR_AREA_COLOR, "Kolor obszaru paska przewijania",
T_SCROLL_BAR_FRAME_COLOR, "Kolor ramki paska przewijania", T_SCROLL_BAR_FRAME_COLOR, "Kolor ramki paska przewijania",
T_BOOKMARKS_FILE, "Plik zakładek", T_BOOKMARKS_FILE, "Plik zakładek",
T_SAVE_URL_HISTORY_ON_EXIT, "Zapis historii URL-i przy wyłączaniu", T_SAVE_URL_HISTORY_ON_EXIT, "Zapis historii URL-i przy wyłączaniu",
T_COOKIES, NULL, T_COOKIES, "Ciasteczka",
T_ENABLE_COOKIES, NULL, T_ENABLE_COOKIES, "W³±czenie ciasteczek",
T_SAVE_COOKIES, NULL, T_SAVE_COOKIES, "Zapis ciasteczek",
T_MAX_COOKIE_AGE, NULL, T_MAX_COOKIE_AGE, "Maksymalny wiek ciasteczek w dniach (0 - nieskoñczony)",
T_CLEAR_COOKIES, NULL, T_CLEAR_COOKIES, "Wyczy¶æ ciasteczka",
T_COOKIES_WERE_CLEARED, NULL, T_COOKIES_WERE_CLEARED, "ciasteczka zosta³y wyczyszczone",
T_ENTER_COLORS_AS_RGB_TRIPLETS, "Wpisz kolory jako trójki RGB", T_ENTER_COLORS_AS_RGB_TRIPLETS, "Wpisz kolory jako trójki RGB",
T_JS_MEMORY_LIMIT_KB, "Pamięć dla Javascriptu", T_JS_MEMORY_LIMIT_KB, "Pamięć dla Javascriptu",
T_SCALE_ALL_IMAGES_BY, "Skalowanie wszystkich obrazów", T_SCALE_ALL_IMAGES_BY, "Skalowanie wszystkich obrazów",
@ -683,7 +683,7 @@ T_HK_CACHE, "P",
T_HK_MAIL_AND_TELNEL, "C", T_HK_MAIL_AND_TELNEL, "C",
T_HK_ASSOCIATIONS, "S", T_HK_ASSOCIATIONS, "S",
T_HK_FILE_EXTENSIONS, "R", T_HK_FILE_EXTENSIONS, "R",
T_HK_BLOCK_LIST, NULL, T_HK_BLOCK_LIST, "B",
T_HK_SAVE_OPTIONS, "O", T_HK_SAVE_OPTIONS, "O",
T_HK_ABOUT, "O", T_HK_ABOUT, "O",
T_HK_KEYS, "K", T_HK_KEYS, "K",

View File

@ -15242,7 +15242,7 @@ static_const struct translation translation_polish [] = {
{ "Nie mo\277na u\277y\346 lokalnego adresu IP" }, { "Nie mo\277na u\277y\346 lokalnego adresu IP" },
{ "B\263\261d konfiguracji" }, { "B\263\261d konfiguracji" },
{ "Nie mo\277na zapisa\346 do pliku konfiguracyjnego" }, { "Nie mo\277na zapisa\346 do pliku konfiguracyjnego" },
{ NULL }, { "Katalog domowy niedost\352pny" },
{ "B\263\261d zak\263adki" }, { "B\263\261d zak\263adki" },
{ "Nie mo\277na zapisa\346 pliku zak\263adek" }, { "Nie mo\277na zapisa\346 pliku zak\263adek" },
{ "O programie" }, { "O programie" },
@ -15271,16 +15271,16 @@ static_const struct translation translation_polish [] = {
{ "Xterm dla OS/2" }, { "Xterm dla OS/2" },
{ "Tryb graficzny" }, { "Tryb graficzny" },
{ "Biblioteki obraz\363w" }, { "Biblioteki obraz\363w" },
{ NULL }, { "Renderowanie font\363w" },
{ NULL }, { "Wewn\352trzne" },
{ "OpenMP" }, { "OpenMP" },
{ NULL }, { "Nie u\277ywane w trybie tekstowym" },
{ "Wy\263\261czone" }, { "Wy\263\261czone" },
{ "w\261tek" }, { "w\261tek" },
{ "w\261tki" }, { "w\261tki" },
{ "w\261tk\363w" }, { "w\261tk\363w" },
{ NULL }, { "Katalog konfiguracyjny" },
{ NULL }, { "Brak" },
{ "Klawiszologia" }, { "Klawiszologia" },
{ "ESC poka\277 menu\n^C, q wyj\266cie\np, l przewi\361 g\363ra,d\363\263\n[, ] przewi\361 lewo,prawo\ng\363ra, d\363\263 zaznacz link\n-> wybierz link\n<- powr\363t\ng przejd\274 do URL-a\nG przejd\274 do URL-a bazuj\261cego na aktualnym\n/ szukaj\nn znajd\274 nast\352pny\nd pobierz\n* prze\263\261cz wy\266wietlanie obrazk\363w\n^W dope\263nij URL lub szukany \263a\361cuch\n^B, ^X, ^V skopiuj, wytnij, wklej do/ze schowka\nAlt-1 .. Alt-9 prze\263\261cz ekran wirtualny (svgalib lub framebuffer)" }, { "ESC poka\277 menu\n^C, q wyj\266cie\np, l przewi\361 g\363ra,d\363\263\n[, ] przewi\361 lewo,prawo\ng\363ra, d\363\263 zaznacz link\n-> wybierz link\n<- powr\363t\ng przejd\274 do URL-a\nG przejd\274 do URL-a bazuj\261cego na aktualnym\n/ szukaj\nn znajd\274 nast\352pny\nd pobierz\n* prze\263\261cz wy\266wietlanie obrazk\363w\n^W dope\263nij URL lub szukany \263a\361cuch\n^B, ^X, ^V skopiuj, wytnij, wklej do/ze schowka\nAlt-1 .. Alt-9 prze\263\261cz ekran wirtualny (svgalib lub framebuffer)" },
{ "a, t kursor do linii stanu lub tytu\263u\n{, } kursor do pocz\261tku/ko\361ca linii\n^T, ^Y nast\352pny lub poprzedni odno\266nik" }, { "a, t kursor do linii stanu lub tytu\263u\n{, } kursor do pocz\261tku/ko\361ca linii\n^T, ^Y nast\352pny lub poprzedni odno\266nik" },
@ -15293,7 +15293,7 @@ static_const struct translation translation_polish [] = {
{ "Pami\352\346 podr\352czna obraz\363w" }, { "Pami\352\346 podr\352czna obraz\363w" },
{ "Sformatowane dokumenty w pami\352ci podr\352cznej" }, { "Sformatowane dokumenty w pami\352ci podr\352cznej" },
{ "Pami\352\346 podr\352czna DNS" }, { "Pami\352\346 podr\352czna DNS" },
{ NULL }, { "Pami\352\346 podr\352czna sesji TLS" },
{ "uchwyt(\363w)" }, { "uchwyt(\363w)" },
{ "zegar(\363w)" }, { "zegar(\363w)" },
{ "oczekuj\261cych" }, { "oczekuj\261cych" },
@ -15310,14 +15310,14 @@ static_const struct translation translation_polish [] = {
{ "serwer\363w" }, { "serwer\363w" },
{ "przydzielonej pami\352ci" }, { "przydzielonej pami\352ci" },
{ "blok\363w" }, { "blok\363w" },
{ NULL }, { "przydzielonych w du\277ych blokach" },
{ NULL }, { "du\277ych blok\363w" },
{ "\277\261danej z systemu pami\352ci" }, { "\277\261danej z systemu pami\352ci" },
{ "blok\363w" }, { "blok\363w" },
{ "przydzielonej pami\352ci dla javascriptu" }, { "przydzielonej pami\352ci dla javascriptu" },
{ "Informacje o pami\352ci" }, { "Informacje o pami\352ci" },
{ NULL }, { "Najwi\352cej przydzielone" },
{ NULL }, { "Najwi\352ksze bloki" },
{ "Brak historii" }, { "Brak historii" },
{ "Brak pobra\361" }, { "Brak pobra\361" },
{ "Brak ramek" }, { "Brak ramek" },
@ -15325,7 +15325,7 @@ static_const struct translation translation_polish [] = {
{ "Ramki typu Linux lub OS/2" }, { "Ramki typu Linux lub OS/2" },
{ "Ramki KOI8-R" }, { "Ramki KOI8-R" },
{ "Ramki FreeBSD" }, { "Ramki FreeBSD" },
{ NULL }, { "Ramki UTF-8" },
{ "U\277yj ^[[11m" }, { "U\277yj ^[[11m" },
{ "Ogranicz ramki w cp850/852" }, { "Ogranicz ramki w cp850/852" },
{ "Kursor blokowy" }, { "Kursor blokowy" },
@ -15354,30 +15354,30 @@ static_const struct translation translation_polish [] = {
{ "Do\263\261czanie tekstu do nazwy hosta (wyb\363r w\352z\263a tora)" }, { "Do\263\261czanie tekstu do nazwy hosta (wyb\363r w\352z\263a tora)" },
{ "Lista domen dost\352pnych bez proxy" }, { "Lista domen dost\352pnych bez proxy" },
{ "\243\261czenie si\352 tylko przez proxy lub Socks (przydatne z torem)" }, { "\243\261czenie si\352 tylko przez proxy lub Socks (przydatne z torem)" },
{ NULL }, { "Tryb TOR w\263\261czony, poniewa\277 port socks to 9050." },
{ "Opcje SSL" }, { "Opcje SSL" },
{ "Akceptowanie b\263\352dnych certyfikat\363w i s\263abych szyfr\363w" }, { "Akceptowanie b\263\352dnych certyfikat\363w i s\263abych szyfr\363w" },
{ "Ostrzeganie o b\263\352dnych certyfikatach i s\263abych szyfrach" }, { "Ostrzeganie o b\263\352dnych certyfikatach i s\263abych szyfrach" },
{ "Odrzucanie b\263\352dnych certyfikat\363w i s\263abych szyfr\363w" }, { "Odrzucanie b\263\352dnych certyfikat\363w i s\263abych szyfr\363w" },
{ NULL }, { "U\277ycie wbudowanych certyfikat\363w" },
{ "Plik klucza certyfikatu klienta" }, { "Plik klucza certyfikatu klienta" },
{ "Plik certyfikatu klienta" }, { "Plik certyfikatu klienta" },
{ "Has\263o certyfikatu klienta (nie b\352dzie zapisane w pliku konfiguracyjnym)" }, { "Has\263o certyfikatu klienta (nie b\352dzie zapisane w pliku konfiguracyjnym)" },
{ "B\263\352dny plik" }, { "B\263\352dny plik" },
{ "Plik nie istnieje" }, { "Plik nie istnieje" },
{ "Plik ma b\263\352dny format" }, { "Plik ma b\263\352dny format" },
{ NULL }, { "B\263\261d inicjowania wbudowanych certyfikat\363w" },
{ NULL }, { "nie powiod\263o si\352" },
{ NULL }, { "Opcje DNS" },
{ NULL }, { "DNS po HTTPS (host lub URL)" },
{ "Po\263\261czenia" }, { "Po\263\261czenia" },
{ "Maksymalna liczba po\263\261cze\361" }, { "Maksymalna liczba po\263\261cze\361" },
{ "Maksymalna liczba po\263\261cze\361 z jednym serwerem" }, { "Maksymalna liczba po\263\261cze\361 z jednym serwerem" },
{ "Pr\363by (0 - bez ogranicze\361)" }, { "Pr\363by (0 - bez ogranicze\361)" },
{ "Maksymalny czas oczekiwania na po\263\261czenie (sek)" }, { "Maksymalny czas oczekiwania na po\263\261czenie (sek)" },
{ "Maks. czas oczekiwania na po\263\261czenie niewznawialne" }, { "Maks. czas oczekiwania na po\263\261czenie niewznawialne" },
{ NULL }, { "Maks. czas oczekiwania przy wielu adresach" },
{ NULL }, { "Maks. czas oczekiwania przy po\263\261czeniach podtrzymywanych" },
{ "Przypisanie do lokalnego adresu IP" }, { "Przypisanie do lokalnego adresu IP" },
{ "... adresu IPv6" }, { "... adresu IPv6" },
{ "Asynchroniczne szukanie nazw" }, { "Asynchroniczne szukanie nazw" },
@ -15445,9 +15445,9 @@ static_const struct translation translation_polish [] = {
{ "Prze\263\261cz html/plain" }, { "Prze\263\261cz html/plain" },
{ "Informacje o dokumencie" }, { "Informacje o dokumencie" },
{ "Ramka na ca\263ym ekranie" }, { "Ramka na ca\263ym ekranie" },
{ NULL }, { "Zapis schowka do pliku" },
{ NULL }, { "Odczyt schowka z pliku" },
{ NULL }, { "Schowek jest pusty" },
{ "Zapisz ustawienia HTML" }, { "Zapisz ustawienia HTML" },
{ "Zestaw znak\363w" }, { "Zestaw znak\363w" },
{ "Domy\266lny" }, { "Domy\266lny" },
@ -15461,7 +15461,7 @@ static_const struct translation translation_polish [] = {
{ "Widok" }, { "Widok" },
{ "Link" }, { "Link" },
{ "Pobieranie" }, { "Pobieranie" },
{ NULL }, { "Okna" },
{ "Ustawienia" }, { "Ustawienia" },
{ "Pomoc" }, { "Pomoc" },
{ "Wprowad\274 URL" }, { "Wprowad\274 URL" },
@ -15472,8 +15472,8 @@ static_const struct translation translation_polish [] = {
{ "(s. " }, { "(s. " },
{ " z " }, { " z " },
{ ")" }, { ")" },
{ NULL }, { "Formatowanie dokumentu" },
{ NULL }, { "Wyszukiwanie" },
{ "Oczekuj\261ce w kolejce" }, { "Oczekuj\261ce w kolejce" },
{ "Szukam serwera" }, { "Szukam serwera" },
{ "Nawi\261zywanie po\263\261czenia" }, { "Nawi\261zywanie po\263\261czenia" },
@ -15489,7 +15489,7 @@ static_const struct translation translation_polish [] = {
{ "B\263\261d wewn\352trzny" }, { "B\263\261d wewn\352trzny" },
{ "Brak pami\352ci" }, { "Brak pami\352ci" },
{ "Nie znaleziono serwera" }, { "Nie znaleziono serwera" },
{ NULL }, { "Nie znaleziono proxy" },
{ "B\263\261d przy zapisywaniu do gniazda" }, { "B\263\261d przy zapisywaniu do gniazda" },
{ "B\263\261d przy czytaniu z gniazda" }, { "B\263\261d przy czytaniu z gniazda" },
{ "Dane zosta\263y zmodyfikowane" }, { "Dane zosta\263y zmodyfikowane" },
@ -15501,7 +15501,7 @@ static_const struct translation translation_polish [] = {
{ "Cykliczne przekierowanie" }, { "Cykliczne przekierowanie" },
{ "Plik zbyt du\277y" }, { "Plik zbyt du\277y" },
{ "Nieprawid\263owa odpowied\274 HTTP" }, { "Nieprawid\263owa odpowied\274 HTTP" },
{ NULL }, { "HTTP 100 (\?\?\?)" },
{ "Plik pusty" }, { "Plik pusty" },
{ "Przekierowanie HTTPS nie powiod\263o si\352" }, { "Przekierowanie HTTPS nie powiod\263o si\352" },
{ "B\263\352dny certyfikat" }, { "B\263\352dny certyfikat" },
@ -15542,7 +15542,7 @@ static_const struct translation translation_polish [] = {
{ "Przerwij i usu\361 plik" }, { "Przerwij i usu\361 plik" },
{ "Tak" }, { "Tak" },
{ "Nie" }, { "Nie" },
{ NULL }, { "Nigdy" },
{ "Katalog" }, { "Katalog" },
{ "Plik ju\277 istnieje" }, { "Plik ju\277 istnieje" },
{ "ju\277 istnieje jako aktywne \266ci\261ganie." }, { "ju\277 istnieje jako aktywne \266ci\261ganie." },
@ -15603,7 +15603,7 @@ static_const struct translation translation_polish [] = {
{ "Nie znaleziono wyra\277enia" }, { "Nie znaleziono wyra\277enia" },
{ "B\263\261d zapisu" }, { "B\263\261d zapisu" },
{ "B\263\261d zapisu do pliku" }, { "B\263\261d zapisu do pliku" },
{ NULL }, { "B\263\261d odczytu z pliku" },
{ "Poka\277 map\352 obrazk\363w" }, { "Poka\277 map\352 obrazk\363w" },
{ "Wybierz link" }, { "Wybierz link" },
{ "Otw\363rz w nowym oknie" }, { "Otw\363rz w nowym oknie" },
@ -15646,8 +15646,8 @@ static_const struct translation translation_polish [] = {
{ "Tak naprawd\352 to jeste\266 nigdzie!" }, { "Tak naprawd\352 to jeste\266 nigdzie!" },
{ "Dokument nie ma nag\263\363wka" }, { "Dokument nie ma nag\263\363wka" },
{ "URL" }, { "URL" },
{ NULL }, { "Adres IP" },
{ NULL }, { "Adresy IP" },
{ "Rozmiar" }, { "Rozmiar" },
{ "skompresowany" }, { "skompresowany" },
{ "niekompletne" }, { "niekompletne" },
@ -15658,8 +15658,8 @@ static_const struct translation translation_polish [] = {
{ "Data" }, { "Data" },
{ "Ostatnia zmiana" }, { "Ostatnia zmiana" },
{ "Szyfr SSL" }, { "Szyfr SSL" },
{ NULL }, { "Instytucja certyfikacji" },
{ NULL }, { "Instytucje certyfikacji" },
{ "J\352zyk" }, { "J\352zyk" },
{ "Domy\266lny" }, { "Domy\266lny" },
{ "Przejd\274 do odno\266nika" }, { "Przejd\274 do odno\266nika" },
@ -15674,7 +15674,7 @@ static_const struct translation translation_polish [] = {
{ "Dodaj" }, { "Dodaj" },
{ "Usu\361" }, { "Usu\361" },
{ "Edytuj" }, { "Edytuj" },
{ NULL }, { "Zaznacz" },
{ "Przenie\266" }, { "Przenie\266" },
{ "Nie zaznaczy\263e\266 niczego" }, { "Nie zaznaczy\263e\266 niczego" },
{ "Odznacz wszystkie" }, { "Odznacz wszystkie" },
@ -15735,8 +15735,8 @@ static_const struct translation translation_polish [] = {
{ "Program Tn3270 (% jest zast\352powany przez \"host\" lub przez \"host port\")" }, { "Program Tn3270 (% jest zast\352powany przez \"host\" lub przez \"host port\")" },
{ "Program MMS (% jest zast\352powany przez URL)" }, { "Program MMS (% jest zast\352powany przez URL)" },
{ "Program Magnet (% jest zast\352powany przez URL)" }, { "Program Magnet (% jest zast\352powany przez URL)" },
{ NULL }, { "Program Gopher (% jest zast\352powany przez URL)" },
{ "Program pow\263oki" }, { "Pow\263oka do wykonywania polece\361 zewn\352trznych (% jest zast\352powany poleceniem)" },
{ "Obs\263uga poczty i us\263ugi Telnet" }, { "Obs\263uga poczty i us\263ugi Telnet" },
{ "Obs\263uga poczty, us\263ugi Telnet i pow\263oki" }, { "Obs\263uga poczty, us\263ugi Telnet i pow\263oki" },
{ "Nie okre\266lono programu" }, { "Nie okre\266lono programu" },
@ -15746,7 +15746,7 @@ static_const struct translation translation_polish [] = {
{ "tn3270" }, { "tn3270" },
{ "mms" }, { "mms" },
{ "magneta" }, { "magneta" },
{ NULL }, { "gopher" },
{ "B\263\352dny adres e-mail" }, { "B\263\352dny adres e-mail" },
{ "Niew\263a\266ciwy adres serwera dla programu Telnet" }, { "Niew\263a\266ciwy adres serwera dla programu Telnet" },
{ "Niew\263a\266ciwy adres serwera dla programu Tn3270" }, { "Niew\263a\266ciwy adres serwera dla programu Tn3270" },
@ -15783,9 +15783,9 @@ static_const struct translation translation_polish [] = {
{ "8-bitowa korekcja gamma" }, { "8-bitowa korekcja gamma" },
{ "16-bitowa korekcja gamma" }, { "16-bitowa korekcja gamma" },
{ "Automatyczna korekcja gamma" }, { "Automatyczna korekcja gamma" },
{ NULL }, { "Paleta RGB 8x8x4" },
{ NULL }, { "Paleta RGB 6x6x6" },
{ NULL }, { "Zmie\361 palet\352" },
{ "Przykrycie ekranu zamiast przewijania" }, { "Przykrycie ekranu zamiast przewijania" },
{ "Uwaga" }, { "Uwaga" },
{ "Pytanie" }, { "Pytanie" },
@ -15799,16 +15799,16 @@ static_const struct translation translation_polish [] = {
{ "\246ledzenie b\263\352d\363w Javascriptu" }, { "\246ledzenie b\263\352d\363w Javascriptu" },
{ "\246ledzenie ostrze\277e\361 Javascriptu" }, { "\246ledzenie ostrze\277e\361 Javascriptu" },
{ "Opcje r\363\277ne" }, { "Opcje r\363\277ne" },
{ NULL }, { "Fonty" },
{ NULL }, { "Font zwyk\263y" },
{ NULL }, { "Font pogrubiony" },
{ NULL }, { "Font o sta\263ej szeroko\266ci" },
{ NULL }, { "Font pogrubiony o sta\263ej szeroko\266ci" },
{ NULL }, { "Font pochy\263y" },
{ NULL }, { "Font pochy\263y pogrubiony" },
{ NULL }, { "Font pochy\263y o sta\263ej szeroko\266ci" },
{ NULL }, { "Font pochy\263y, pogrubiony o sta\263ej szeroko\266ci" },
{ NULL }, { "Font wbudowany" },
{ "B\263\261d Javascriptu" }, { "B\263\261d Javascriptu" },
{ "Ostrze\277enie Javascriptu" }, { "Ostrze\277enie Javascriptu" },
{ "Pomi\361" }, { "Pomi\361" },
@ -15834,12 +15834,12 @@ static_const struct translation translation_polish [] = {
{ "Kolor ramki paska przewijania" }, { "Kolor ramki paska przewijania" },
{ "Plik zak\263adek" }, { "Plik zak\263adek" },
{ "Zapis historii URL-i przy wy\263\261czaniu" }, { "Zapis historii URL-i przy wy\263\261czaniu" },
{ NULL }, { "Ciasteczka" },
{ NULL }, { "W\263\261czenie ciasteczek" },
{ NULL }, { "Zapis ciasteczek" },
{ NULL }, { "Maksymalny wiek ciasteczek w dniach (0 - niesko\361czony)" },
{ NULL }, { "Wyczy\266\346 ciasteczka" },
{ NULL }, { "ciasteczka zosta\263y wyczyszczone" },
{ "Wpisz kolory jako tr\363jki RGB" }, { "Wpisz kolory jako tr\363jki RGB" },
{ "Pami\352\346 dla Javascriptu" }, { "Pami\352\346 dla Javascriptu" },
{ "Skalowanie wszystkich obraz\363w" }, { "Skalowanie wszystkich obraz\363w" },
@ -15911,7 +15911,7 @@ static_const struct translation translation_polish [] = {
{ "C" }, { "C" },
{ "S" }, { "S" },
{ "R" }, { "R" },
{ NULL }, { "B" },
{ "O" }, { "O" },
{ "O" }, { "O" },
{ "K" }, { "K" },

30
links.h
View File

@ -1049,7 +1049,7 @@ unsigned char *os_conv_to_external_path(unsigned char *, unsigned char *);
unsigned char *os_fixup_external_program(unsigned char *); unsigned char *os_fixup_external_program(unsigned char *);
int exe(unsigned char *, int); int exe(unsigned char *, int);
#ifdef WIN #ifdef WIN
int exe_on_background(unsigned char *, unsigned char *); int exe_on_background(unsigned char *, unsigned char *, int);
int windows_charset(void); int windows_charset(void);
#define HAVE_EXE_ON_BACKGROUND #define HAVE_EXE_ON_BACKGROUND
#endif #endif
@ -1300,8 +1300,9 @@ int defrag_entry(struct cache_entry *);
void truncate_entry(struct cache_entry *, off_t, int); void truncate_entry(struct cache_entry *, off_t, int);
void free_entry_to(struct cache_entry *, off_t); void free_entry_to(struct cache_entry *, off_t);
void delete_entry_content(struct cache_entry *); void delete_entry_content(struct cache_entry *);
void delete_cache_entry(struct cache_entry *e);
void trim_cache_entry(struct cache_entry *e); void trim_cache_entry(struct cache_entry *e);
void delete_cache_entry(struct cache_entry *e);
void finish_cache_entry(struct cache_entry *e);
/* sched.c */ /* sched.c */
@ -2174,9 +2175,11 @@ struct style {
/* ?0 are background, ?1 foreground. /* ?0 are background, ?1 foreground.
* These are unrounded 8-bit sRGB space * These are unrounded 8-bit sRGB space
*/ */
unsigned char flags; /* non-zero means underline */ unsigned char flags; /* FF_ flags */
int height; int height;
long underline_color; /* Valid only if flags are nonzero */ long line_color; /* Valid only if flags includes FF_UNDERLINE or
* FF_STRIKE
*/
int mono_space; /* -1 if the font is not monospaced int mono_space; /* -1 if the font is not monospaced
* width of the space otherwise * width of the space otherwise
*/ */
@ -2266,6 +2269,7 @@ int hack_rgb(int rgb);
#define FF_MONOSPACED 2 #define FF_MONOSPACED 2
#define FF_ITALIC 4 #define FF_ITALIC 4
#define FF_UNDERLINE 8 #define FF_UNDERLINE 8
#define FF_STRIKE 16
#ifndef USE_ITALIC #ifndef USE_ITALIC
#define FF_SHAPES 4 #define FF_SHAPES 4
@ -3168,6 +3172,10 @@ struct g_object_tag {
#define IM_WEBP 6 #define IM_WEBP 6
#endif /* #ifdef HAVE_WEBP */ #endif /* #ifdef HAVE_WEBP */
#ifdef HAVE_AVIF
#define IM_AVIF 7
#endif /* #ifdef HAVE_AVIF */
#define MEANING_DIMS 0 #define MEANING_DIMS 0
#define MEANING_AUTOSCALE 1 #define MEANING_AUTOSCALE 1
struct cached_image { struct cached_image {
@ -4380,6 +4388,19 @@ void add_webp_version(unsigned char **s, int *l);
#endif #endif
/* avif.c */
#if defined(G) && defined(HAVE_AVIF)
void avif_start(struct cached_image *cimg);
void avif_restart(struct cached_image *cimg, unsigned char *data, int length);
void avif_finish(struct cached_image *cimg);
void avif_destroy_decoder(struct cached_image *cimg);
void add_avif_version(unsigned char **s, int *l);
#endif
/* img.c */ /* img.c */
#ifdef G #ifdef G
@ -4539,6 +4560,7 @@ void init_grview(void);
#define AT_FIXED 8 #define AT_FIXED 8
#define AT_GRAPHICS 16 #define AT_GRAPHICS 16
#define AT_INVERT 32 #define AT_INVERT 32
#define AT_STRIKE 64
#define AL_LEFT 0 #define AL_LEFT 0
#define AL_CENTER 1 #define AL_CENTER 1

View File

@ -1,7 +1,7 @@
<WARPIN> <WARPIN>
<HEAD> <HEAD>
<PCK INDEX="1" <PCK INDEX="1"
PACKAGEID="Mikulas Patocka\Links\Base package\2\28" PACKAGEID="Mikulas Patocka\Links\Base package\2\29"
TARGET="?:\Links" TARGET="?:\Links"
SELECT SELECT
TITLE="Links" TITLE="Links"

View File

@ -89,7 +89,7 @@ File c:\cygwin64\bin\cygcrypto-1.1.dll
File c:\cygwin64\bin\cygdatrie-1.dll File c:\cygwin64\bin\cygdatrie-1.dll
File c:\cygwin64\bin\cygdeflate-0.dll File c:\cygwin64\bin\cygdeflate-0.dll
File c:\cygwin64\bin\cygexpat-1.dll File c:\cygwin64\bin\cygexpat-1.dll
File c:\cygwin64\bin\cygevent-2-0-5.dll File c:\cygwin64\bin\cygevent-2-1-7.dll
File c:\cygwin64\bin\cygffi-6.dll File c:\cygwin64\bin\cygffi-6.dll
File c:\cygwin64\bin\cygfontconfig-1.dll File c:\cygwin64\bin\cygfontconfig-1.dll
File c:\cygwin64\bin\cygfreetype-6.dll File c:\cygwin64\bin\cygfreetype-6.dll
@ -114,10 +114,11 @@ File c:\cygwin64\bin\cygpcre-1.dll
File c:\cygwin64\bin\cygpixman-1-0.dll File c:\cygwin64\bin\cygpixman-1-0.dll
File c:\cygwin64\bin\cygpng16-16.dll File c:\cygwin64\bin\cygpng16-16.dll
File c:\cygwin64\bin\cygrsvg-2-2.dll File c:\cygwin64\bin\cygrsvg-2-2.dll
File c:\cygwin64\bin\cygsharpyuv-0.dll
File c:\cygwin64\bin\cygssl-1.1.dll File c:\cygwin64\bin\cygssl-1.1.dll
File c:\cygwin64\bin\cygstdc++-6.dll File c:\cygwin64\bin\cygstdc++-6.dll
File c:\cygwin64\bin\cygthai-0.dll File c:\cygwin64\bin\cygthai-0.dll
File c:\cygwin64\bin\cygtiff-6.dll File c:\cygwin64\bin\cygtiff-7.dll
File c:\cygwin64\bin\cyguuid-1.dll File c:\cygwin64\bin\cyguuid-1.dll
File c:\cygwin64\bin\cygwebp-7.dll File c:\cygwin64\bin\cygwebp-7.dll
File c:\cygwin64\bin\cygxcb-1.dll File c:\cygwin64\bin\cygxcb-1.dll
@ -182,7 +183,7 @@ Delete "$INSTDIR\cygcroco-0.6-3.dll"
Delete "$INSTDIR\cygcrypto-1.1.dll" Delete "$INSTDIR\cygcrypto-1.1.dll"
Delete "$INSTDIR\cygdatrie-1.dll" Delete "$INSTDIR\cygdatrie-1.dll"
Delete "$INSTDIR\cygdeflate-0.dll" Delete "$INSTDIR\cygdeflate-0.dll"
Delete "$INSTDIR\cygevent-2-0-5.dll" Delete "$INSTDIR\cygevent-2-1-7.dll"
Delete "$INSTDIR\cygexpat-1.dll" Delete "$INSTDIR\cygexpat-1.dll"
Delete "$INSTDIR\cygffi-6.dll" Delete "$INSTDIR\cygffi-6.dll"
Delete "$INSTDIR\cygfontconfig-1.dll" Delete "$INSTDIR\cygfontconfig-1.dll"
@ -208,10 +209,11 @@ Delete "$INSTDIR\cygpcre-1.dll"
Delete "$INSTDIR\cygpixman-1-0.dll" Delete "$INSTDIR\cygpixman-1-0.dll"
Delete "$INSTDIR\cygpng16-16.dll" Delete "$INSTDIR\cygpng16-16.dll"
Delete "$INSTDIR\cygrsvg-2-2.dll" Delete "$INSTDIR\cygrsvg-2-2.dll"
Delete "$INSTDIR\cygsharpyuv-0.dll"
Delete "$INSTDIR\cygssl-1.1.dll" Delete "$INSTDIR\cygssl-1.1.dll"
Delete "$INSTDIR\cygstdc++-6.dll" Delete "$INSTDIR\cygstdc++-6.dll"
Delete "$INSTDIR\cygthai-0.dll" Delete "$INSTDIR\cygthai-0.dll"
Delete "$INSTDIR\cygtiff-6.dll" Delete "$INSTDIR\cygtiff-7.dll"
Delete "$INSTDIR\cyguuid-1.dll" Delete "$INSTDIR\cyguuid-1.dll"
Delete "$INSTDIR\cygwebp-7.dll" Delete "$INSTDIR\cygwebp-7.dll"
Delete "$INSTDIR\cygwin1.dll" Delete "$INSTDIR\cygwin1.dll"

5
menu.c
View File

@ -221,6 +221,10 @@ static void menu_version(void *term_)
#ifdef HAVE_WEBP #ifdef HAVE_WEBP
add_to_str(&s, &l, cast_uchar ", "); add_to_str(&s, &l, cast_uchar ", ");
add_webp_version(&s, &l); add_webp_version(&s, &l);
#endif
#ifdef HAVE_AVIF
add_to_str(&s, &l, cast_uchar ", ");
add_avif_version(&s, &l);
#endif #endif
add_to_str(&s, &l, cast_uchar "\n"); add_to_str(&s, &l, cast_uchar "\n");
#endif #endif
@ -4710,4 +4714,3 @@ void free_history_lists(void)
free_history(js_get_string_history); /* is in jsint.c */ free_history(js_get_string_history); /* is in jsint.c */
#endif #endif
} }

View File

@ -1647,7 +1647,7 @@ int exe(unsigned char *path, int fg)
return 0; return 0;
} }
int exe_on_background(unsigned char *path, unsigned char *del) int exe_on_background(unsigned char *path, unsigned char *del, int fg)
{ {
#ifdef __CYGWIN__ #ifdef __CYGWIN__
unsigned char *x1; unsigned char *x1;
@ -1692,15 +1692,29 @@ int exe_on_background(unsigned char *path, unsigned char *del)
if (use_create_process) { if (use_create_process) {
PROCESS_INFORMATION pi; PROCESS_INFORMATION pi;
STARTUPINFOA si; STARTUPINFOA si;
unsigned char *cwd;
memset(&pi, 0, sizeof pi); memset(&pi, 0, sizeof pi);
memset(&si, 0, sizeof si); memset(&si, 0, sizeof si);
si.cb = sizeof si; si.cb = sizeof si;
cwd = NULL;
if (fg == 2) {
unsigned char *bs;
cwd = stracpy(path_to_exe);
bs = cast_uchar strrchr(cast_const_char cwd, '\\');
if (bs) {
if (cwd[1] == ':' && cwd[2] == '\\' && bs == &cwd[2])
bs++;
*bs = 0;
}
}
fd_lock(); fd_lock();
if (CreateProcessA(cast_char x1, cast_char arg, NULL, NULL, FALSE, CREATE_NO_WINDOW | (is_winnt() ? DETACHED_PROCESS : 0), NULL, NULL, &si, &pi)) { if (CreateProcessA(cast_char x1, cast_char arg, NULL, NULL, FALSE, CREATE_NO_WINDOW | (is_winnt() ? DETACHED_PROCESS : 0), NULL, cast_const_char cwd, &si, &pi)) {
CloseHandle(pi.hProcess); CloseHandle(pi.hProcess);
CloseHandle(pi.hThread); CloseHandle(pi.hThread);
} }
fd_unlock(); fd_unlock();
if (cwd)
mem_free(cwd);
} else { } else {
/* We need to fork here so that we can close handles */ /* We need to fork here so that we can close handles */
pid_t pid; pid_t pid;

View File

@ -127,6 +127,9 @@ void setcstate(struct connection *c, int state)
{ {
struct status *stat; struct status *stat;
struct list_head *lstat; struct list_head *lstat;
if (state < 0)
if (c->cache)
finish_cache_entry(c->cache);
if (c->state < 0 && state >= 0) c->prev_error = c->state; if (c->state < 0 && state >= 0) c->prev_error = c->state;
if ((c->state = state) == S_TRANS) { if ((c->state = state) == S_TRANS) {
struct remaining_info *r = &c->prg; struct remaining_info *r = &c->prg;

View File

@ -278,7 +278,8 @@ static void x_print_screen_status(struct terminal *term, void *ses_)
{ {
struct session *ses = (struct session *)ses_; struct session *ses = (struct session *)ses_;
if (!F) { if (!F) {
unsigned char color = get_session_attribute(ses, proxies.only_proxies); decc_volatile int p = proxies.only_proxies;
unsigned char color = get_session_attribute(ses, p);
fill_area(term, 0, term->y - 1, term->x, 1, ' ', color); fill_area(term, 0, term->y - 1, term->x, 1, ' ', color);
if (ses->st) print_text(term, 0, term->y - 1, (int)strlen(cast_const_char ses->st), ses->st, COLOR_STATUS); if (ses->st) print_text(term, 0, term->y - 1, (int)strlen(cast_const_char ses->st), ses->st, COLOR_STATUS);
#ifdef G #ifdef G
@ -294,7 +295,8 @@ static void x_print_screen_title(struct terminal *term, void *ses_)
{ {
struct session *ses = (struct session *)ses_; struct session *ses = (struct session *)ses_;
unsigned char *m; unsigned char *m;
unsigned char color = get_session_attribute(ses, proxies.only_proxies); decc_volatile int p = proxies.only_proxies;
unsigned char color = get_session_attribute(ses, p);
if (!term->spec->col) color = COLOR_TITLE; if (!term->spec->col) color = COLOR_TITLE;
fill_area(term, 0, 0, term->x, 1, ' ', color); fill_area(term, 0, 0, term->x, 1, ' ', color);
if ((m = print_current_title(ses))) { if ((m = print_current_title(ses))) {

View File

@ -68,6 +68,7 @@ static_const const_char_ptr domain_suffix[] = {
"*.oci.customer-oci.com", "*.oci.customer-oci.com",
"*.ocp.customer-oci.com", "*.ocp.customer-oci.com",
"*.ocs.customer-oci.com", "*.ocs.customer-oci.com",
"*.on-acorn.io",
"*.on-k3s.io", "*.on-k3s.io",
"*.on-rancher.cloud", "*.on-rancher.cloud",
"*.on-rio.io", "*.on-rio.io",
@ -99,6 +100,7 @@ static_const const_char_ptr domain_suffix[] = {
"*.triton.zone", "*.triton.zone",
"*.tst.site", "*.tst.site",
"*.uberspace.de", "*.uberspace.de",
"*.user.fm",
"*.user.localcert.dev", "*.user.localcert.dev",
"*.usercontent.goog", "*.usercontent.goog",
"*.vps.myjino.ru", "*.vps.myjino.ru",
@ -111,12 +113,29 @@ static_const const_char_ptr domain_suffix[] = {
"0e.vc", "0e.vc",
"1.azurestaticapps.net", "1.azurestaticapps.net",
"1.bg", "1.bg",
"123hjemmeside.dk",
"123hjemmeside.no",
"123homepage.it",
"123kotisivu.fi",
"123minsida.se",
"123miweb.es",
"123paginaweb.pt",
"123sait.ru",
"123siteweb.fr",
"123webseite.at",
"123webseite.de",
"123website.be",
"123website.ch",
"123website.lu",
"123website.nl",
"12hp.at", "12hp.at",
"12hp.ch", "12hp.ch",
"12hp.de", "12hp.de",
"1337.pictures", "1337.pictures",
"16-b.it", "16-b.it",
"180r.com",
"1kapp.com", "1kapp.com",
"2-d.jp",
"2.azurestaticapps.net", "2.azurestaticapps.net",
"2.bg", "2.bg",
"2000.hu", "2000.hu",
@ -124,6 +143,7 @@ static_const const_char_ptr domain_suffix[] = {
"2ix.at", "2ix.at",
"2ix.ch", "2ix.ch",
"2ix.de", "2ix.de",
"3.azurestaticapps.net",
"3.bg", "3.bg",
"32-b.it", "32-b.it",
"3utilities.com", "3utilities.com",
@ -231,15 +251,17 @@ static_const const_char_ptr domain_suffix[] = {
"aco", "aco",
"act.au", "act.au",
"act.edu.au", "act.edu.au",
"activetrail.biz",
"actor", "actor",
"ad", "ad",
"ad.jp", "ad.jp",
"adac",
"adachi.tokyo.jp", "adachi.tokyo.jp",
"adimo.co.uk", "adimo.co.uk",
"adm.br", "adm.br",
"adobeaemcloud.com", "adobeaemcloud.com",
"adobeaemcloud.net", "adobeaemcloud.net",
"adobeio-static.net",
"adobeioruntime.net",
"ads", "ads",
"adult", "adult",
"adult.ht", "adult.ht",
@ -264,6 +286,7 @@ static_const const_char_ptr domain_suffix[] = {
"afjord.no", "afjord.no",
"afl", "afl",
"africa", "africa",
"africa.bj",
"africa.com", "africa.com",
"ag", "ag",
"ag.it", "ag.it",
@ -279,6 +302,7 @@ static_const const_char_ptr domain_suffix[] = {
"agric.za", "agric.za",
"agriculture.museum", "agriculture.museum",
"agrigento.it", "agrigento.it",
"agro.bj",
"agro.bo", "agro.bo",
"agro.pl", "agro.pl",
"aguni.okinawa.jp", "aguni.okinawa.jp",
@ -318,8 +342,19 @@ static_const const_char_ptr domain_suffix[] = {
"aju.br", "aju.br",
"ak.us", "ak.us",
"akabira.hokkaido.jp", "akabira.hokkaido.jp",
"akadns.net",
"akagi.shimane.jp", "akagi.shimane.jp",
"akaiwa.okayama.jp", "akaiwa.okayama.jp",
"akamai-staging.net",
"akamai.net",
"akamaiedge-staging.net",
"akamaiedge.net",
"akamaihd-staging.net",
"akamaihd.net",
"akamaiorigin-staging.net",
"akamaiorigin.net",
"akamaized-staging.net",
"akamaized.net",
"akashi.hyogo.jp", "akashi.hyogo.jp",
"akdn", "akdn",
"aki.kochi.jp", "aki.kochi.jp",
@ -403,7 +438,6 @@ static_const const_char_ptr domain_suffix[] = {
"anan.tokushima.jp", "anan.tokushima.jp",
"anani.br", "anani.br",
"ancona.it", "ancona.it",
"and.mom",
"and.museum", "and.museum",
"andasuolo.no", "andasuolo.no",
"andebu.no", "andebu.no",
@ -447,6 +481,7 @@ static_const const_char_ptr domain_suffix[] = {
"ap.gov.pl", "ap.gov.pl",
"ap.it", "ap.it",
"ap.leg.br", "ap.leg.br",
"ap.ngrok.io",
"aparecida.br", "aparecida.br",
"apartments", "apartments",
"api.gov.uk", "api.gov.uk",
@ -489,6 +524,7 @@ static_const const_char_ptr domain_suffix[] = {
"archaeological.museum", "archaeological.museum",
"archaeology.museum", "archaeology.museum",
"archi", "archi",
"architectes.bj",
"architecture.museum", "architecture.museum",
"ardal.no", "ardal.no",
"aremark.no", "aremark.no",
@ -565,7 +601,6 @@ static_const const_char_ptr domain_suffix[] = {
"assassination.museum", "assassination.museum",
"assisi.museum", "assisi.museum",
"assn.lk", "assn.lk",
"asso.bj",
"asso.ci", "asso.ci",
"asso.dz", "asso.dz",
"asso.eu.org", "asso.eu.org",
@ -579,6 +614,7 @@ static_const const_char_ptr domain_suffix[] = {
"associates", "associates",
"association.aero", "association.aero",
"association.museum", "association.museum",
"assur.bj",
"asti.it", "asti.it",
"astronomy.museum", "astronomy.museum",
"asuke.aichi.jp", "asuke.aichi.jp",
@ -600,6 +636,7 @@ static_const const_char_ptr domain_suffix[] = {
"attorney", "attorney",
"au", "au",
"au.eu.org", "au.eu.org",
"au.ngrok.io",
"auction", "auction",
"audi", "audi",
"audible", "audible",
@ -622,6 +659,7 @@ static_const const_char_ptr domain_suffix[] = {
"author.aero", "author.aero",
"auto", "auto",
"auto.pl", "auto.pl",
"autocode.dev",
"automotive.museum", "automotive.museum",
"autos", "autos",
"av.it", "av.it",
@ -632,6 +670,7 @@ static_const const_char_ptr domain_suffix[] = {
"aviation.museum", "aviation.museum",
"avocat.fr", "avocat.fr",
"avocat.pro", "avocat.pro",
"avocats.bj",
"avoues.fr", "avoues.fr",
"aw", "aw",
"awaji.hyogo.jp", "awaji.hyogo.jp",
@ -713,7 +752,6 @@ static_const const_char_ptr domain_suffix[] = {
"bari.it", "bari.it",
"barletta-trani-andria.it", "barletta-trani-andria.it",
"barlettatraniandria.it", "barlettatraniandria.it",
"barreau.bj",
"barrel-of-knowledge.info", "barrel-of-knowledge.info",
"barrell-of-knowledge.info", "barrell-of-knowledge.info",
"barsy.bg", "barsy.bg",
@ -1013,6 +1051,7 @@ static_const const_char_ptr domain_suffix[] = {
"bolzano.it", "bolzano.it",
"bom", "bom",
"bomlo.no", "bomlo.no",
"bona.jp",
"bond", "bond",
"bonn.museum", "bonn.museum",
"boo", "boo",
@ -1084,7 +1123,6 @@ static_const const_char_ptr domain_suffix[] = {
"bt.it", "bt.it",
"bu.no", "bu.no",
"budejju.no", "budejju.no",
"bugatti",
"build", "build",
"builders", "builders",
"building.museum", "building.museum",
@ -1163,9 +1201,10 @@ static_const const_char_ptr domain_suffix[] = {
"campobasso.it", "campobasso.it",
"can.museum", "can.museum",
"canada.museum", "canada.museum",
"cancerresearch",
"candypop.jp", "candypop.jp",
"canon", "canon",
"canva-apps.cn",
"canva-apps.com",
"capebreton.museum", "capebreton.museum",
"capetown", "capetown",
"capital", "capital",
@ -1293,6 +1332,7 @@ static_const const_char_ptr domain_suffix[] = {
"cesena-forli.it", "cesena-forli.it",
"cesenaforli.it", "cesenaforli.it",
"cf", "cf",
"cf-ipfs.com",
"cfa", "cfa",
"cfd", "cfd",
"cg", "cg",
@ -1431,6 +1471,7 @@ static_const const_char_ptr domain_suffix[] = {
"cloudapps.digital", "cloudapps.digital",
"cloudcontrolapp.com", "cloudcontrolapp.com",
"cloudcontrolled.com", "cloudcontrolled.com",
"cloudflare-ipfs.com",
"cloudfront.net", "cloudfront.net",
"cloudfunctions.net", "cloudfunctions.net",
"cloudjiffy.net", "cloudjiffy.net",
@ -1472,6 +1513,7 @@ static_const const_char_ptr domain_suffix[] = {
"co.at", "co.at",
"co.bb", "co.bb",
"co.bi", "co.bi",
"co.bj",
"co.bn", "co.bn",
"co.business", "co.business",
"co.bw", "co.bw",
@ -1576,6 +1618,7 @@ static_const const_char_ptr domain_suffix[] = {
"com.bb", "com.bb",
"com.bh", "com.bh",
"com.bi", "com.bi",
"com.bj",
"com.bm", "com.bm",
"com.bn", "com.bn",
"com.bo", "com.bo",
@ -1778,6 +1821,7 @@ static_const const_char_ptr domain_suffix[] = {
"crafts.museum", "crafts.museum",
"cranbrook.museum", "cranbrook.museum",
"cranky.jp", "cranky.jp",
"crap.jp",
"crd.co", "crd.co",
"creation.museum", "creation.museum",
"credit", "credit",
@ -1872,6 +1916,7 @@ static_const const_char_ptr domain_suffix[] = {
"davvenjarga.no", "davvenjarga.no",
"davvesiida.no", "davvesiida.no",
"day", "day",
"daynight.jp",
"dazaifu.fukuoka.jp", "dazaifu.fukuoka.jp",
"dc.us", "dc.us",
"dclk", "dclk",
@ -2012,6 +2057,7 @@ static_const const_char_ptr domain_suffix[] = {
"doesntexist.com", "doesntexist.com",
"doesntexist.org", "doesntexist.org",
"dog", "dog",
"dojin.com",
"dolls.museum", "dolls.museum",
"domains", "domains",
"donetsk.ua", "donetsk.ua",
@ -2128,9 +2174,11 @@ static_const const_char_ptr domain_suffix[] = {
"echizen.fukui.jp", "echizen.fukui.jp",
"ecn.br", "ecn.br",
"eco", "eco",
"eco.bj",
"eco.br", "eco.br",
"ecologia.bo", "ecologia.bo",
"ecommerce-shop.pl", "ecommerce-shop.pl",
"econo.bj",
"economia.bo", "economia.bo",
"ed.ao", "ed.ao",
"ed.ci", "ed.ci",
@ -2140,7 +2188,11 @@ static_const const_char_ptr domain_suffix[] = {
"edeka", "edeka",
"edgeapp.net", "edgeapp.net",
"edgecompute.app", "edgecompute.app",
"edgekey-staging.net",
"edgekey.net",
"edgestack.me", "edgestack.me",
"edgesuite-staging.net",
"edgesuite.net",
"editorx.io", "editorx.io",
"edogawa.tokyo.jp", "edogawa.tokyo.jp",
"edu", "edu",
@ -2154,6 +2206,7 @@ static_const const_char_ptr domain_suffix[] = {
"edu.bb", "edu.bb",
"edu.bh", "edu.bh",
"edu.bi", "edu.bi",
"edu.bj",
"edu.bm", "edu.bm",
"edu.bn", "edu.bn",
"edu.bo", "edu.bo",
@ -2280,6 +2333,7 @@ static_const const_char_ptr domain_suffix[] = {
"edugit.io", "edugit.io",
"ee", "ee",
"ee.eu.org", "ee.eu.org",
"eek.jp",
"eero-stage.online", "eero-stage.online",
"eero.online", "eero.online",
"eg", "eg",
@ -2398,6 +2452,7 @@ static_const const_char_ptr domain_suffix[] = {
"eu.encoway.cloud", "eu.encoway.cloud",
"eu.int", "eu.int",
"eu.meteorapp.com", "eu.meteorapp.com",
"eu.ngrok.io",
"eu.org", "eu.org",
"eu.platform.sh", "eu.platform.sh",
"eu.pythonanywhere.com", "eu.pythonanywhere.com",
@ -2448,6 +2503,7 @@ static_const const_char_ptr domain_suffix[] = {
"fashion", "fashion",
"fashionstore.jp", "fashionstore.jp",
"fast", "fast",
"fastly-edge.com",
"fastly-terrarium.com", "fastly-terrarium.com",
"fastlylb.net", "fastlylb.net",
"faststacks.net", "faststacks.net",
@ -2521,6 +2577,7 @@ static_const const_char_ptr domain_suffix[] = {
"firewall-gateway.com", "firewall-gateway.com",
"firewall-gateway.de", "firewall-gateway.de",
"firewall-gateway.net", "firewall-gateway.net",
"firewalledreplit.co",
"fireweb.app", "fireweb.app",
"firm.co", "firm.co",
"firm.dk", "firm.dk",
@ -2555,6 +2612,7 @@ static_const const_char_ptr domain_suffix[] = {
"flights", "flights",
"flir", "flir",
"flog.br", "flog.br",
"flop.jp",
"floppy.jp", "floppy.jp",
"flora.no", "flora.no",
"florence.it", "florence.it",
@ -2589,10 +2647,6 @@ static_const const_char_ptr domain_suffix[] = {
"for-our.info", "for-our.info",
"for-some.biz", "for-some.biz",
"for-the.biz", "for-the.biz",
"for.men",
"for.mom",
"for.one",
"for.sale",
"force.museum", "force.museum",
"ford", "ford",
"forde.no", "forde.no",
@ -2723,8 +2777,7 @@ static_const const_char_ptr domain_suffix[] = {
"from-wv.com", "from-wv.com",
"from-wy.com", "from-wy.com",
"from.hr", "from.hr",
"from.marketing", "from.tv",
"from.work",
"frontdoor", "frontdoor",
"frontier", "frontier",
"frosinone.it", "frosinone.it",
@ -3002,7 +3055,6 @@ static_const const_char_ptr domain_suffix[] = {
"gotpantheon.com", "gotpantheon.com",
"gotsu.shimane.jp", "gotsu.shimane.jp",
"goupile.fr", "goupile.fr",
"gouv.bj",
"gouv.ci", "gouv.ci",
"gouv.fr", "gouv.fr",
"gouv.ht", "gouv.ht",
@ -3227,7 +3279,6 @@ static_const const_char_ptr domain_suffix[] = {
"gv.vc", "gv.vc",
"gw", "gw",
"gwangju.kr", "gwangju.kr",
"gwiddle.co.uk",
"gx.cn", "gx.cn",
"gy", "gy",
"gyeongbuk.kr", "gyeongbuk.kr",
@ -3263,6 +3314,7 @@ static_const const_char_ptr domain_suffix[] = {
"hakusan.ishikawa.jp", "hakusan.ishikawa.jp",
"halden.no", "halden.no",
"half.host", "half.host",
"halfmoon.jp",
"halloffame.museum", "halloffame.museum",
"halsa.no", "halsa.no",
"ham-radio-op.net", "ham-radio-op.net",
@ -3591,6 +3643,7 @@ static_const const_char_ptr domain_suffix[] = {
"icurus.jp", "icurus.jp",
"id", "id",
"id.au", "id.au",
"id.firewalledreplit.co",
"id.forgerock.io", "id.forgerock.io",
"id.ir", "id.ir",
"id.lv", "id.lv",
@ -3604,6 +3657,7 @@ static_const const_char_ptr domain_suffix[] = {
"idv.tw", "idv.tw",
"ie", "ie",
"ie.eu.org", "ie.eu.org",
"ie.ua",
"ieee", "ieee",
"if.ua", "if.ua",
"ifm", "ifm",
@ -3665,9 +3719,9 @@ static_const const_char_ptr domain_suffix[] = {
"in-vpn.net", "in-vpn.net",
"in-vpn.org", "in-vpn.org",
"in.eu.org", "in.eu.org",
"in.london",
"in.na", "in.na",
"in.net", "in.net",
"in.ngrok.io",
"in.ni", "in.ni",
"in.rs", "in.rs",
"in.th", "in.th",
@ -3718,6 +3772,7 @@ static_const const_char_ptr domain_suffix[] = {
"info.au", "info.au",
"info.az", "info.az",
"info.bb", "info.bb",
"info.bj",
"info.bo", "info.bo",
"info.co", "info.co",
"info.cx", "info.cx",
@ -3919,6 +3974,7 @@ static_const const_char_ptr domain_suffix[] = {
"isumi.chiba.jp", "isumi.chiba.jp",
"it", "it",
"it.ao", "it.ao",
"it.com",
"it.eu.org", "it.eu.org",
"it1.eur.aruba.jenv-aruba.cloud", "it1.eur.aruba.jenv-aruba.cloud",
"it1.jenv-aruba.cloud", "it1.jenv-aruba.cloud",
@ -3940,6 +3996,7 @@ static_const const_char_ptr domain_suffix[] = {
"ivanovo.su", "ivanovo.su",
"iveland.no", "iveland.no",
"ivgu.no", "ivgu.no",
"ivory.ne.jp",
"iwade.wakayama.jp", "iwade.wakayama.jp",
"iwafune.tochigi.jp", "iwafune.tochigi.jp",
"iwaizumi.iwate.jp", "iwaizumi.iwate.jp",
@ -3989,6 +4046,7 @@ static_const const_char_ptr domain_suffix[] = {
"je", "je",
"jed.wafaicloud.com", "jed.wafaicloud.com",
"jeep", "jeep",
"jeez.jp",
"jefferson.museum", "jefferson.museum",
"jeju.kr", "jeju.kr",
"jelastic.dogado.eu", "jelastic.dogado.eu",
@ -4051,8 +4109,10 @@ static_const const_char_ptr domain_suffix[] = {
"jp.kg", "jp.kg",
"jp.md", "jp.md",
"jp.net", "jp.net",
"jp.ngrok.io",
"jpmorgan", "jpmorgan",
"jpn.com", "jpn.com",
"jpn.org",
"jprs", "jprs",
"js.cn", "js.cn",
"js.org", "js.org",
@ -4337,6 +4397,7 @@ static_const const_char_ptr domain_suffix[] = {
"kinko.kagoshima.jp", "kinko.kagoshima.jp",
"kinokawa.wakayama.jp", "kinokawa.wakayama.jp",
"kira.aichi.jp", "kira.aichi.jp",
"kirara.st",
"kirkenes.no", "kirkenes.no",
"kirovograd.ua", "kirovograd.ua",
"kiryu.gunma.jp", "kiryu.gunma.jp",
@ -4754,7 +4815,6 @@ static_const const_char_ptr domain_suffix[] = {
"locus", "locus",
"lodi.it", "lodi.it",
"lodingen.no", "lodingen.no",
"loft",
"log.br", "log.br",
"loginline.app", "loginline.app",
"loginline.dev", "loginline.dev",
@ -4766,6 +4826,7 @@ static_const const_char_ptr domain_suffix[] = {
"logoip.com", "logoip.com",
"logoip.de", "logoip.de",
"lohmus.me", "lohmus.me",
"loisirs.bj",
"lol", "lol",
"lolipop.io", "lolipop.io",
"lolipopmc.jp", "lolipopmc.jp",
@ -4857,7 +4918,6 @@ static_const const_char_ptr domain_suffix[] = {
"maceio.br", "maceio.br",
"macerata.it", "macerata.it",
"machida.tokyo.jp", "machida.tokyo.jp",
"macys",
"mad.museum", "mad.museum",
"madrid", "madrid",
"madrid.museum", "madrid.museum",
@ -4866,6 +4926,7 @@ static_const const_char_ptr domain_suffix[] = {
"magnet.page", "magnet.page",
"maibara.shiga.jp", "maibara.shiga.jp",
"maif", "maif",
"mail-box.ne.jp",
"mail.pl", "mail.pl",
"main.jp", "main.jp",
"maintenance.aero", "maintenance.aero",
@ -4928,6 +4989,7 @@ static_const const_char_ptr domain_suffix[] = {
"masuda.shimane.jp", "masuda.shimane.jp",
"mat.br", "mat.br",
"matera.it", "matera.it",
"matrix.jp",
"matsubara.osaka.jp", "matsubara.osaka.jp",
"matsubushi.saitama.jp", "matsubushi.saitama.jp",
"matsuda.kanagawa.jp", "matsuda.kanagawa.jp",
@ -5137,6 +5199,7 @@ static_const const_char_ptr domain_suffix[] = {
"mill.museum", "mill.museum",
"mima.tokushima.jp", "mima.tokushima.jp",
"mimata.miyazaki.jp", "mimata.miyazaki.jp",
"mimoza.jp",
"minakami.gunma.jp", "minakami.gunma.jp",
"minamata.kumamoto.jp", "minamata.kumamoto.jp",
"minami-alps.yamanashi.jp", "minami-alps.yamanashi.jp",
@ -5177,6 +5240,7 @@ static_const const_char_ptr domain_suffix[] = {
"minowa.nagano.jp", "minowa.nagano.jp",
"mint", "mint",
"mintere.site", "mintere.site",
"mints.ne.jp",
"mircloud.host", "mircloud.host",
"mircloud.ru", "mircloud.ru",
"mircloud.us", "mircloud.us",
@ -5270,6 +5334,7 @@ static_const const_char_ptr domain_suffix[] = {
"moe", "moe",
"moi", "moi",
"moka.tochigi.jp", "moka.tochigi.jp",
"mokuren.ne.jp",
"mol.it", "mol.it",
"molde.no", "molde.no",
"molise.it", "molise.it",
@ -5279,6 +5344,7 @@ static_const const_char_ptr domain_suffix[] = {
"monash", "monash",
"mond.jp", "mond.jp",
"money", "money",
"money.bj",
"money.museum", "money.museum",
"mongolian.jp", "mongolian.jp",
"monmouth.museum", "monmouth.museum",
@ -5402,6 +5468,7 @@ static_const const_char_ptr domain_suffix[] = {
"my.eu.org", "my.eu.org",
"my.id", "my.id",
"myactivedirectory.com", "myactivedirectory.com",
"myamaze.net",
"myasustor.com", "myasustor.com",
"mycd.eu", "mycd.eu",
"mycloud.by", "mycloud.by",
@ -5433,7 +5500,6 @@ static_const const_char_ptr domain_suffix[] = {
"mypi.co", "mypi.co",
"mypsx.net", "mypsx.net",
"myqnapcloud.com", "myqnapcloud.com",
"myravendb.com",
"mysecuritycamera.com", "mysecuritycamera.com",
"mysecuritycamera.net", "mysecuritycamera.net",
"mysecuritycamera.org", "mysecuritycamera.org",
@ -5458,6 +5524,8 @@ static_const const_char_ptr domain_suffix[] = {
"myspreadshop.no", "myspreadshop.no",
"myspreadshop.pl", "myspreadshop.pl",
"myspreadshop.se", "myspreadshop.se",
"mytabit.co.il",
"mytabit.com",
"mytis.ru", "mytis.ru",
"mytuleap.com", "mytuleap.com",
"myvnc.com", "myvnc.com",
@ -5645,6 +5713,7 @@ static_const const_char_ptr domain_suffix[] = {
"net.ba", "net.ba",
"net.bb", "net.bb",
"net.bh", "net.bh",
"net.bj",
"net.bm", "net.bm",
"net.bn", "net.bn",
"net.bo", "net.bo",
@ -5769,6 +5838,7 @@ static_const const_char_ptr domain_suffix[] = {
"net.zm", "net.zm",
"netbank", "netbank",
"netflix", "netflix",
"netgamers.jp",
"netlify.app", "netlify.app",
"network", "network",
"neues.museum", "neues.museum",
@ -5798,7 +5868,12 @@ static_const const_char_ptr domain_suffix[] = {
"ngo.ng", "ngo.ng",
"ngo.ph", "ngo.ph",
"ngo.za", "ngo.za",
"ngrok-free.app",
"ngrok-free.dev",
"ngrok.app",
"ngrok.dev",
"ngrok.io", "ngrok.io",
"ngrok.pizza",
"nh-serv.co.uk", "nh-serv.co.uk",
"nh.us", "nh.us",
"nhk", "nhk",
@ -5991,6 +6066,7 @@ static_const const_char_ptr domain_suffix[] = {
"ny.us", "ny.us",
"nyaa.am", "nyaa.am",
"nyan.to", "nyan.to",
"nyanta.jp",
"nyc", "nyc",
"nyc.mn", "nyc.mn",
"nyc.museum", "nyc.museum",
@ -6002,6 +6078,7 @@ static_const const_char_ptr domain_suffix[] = {
"nz.eu.org", "nz.eu.org",
"o.bg", "o.bg",
"o.se", "o.se",
"o0o0.jp",
"oamishirasato.chiba.jp", "oamishirasato.chiba.jp",
"oarai.ibaraki.jp", "oarai.ibaraki.jp",
"obama.fukui.jp", "obama.fukui.jp",
@ -6027,9 +6104,7 @@ static_const const_char_ptr domain_suffix[] = {
"odo.br", "odo.br",
"oe.yamagata.jp", "oe.yamagata.jp",
"of.by", "of.by",
"of.fashion",
"of.je", "of.je",
"of.london",
"of.no", "of.no",
"off.ai", "off.ai",
"office", "office",
@ -6161,6 +6236,7 @@ static_const const_char_ptr domain_suffix[] = {
"ooo", "ooo",
"oops.jp", "oops.jp",
"ooshika.nagano.jp", "ooshika.nagano.jp",
"opal.ne.jp",
"open", "open",
"openair.museum", "openair.museum",
"opencraft.hosting", "opencraft.hosting",
@ -6207,6 +6283,7 @@ static_const const_char_ptr domain_suffix[] = {
"org.bb", "org.bb",
"org.bh", "org.bh",
"org.bi", "org.bi",
"org.bj",
"org.bm", "org.bm",
"org.bn", "org.bn",
"org.bo", "org.bo",
@ -6389,6 +6466,7 @@ static_const const_char_ptr domain_suffix[] = {
"otama.fukushima.jp", "otama.fukushima.jp",
"otari.nagano.jp", "otari.nagano.jp",
"otaru.hokkaido.jp", "otaru.hokkaido.jp",
"ote.bj",
"other.nf", "other.nf",
"oto.fukuoka.jp", "oto.fukuoka.jp",
"otobe.hokkaido.jp", "otobe.hokkaido.jp",
@ -6625,7 +6703,6 @@ static_const const_char_ptr domain_suffix[] = {
"pomorze.pl", "pomorze.pl",
"poniatowa.pl", "poniatowa.pl",
"ponpes.id", "ponpes.id",
"pony.club",
"pordenone.it", "pordenone.it",
"porn", "porn",
"porsanger.no", "porsanger.no",
@ -6681,6 +6758,7 @@ static_const const_char_ptr domain_suffix[] = {
"priv.me", "priv.me",
"priv.no", "priv.no",
"priv.pl", "priv.pl",
"privatelink.snowflake.app",
"privatizehealthinsurance.net", "privatizehealthinsurance.net",
"pro", "pro",
"pro.az", "pro.az",
@ -6778,6 +6856,7 @@ static_const const_char_ptr domain_suffix[] = {
"r.bg", "r.bg",
"r.cdn77.net", "r.cdn77.net",
"r.se", "r.se",
"r2.dev",
"ra.it", "ra.it",
"racing", "racing",
"rackmaze.com", "rackmaze.com",
@ -6817,6 +6896,7 @@ static_const const_char_ptr domain_suffix[] = {
"rawa-maz.pl", "rawa-maz.pl",
"rc.it", "rc.it",
"rdv.to", "rdv.to",
"rdy.jp",
"re", "re",
"re.it", "re.it",
"re.kr", "re.kr",
@ -6868,7 +6948,6 @@ static_const const_char_ptr domain_suffix[] = {
"rep.br", "rep.br",
"rep.kp", "rep.kp",
"repair", "repair",
"repair.men",
"repbody.aero", "repbody.aero",
"repl.co", "repl.co",
"repl.run", "repl.run",
@ -6888,11 +6967,14 @@ static_const const_char_ptr domain_suffix[] = {
"resistance.museum", "resistance.museum",
"rest", "rest",
"restaurant", "restaurant",
"restaurant.bj",
"resto.bj",
"review", "review",
"reviews", "reviews",
"revista.bo", "revista.bo",
"rexroth", "rexroth",
"rg.it", "rg.it",
"rgr.jp",
"rhcloud.com", "rhcloud.com",
"ri.it", "ri.it",
"ri.us", "ri.us",
@ -6969,6 +7051,7 @@ static_const const_char_ptr domain_suffix[] = {
"rs.ba", "rs.ba",
"rs.gov.br", "rs.gov.br",
"rs.leg.br", "rs.leg.br",
"rs.webaccel.jp",
"rsc.cdn77.org", "rsc.cdn77.org",
"rsvp", "rsvp",
"ru", "ru",
@ -6977,6 +7060,7 @@ static_const const_char_ptr domain_suffix[] = {
"ru.net", "ru.net",
"rugby", "rugby",
"ruhr", "ruhr",
"rulez.jp",
"run", "run",
"run.app", "run.app",
"ruovat.no", "ruovat.no",
@ -7052,6 +7136,8 @@ static_const const_char_ptr domain_suffix[] = {
"s3.eu-west-2.amazonaws.com", "s3.eu-west-2.amazonaws.com",
"s3.eu-west-3.amazonaws.com", "s3.eu-west-3.amazonaws.com",
"s3.fr-par.scw.cloud", "s3.fr-par.scw.cloud",
"s3.isk01.sakurastorage.jp",
"s3.isk02.sakurastorage.jp",
"s3.nl-ams.scw.cloud", "s3.nl-ams.scw.cloud",
"s3.pl-waw.scw.cloud", "s3.pl-waw.scw.cloud",
"s3.teckids.org", "s3.teckids.org",
@ -7065,6 +7151,7 @@ static_const const_char_ptr domain_suffix[] = {
"sa.gov.au", "sa.gov.au",
"sa.gov.pl", "sa.gov.pl",
"sa.it", "sa.it",
"sa.ngrok.io",
"saarland", "saarland",
"sabae.fukui.jp", "sabae.fukui.jp",
"sadist.jp", "sadist.jp",
@ -7101,9 +7188,13 @@ static_const const_char_ptr domain_suffix[] = {
"sakuho.nagano.jp", "sakuho.nagano.jp",
"sakura", "sakura",
"sakura.chiba.jp", "sakura.chiba.jp",
"sakura.ne.jp",
"sakura.tochigi.jp", "sakura.tochigi.jp",
"sakura.tv",
"sakuragawa.ibaraki.jp", "sakuragawa.ibaraki.jp",
"sakurai.nara.jp", "sakurai.nara.jp",
"sakuratan.com",
"sakuraweb.com",
"sakyo.kyoto.jp", "sakyo.kyoto.jp",
"salangen.no", "salangen.no",
"salat.no", "salat.no",
@ -7111,6 +7202,7 @@ static_const const_char_ptr domain_suffix[] = {
"salem.museum", "salem.museum",
"salerno.it", "salerno.it",
"salon", "salon",
"saloon.jp",
"saltdal.no", "saltdal.no",
"salud.bo", "salud.bo",
"salvador.br", "salvador.br",
@ -7183,6 +7275,7 @@ static_const const_char_ptr domain_suffix[] = {
"sb", "sb",
"sb.ua", "sb.ua",
"sbi", "sbi",
"sblo.jp",
"sbs", "sbs",
"sc", "sc",
"sc.cn", "sc.cn",
@ -7332,7 +7425,6 @@ static_const const_char_ptr domain_suffix[] = {
"service.one", "service.one",
"services", "services",
"services.aero", "services.aero",
"ses",
"setagaya.tokyo.jp", "setagaya.tokyo.jp",
"seto.aichi.jp", "seto.aichi.jp",
"setouchi.okayama.jp", "setouchi.okayama.jp",
@ -7490,6 +7582,10 @@ static_const const_char_ptr domain_suffix[] = {
"silk", "silk",
"silk.museum", "silk.museum",
"simple-url.com", "simple-url.com",
"simplesite.com",
"simplesite.com.br",
"simplesite.gr",
"simplesite.pl",
"sina", "sina",
"sinaapp.com", "sinaapp.com",
"singles", "singles",
@ -7524,6 +7620,7 @@ static_const const_char_ptr domain_suffix[] = {
"skoczow.pl", "skoczow.pl",
"skodje.no", "skodje.no",
"skole.museum", "skole.museum",
"skr.jp",
"sky", "sky",
"skydiving.aero", "skydiving.aero",
"skygearapp.com", "skygearapp.com",
@ -7552,6 +7649,7 @@ static_const const_char_ptr domain_suffix[] = {
"sncf", "sncf",
"snillfjord.no", "snillfjord.no",
"snoasa.no", "snoasa.no",
"snowflake.app",
"so", "so",
"so.gov.pl", "so.gov.pl",
"so.it", "so.it",
@ -7631,6 +7729,7 @@ static_const const_char_ptr domain_suffix[] = {
"square7.ch", "square7.ch",
"square7.de", "square7.de",
"square7.net", "square7.net",
"squares.net",
"sr", "sr",
"sr.gov.pl", "sr.gov.pl",
"sr.it", "sr.it",
@ -7701,6 +7800,7 @@ static_const const_char_ptr domain_suffix[] = {
"strand.no", "strand.no",
"stranda.no", "stranda.no",
"stream", "stream",
"streamlit.app",
"streamlitapp.com", "streamlitapp.com",
"stripper.jp", "stripper.jp",
"stryn.no", "stryn.no",
@ -7730,6 +7830,7 @@ static_const const_char_ptr domain_suffix[] = {
"suli.hu", "suli.hu",
"sumida.tokyo.jp", "sumida.tokyo.jp",
"sumita.iwate.jp", "sumita.iwate.jp",
"sumomo.ne.jp",
"sumoto.hyogo.jp", "sumoto.hyogo.jp",
"sumoto.kumamoto.jp", "sumoto.kumamoto.jp",
"sumy.ua", "sumy.ua",
@ -7874,6 +7975,7 @@ static_const const_char_ptr domain_suffix[] = {
"tanabe.wakayama.jp", "tanabe.wakayama.jp",
"tanagura.fukushima.jp", "tanagura.fukushima.jp",
"tananger.no", "tananger.no",
"tank.jp",
"tank.museum", "tank.museum",
"tanohata.iwate.jp", "tanohata.iwate.jp",
"taobao", "taobao",
@ -7902,7 +8004,6 @@ static_const const_char_ptr domain_suffix[] = {
"tax", "tax",
"taxi", "taxi",
"taxi.br", "taxi.br",
"tbits.me",
"tc", "tc",
"tc.br", "tc.br",
"tci", "tci",
@ -7955,7 +8056,6 @@ static_const const_char_ptr domain_suffix[] = {
"tg", "tg",
"tgory.pl", "tgory.pl",
"th", "th",
"that.win",
"thd", "thd",
"the.br", "the.br",
"theater", "theater",
@ -8015,7 +8115,6 @@ static_const const_char_ptr domain_suffix[] = {
"to.it", "to.it",
"to.leg.br", "to.leg.br",
"to.md", "to.md",
"to.work",
"toba.mie.jp", "toba.mie.jp",
"tobe.ehime.jp", "tobe.ehime.jp",
"tobetsu.hokkaido.jp", "tobetsu.hokkaido.jp",
@ -8073,6 +8172,7 @@ static_const const_char_ptr domain_suffix[] = {
"tools", "tools",
"toon.ehime.jp", "toon.ehime.jp",
"top", "top",
"topaz.ne.jp",
"topology.museum", "topology.museum",
"torahime.shiga.jp", "torahime.shiga.jp",
"toray", "toray",
@ -8092,6 +8192,7 @@ static_const const_char_ptr domain_suffix[] = {
"tottori.jp", "tottori.jp",
"tottori.tottori.jp", "tottori.tottori.jp",
"touch.museum", "touch.museum",
"tourism.bj",
"tourism.pl", "tourism.pl",
"tourism.tn", "tourism.tn",
"tours", "tours",
@ -8305,6 +8406,7 @@ static_const const_char_ptr domain_suffix[] = {
"ug", "ug",
"ug.gov.pl", "ug.gov.pl",
"ugim.gov.pl", "ugim.gov.pl",
"uh-oh.jp",
"uhren.museum", "uhren.museum",
"ui.nabu.casa", "ui.nabu.casa",
"uji.kyoto.jp", "uji.kyoto.jp",
@ -8335,12 +8437,13 @@ static_const const_char_ptr domain_suffix[] = {
"umig.gov.pl", "umig.gov.pl",
"unazuki.toyama.jp", "unazuki.toyama.jp",
"under.jp", "under.jp",
"under.one",
"undersea.museum", "undersea.museum",
"undo.jp",
"uni5.net", "uni5.net",
"unicloud.pl", "unicloud.pl",
"unicom", "unicom",
"union.aero", "union.aero",
"univ.bj",
"univ.sn", "univ.sn",
"university", "university",
"university.museum", "university.museum",
@ -8391,6 +8494,7 @@ static_const const_char_ptr domain_suffix[] = {
"us.in", "us.in",
"us.kg", "us.kg",
"us.na", "us.na",
"us.ngrok.io",
"us.org", "us.org",
"us.platform.sh", "us.platform.sh",
"us.reclaim.cloud", "us.reclaim.cloud",
@ -8404,6 +8508,7 @@ static_const const_char_ptr domain_suffix[] = {
"user.aseinet.ne.jp", "user.aseinet.ne.jp",
"user.party.eus", "user.party.eus",
"user.srcf.net", "user.srcf.net",
"user.webaccel.jp",
"usercontent.jp", "usercontent.jp",
"users.scale.virtualcloud.com.br", "users.scale.virtualcloud.com.br",
"usgarden.museum", "usgarden.museum",
@ -8693,6 +8798,7 @@ static_const const_char_ptr domain_suffix[] = {
"webredirect.org", "webredirect.org",
"website", "website",
"website.yandexcloud.net", "website.yandexcloud.net",
"websozai.jp",
"webspace.rocks", "webspace.rocks",
"webthings.io", "webthings.io",
"webview-assets.cloud9.af-south-1.amazonaws.com", "webview-assets.cloud9.af-south-1.amazonaws.com",
@ -8757,7 +8863,6 @@ static_const const_char_ptr domain_suffix[] = {
"winners", "winners",
"wios.gov.pl", "wios.gov.pl",
"witd.gov.pl", "witd.gov.pl",
"with.marketing",
"withgoogle.com", "withgoogle.com",
"withyoutube.com", "withyoutube.com",
"wiw.gov.pl", "wiw.gov.pl",
@ -8805,12 +8910,15 @@ static_const const_char_ptr domain_suffix[] = {
"x.bg", "x.bg",
"x.mythic-beasts.com", "x.mythic-beasts.com",
"x.se", "x.se",
"x0.com",
"x0.to",
"x443.pw", "x443.pw",
"xbox", "xbox",
"xen.prgmr.com", "xen.prgmr.com",
"xerox", "xerox",
"xfinity", "xfinity",
"xihuan", "xihuan",
"xii.jp",
"xin", "xin",
"xj.cn", "xj.cn",
"xn--0trq7p7nn.jp", "xn--0trq7p7nn.jp",
@ -9015,7 +9123,6 @@ static_const const_char_ptr domain_suffix[] = {
"xn--j1amh", "xn--j1amh",
"xn--j6w193g", "xn--j6w193g",
"xn--jlq480n2rg", "xn--jlq480n2rg",
"xn--jlq61u9w7b",
"xn--jlster-bya.no", "xn--jlster-bya.no",
"xn--jrpeland-54a.no", "xn--jrpeland-54a.no",
"xn--jvr189m", "xn--jvr189m",

View File

@ -380,11 +380,29 @@ org.bi
// biz : https://en.wikipedia.org/wiki/.biz // biz : https://en.wikipedia.org/wiki/.biz
biz biz
// bj : https://en.wikipedia.org/wiki/.bj // bj : https://nic.bj/bj-suffixes.txt
// submitted by registry <contact@nic.bj>
bj bj
asso.bj africa.bj
barreau.bj agro.bj
gouv.bj architectes.bj
assur.bj
avocats.bj
co.bj
com.bj
eco.bj
econo.bj
edu.bj
info.bj
loisirs.bj
money.bj
net.bj
org.bj
ote.bj
resto.bj
restaurant.bj
tourism.bj
univ.bj
// bm : http://www.bermudanic.bm/dnr-text.txt // bm : http://www.bermudanic.bm/dnr-text.txt
bm bm
@ -7171,7 +7189,7 @@ org.zw
// newGTLDs // newGTLDs
// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2022-09-15T15:17:34Z // List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2023-03-08T15:15:40Z
// This list is auto-generated, don't edit it manually. // This list is auto-generated, don't edit it manually.
// aaa : 2015-02-26 American Automobile Association, Inc. // aaa : 2015-02-26 American Automobile Association, Inc.
aaa aaa
@ -7221,9 +7239,6 @@ aco
// actor : 2013-12-12 Dog Beach, LLC // actor : 2013-12-12 Dog Beach, LLC
actor actor
// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC)
adac
// ads : 2014-12-04 Charleston Road Registry Inc. // ads : 2014-12-04 Charleston Road Registry Inc.
ads ads
@ -7341,7 +7356,7 @@ arab
// aramco : 2014-11-20 Aramco Services Company // aramco : 2014-11-20 Aramco Services Company
aramco aramco
// archi : 2014-02-06 Afilias Limited // archi : 2014-02-06 Identity Digital Limited
archi archi
// army : 2014-03-06 Dog Beach, LLC // army : 2014-03-06 Dog Beach, LLC
@ -7389,7 +7404,7 @@ auto
// autos : 2014-01-09 XYZ.COM LLC // autos : 2014-01-09 XYZ.COM LLC
autos autos
// avianca : 2015-01-08 Avianca Holdings S.A. // avianca : 2015-01-08 Avianca Inc.
avianca avianca
// aws : 2015-06-25 AWS Registry LLC // aws : 2015-06-25 AWS Registry LLC
@ -7485,7 +7500,7 @@ best
// bestbuy : 2015-07-31 BBY Solutions, Inc. // bestbuy : 2015-07-31 BBY Solutions, Inc.
bestbuy bestbuy
// bet : 2015-05-07 Afilias Limited // bet : 2015-05-07 Identity Digital Limited
bet bet
// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited // bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited
@ -7506,10 +7521,10 @@ bing
// bingo : 2014-12-04 Binky Moon, LLC // bingo : 2014-12-04 Binky Moon, LLC
bingo bingo
// bio : 2014-03-06 Afilias Limited // bio : 2014-03-06 Identity Digital Limited
bio bio
// black : 2014-01-16 Afilias Limited // black : 2014-01-16 Identity Digital Limited
black black
// blackfriday : 2014-01-16 Registry Services, LLC // blackfriday : 2014-01-16 Registry Services, LLC
@ -7524,7 +7539,7 @@ blog
// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC // bloomberg : 2014-07-17 Bloomberg IP Holdings LLC
bloomberg bloomberg
// blue : 2013-11-07 Afilias Limited // blue : 2013-11-07 Identity Digital Limited
blue blue
// bms : 2014-10-30 Bristol-Myers Squibb Company // bms : 2014-10-30 Bristol-Myers Squibb Company
@ -7596,9 +7611,6 @@ brother
// brussels : 2014-02-06 DNS.be vzw // brussels : 2014-02-06 DNS.be vzw
brussels brussels
// bugatti : 2015-07-23 Bugatti International SA
bugatti
// build : 2013-11-07 Plan Bee LLC // build : 2013-11-07 Plan Bee LLC
build build
@ -7641,9 +7653,6 @@ camera
// camp : 2013-11-07 Binky Moon, LLC // camp : 2013-11-07 Binky Moon, LLC
camp camp
// cancerresearch : 2014-05-15 Australian Cancer Research Foundation
cancerresearch
// canon : 2014-09-12 Canon Inc. // canon : 2014-09-12 Canon Inc.
canon canon
@ -7782,7 +7791,7 @@ claims
// cleaning : 2013-12-05 Binky Moon, LLC // cleaning : 2013-12-05 Binky Moon, LLC
cleaning cleaning
// click : 2014-06-05 UNR Corp. // click : 2014-06-05 Internet Naming Company LLC
click click
// clinic : 2014-03-20 Binky Moon, LLC // clinic : 2014-03-20 Binky Moon, LLC
@ -8379,7 +8388,7 @@ glass
// gle : 2014-07-24 Charleston Road Registry Inc. // gle : 2014-07-24 Charleston Road Registry Inc.
gle gle
// global : 2014-04-17 Dot Global Domain Registry Limited // global : 2014-04-17 Identity Digital Limited
global global
// globo : 2013-12-19 Globo Comunicação e Participações S.A // globo : 2013-12-19 Globo Comunicação e Participações S.A
@ -8436,7 +8445,7 @@ graphics
// gratis : 2014-03-20 Binky Moon, LLC // gratis : 2014-03-20 Binky Moon, LLC
gratis gratis
// green : 2014-05-08 Afilias Limited // green : 2014-05-08 Identity Digital Limited
green green
// gripe : 2014-03-06 Binky Moon, LLC // gripe : 2014-03-06 Binky Moon, LLC
@ -8517,7 +8526,7 @@ hisamitsu
// hitachi : 2014-10-31 Hitachi, Ltd. // hitachi : 2014-10-31 Hitachi, Ltd.
hitachi hitachi
// hiv : 2014-03-13 UNR Corp. // hiv : 2014-03-13 Internet Naming Company LLC
hiv hiv
// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited // hkt : 2015-05-14 PCCW-HKT DataCom Services Limited
@ -8721,7 +8730,7 @@ jpmorgan
// jprs : 2014-09-18 Japan Registry Services Co., Ltd. // jprs : 2014-09-18 Japan Registry Services Co., Ltd.
jprs jprs
// juegos : 2014-03-20 UNR Corp. // juegos : 2014-03-20 Internet Naming Company LLC
juegos juegos
// juniper : 2015-07-30 JUNIPER NETWORKS, INC. // juniper : 2015-07-30 JUNIPER NETWORKS, INC.
@ -8751,7 +8760,7 @@ kia
// kids : 2021-08-13 DotKids Foundation Limited // kids : 2021-08-13 DotKids Foundation Limited
kids kids
// kim : 2013-09-23 Afilias Limited // kim : 2013-09-23 Identity Digital Limited
kim kim
// kinder : 2014-11-07 Ferrero Trading Lux S.A. // kinder : 2014-11-07 Ferrero Trading Lux S.A.
@ -8856,7 +8865,7 @@ lego
// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION // lexus : 2015-04-23 TOYOTA MOTOR CORPORATION
lexus lexus
// lgbt : 2014-05-08 Afilias Limited // lgbt : 2014-05-08 Identity Digital Limited
lgbt lgbt
// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG // lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
@ -8904,7 +8913,7 @@ live
// living : 2015-07-30 Lifestyle Domain Holdings, Inc. // living : 2015-07-30 Lifestyle Domain Holdings, Inc.
living living
// llc : 2017-12-14 Afilias Limited // llc : 2017-12-14 Identity Digital Limited
llc llc
// llp : 2019-08-26 Intercap Registry Inc. // llp : 2019-08-26 Intercap Registry Inc.
@ -8922,9 +8931,6 @@ locker
// locus : 2015-06-25 Locus Analytics LLC // locus : 2015-06-25 Locus Analytics LLC
locus locus
// loft : 2015-07-30 Annco, Inc.
loft
// lol : 2015-01-30 XYZ.COM LLC // lol : 2015-01-30 XYZ.COM LLC
lol lol
@ -8934,7 +8940,7 @@ london
// lotte : 2014-11-07 Lotte Holdings Co., Ltd. // lotte : 2014-11-07 Lotte Holdings Co., Ltd.
lotte lotte
// lotto : 2014-04-10 Afilias Limited // lotto : 2014-04-10 Identity Digital Limited
lotto lotto
// love : 2014-12-22 Merchant Law Group LLP // love : 2014-12-22 Merchant Law Group LLP
@ -8961,9 +8967,6 @@ luxe
// luxury : 2013-10-17 Luxury Partners, LLC // luxury : 2013-10-17 Luxury Partners, LLC
luxury luxury
// macys : 2015-07-31 Macys, Inc.
macys
// madrid : 2014-05-01 Comunidad de Madrid // madrid : 2014-05-01 Comunidad de Madrid
madrid madrid
@ -9282,7 +9285,7 @@ oracle
// orange : 2015-03-12 Orange Brand Services Limited // orange : 2015-03-12 Orange Brand Services Limited
orange orange
// organic : 2014-03-27 Afilias Limited // organic : 2014-03-27 Identity Digital Limited
organic organic
// origins : 2015-10-01 The Estée Lauder Companies Inc. // origins : 2015-10-01 The Estée Lauder Companies Inc.
@ -9330,7 +9333,7 @@ pay
// pccw : 2015-05-14 PCCW Enterprises Limited // pccw : 2015-05-14 PCCW Enterprises Limited
pccw pccw
// pet : 2015-05-07 Afilias Limited // pet : 2015-05-07 Identity Digital Limited
pet pet
// pfizer : 2015-09-11 Pfizer Inc. // pfizer : 2015-09-11 Pfizer Inc.
@ -9378,7 +9381,7 @@ pin
// ping : 2015-06-11 Ping Registry Provider, Inc. // ping : 2015-06-11 Ping Registry Provider, Inc.
ping ping
// pink : 2013-10-01 Afilias Limited // pink : 2013-10-01 Identity Digital Limited
pink pink
// pioneer : 2015-07-16 Pioneer Corporation // pioneer : 2015-07-16 Pioneer Corporation
@ -9408,7 +9411,7 @@ pnc
// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG // pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
pohl pohl
// poker : 2014-07-03 Afilias Limited // poker : 2014-07-03 Identity Digital Limited
poker poker
// politie : 2015-08-20 Politie Nederland // politie : 2015-08-20 Politie Nederland
@ -9441,13 +9444,13 @@ prof
// progressive : 2015-07-23 Progressive Casualty Insurance Company // progressive : 2015-07-23 Progressive Casualty Insurance Company
progressive progressive
// promo : 2014-12-18 Afilias Limited // promo : 2014-12-18 Identity Digital Limited
promo promo
// properties : 2013-12-05 Binky Moon, LLC // properties : 2013-12-05 Binky Moon, LLC
properties properties
// property : 2014-05-22 UNR Corp. // property : 2014-05-22 Internet Naming Company LLC
property property
// protection : 2015-04-23 XYZ.COM LLC // protection : 2015-04-23 XYZ.COM LLC
@ -9465,7 +9468,7 @@ pub
// pwc : 2015-10-29 PricewaterhouseCoopers LLP // pwc : 2015-10-29 PricewaterhouseCoopers LLP
pwc pwc
// qpon : 2013-11-14 dotCOOL, Inc. // qpon : 2013-11-14 dotQPON LLC
qpon qpon
// quebec : 2013-12-19 PointQuébec Inc // quebec : 2013-12-19 PointQuébec Inc
@ -9495,7 +9498,7 @@ realty
// recipes : 2013-10-17 Binky Moon, LLC // recipes : 2013-10-17 Binky Moon, LLC
recipes recipes
// red : 2013-11-07 Afilias Limited // red : 2013-11-07 Identity Digital Limited
red red
// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd. // redstone : 2014-10-31 Redstone Haute Couture Co., Ltd.
@ -9711,9 +9714,6 @@ sener
// services : 2014-02-27 Binky Moon, LLC // services : 2014-02-27 Binky Moon, LLC
services services
// ses : 2015-07-23 SES
ses
// seven : 2015-08-06 Seven West Media Ltd // seven : 2015-08-06 Seven West Media Ltd
seven seven
@ -9723,7 +9723,7 @@ sew
// sex : 2014-11-13 ICM Registry SX LLC // sex : 2014-11-13 ICM Registry SX LLC
sex sex
// sexy : 2013-09-11 UNR Corp. // sexy : 2013-09-11 Internet Naming Company LLC
sexy sexy
// sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR // sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR
@ -9744,7 +9744,7 @@ shell
// shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti. // shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
shia shia
// shiksha : 2013-11-14 Afilias Limited // shiksha : 2013-11-14 Identity Digital Limited
shiksha shiksha
// shoes : 2013-10-02 Binky Moon, LLC // shoes : 2013-10-02 Binky Moon, LLC
@ -9777,7 +9777,7 @@ singles
// site : 2015-01-15 Radix FZC // site : 2015-01-15 Radix FZC
site site
// ski : 2015-04-09 Afilias Limited // ski : 2015-04-09 Identity Digital Limited
ski ski
// skin : 2015-01-15 XYZ.COM LLC // skin : 2015-01-15 XYZ.COM LLC
@ -9798,7 +9798,7 @@ smart
// smile : 2014-12-18 Amazon Registry Services, Inc. // smile : 2014-12-18 Amazon Registry Services, Inc.
smile smile
// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F // sncf : 2015-02-19 Société Nationale SNCF
sncf sncf
// soccer : 2015-03-26 Binky Moon, LLC // soccer : 2015-03-26 Binky Moon, LLC
@ -10035,7 +10035,7 @@ toray
// toshiba : 2014-04-10 TOSHIBA Corporation // toshiba : 2014-04-10 TOSHIBA Corporation
toshiba toshiba
// total : 2015-08-06 TOTAL SE // total : 2015-08-06 TotalEnergies SE
total total
// tours : 2015-01-22 Binky Moon, LLC // tours : 2015-01-22 Binky Moon, LLC
@ -10071,7 +10071,7 @@ travelers
// travelersinsurance : 2015-03-26 Travelers TLD, LLC // travelersinsurance : 2015-03-26 Travelers TLD, LLC
travelersinsurance travelersinsurance
// trust : 2014-10-16 UNR Corp. // trust : 2014-10-16 Internet Naming Company LLC
trust trust
// trv : 2015-03-26 Travelers TLD, LLC // trv : 2015-03-26 Travelers TLD, LLC
@ -10218,7 +10218,7 @@ wanggou
// watch : 2013-11-14 Binky Moon, LLC // watch : 2013-11-14 Binky Moon, LLC
watch watch
// watches : 2014-12-22 Afilias Limited // watches : 2014-12-22 Identity Digital Limited
watches watches
// weather : 2015-01-08 International Business Machines Corporation // weather : 2015-01-08 International Business Machines Corporation
@ -10353,7 +10353,7 @@ xin
// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited // xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited
网站 网站
// xn--6frz82g : 2013-09-23 Afilias Limited // xn--6frz82g : 2013-09-23 Identity Digital Limited
移动 移动
// xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited // xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited
@ -10470,9 +10470,6 @@ xin
// xn--jlq480n2rg : 2019-12-19 Amazon Registry Services, Inc. // xn--jlq480n2rg : 2019-12-19 Amazon Registry Services, Inc.
亚马逊 亚马逊
// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation
诺基亚
// xn--jvr189m : 2015-02-26 Amazon Registry Services, Inc. // xn--jvr189m : 2015-02-26 Amazon Registry Services, Inc.
食品 食品
@ -10660,6 +10657,14 @@ graphox.us
// Submitted by accesso Team <accessoecommerce@accesso.com> // Submitted by accesso Team <accessoecommerce@accesso.com>
*.devcdnaccesso.com *.devcdnaccesso.com
// Acorn Labs : https://acorn.io
// Submitted by Craig Jellick <domains@acorn.io>
*.on-acorn.io
// ActiveTrail: https://www.activetrail.biz/
// Submitted by Ofer Kalaora <postmaster@activetrail.com>
activetrail.biz
// Adobe : https://www.adobe.com/ // Adobe : https://www.adobe.com/
// Submitted by Ian Boston <boston@adobe.com> and Lars Trieloff <trieloff@adobe.com> // Submitted by Ian Boston <boston@adobe.com> and Lars Trieloff <trieloff@adobe.com>
adobeaemcloud.com adobeaemcloud.com
@ -10669,6 +10674,11 @@ adobeaemcloud.net
hlx.page hlx.page
hlx3.page hlx3.page
// Adobe Developer Platform : https://developer.adobe.com
// Submitted by Jesse MacFadyen<jessem@adobe.com>
adobeio-static.net
adobeioruntime.net
// Agnat sp. z o.o. : https://domena.pl // Agnat sp. z o.o. : https://domena.pl
// Submitted by Przemyslaw Plewa <it-admin@domena.pl> // Submitted by Przemyslaw Plewa <it-admin@domena.pl>
beep.pl beep.pl
@ -10683,6 +10693,24 @@ airkitapps.eu
// Submitted by Etienne Stalmans <security@aiven.io> // Submitted by Etienne Stalmans <security@aiven.io>
aivencloud.com aivencloud.com
// Akamai : https://www.akamai.com/
// Submitted by Akamai Team <publicsuffixlist@akamai.com>
akadns.net
akamai.net
akamai-staging.net
akamaiedge.net
akamaiedge-staging.net
akamaihd.net
akamaihd-staging.net
akamaiorigin.net
akamaiorigin-staging.net
akamaized.net
akamaized-staging.net
edgekey.net
edgekey-staging.net
edgesuite.net
edgesuite-staging.net
// alboto.ca : http://alboto.ca // alboto.ca : http://alboto.ca
// Submitted by Anton Avramov <avramov@alboto.ca> // Submitted by Anton Avramov <avramov@alboto.ca>
barsy.ca barsy.ca
@ -10704,51 +10732,53 @@ altervista.org
// Submitted by Cyril <admin@alwaysdata.com> // Submitted by Cyril <admin@alwaysdata.com>
alwaysdata.net alwaysdata.net
// Amazon CloudFront : https://aws.amazon.com/cloudfront/ // Amaze Software : https://amaze.co
// Submitted by Domain Admin <domainadmin@amaze.co>
myamaze.net
// Amazon : https://www.amazon.com/
// Submitted by AWS Security <psl-maintainers@amazon.com>
// Subsections of Amazon/subsidiaries will appear until "concludes" tag
// Amazon CloudFront
// Submitted by Donavan Miller <donavanm@amazon.com> // Submitted by Donavan Miller <donavanm@amazon.com>
// Reference: 54144616-fd49-4435-8535-19c6a601bdb3
cloudfront.net cloudfront.net
// Amazon Elastic Compute Cloud : https://aws.amazon.com/ec2/ // Amazon EC2
// Submitted by Luke Wells <psl-maintainers@amazon.com> // Submitted by Luke Wells <psl-maintainers@amazon.com>
// Reference: 4c38fa71-58ac-4768-99e5-689c1767e537
*.compute.amazonaws.com *.compute.amazonaws.com
*.compute-1.amazonaws.com *.compute-1.amazonaws.com
*.compute.amazonaws.com.cn *.compute.amazonaws.com.cn
us-east-1.amazonaws.com us-east-1.amazonaws.com
// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/ // Amazon S3
// Submitted by Luke Wells <psl-maintainers@amazon.com>
cn-north-1.eb.amazonaws.com.cn
cn-northwest-1.eb.amazonaws.com.cn
elasticbeanstalk.com
ap-northeast-1.elasticbeanstalk.com
ap-northeast-2.elasticbeanstalk.com
ap-northeast-3.elasticbeanstalk.com
ap-south-1.elasticbeanstalk.com
ap-southeast-1.elasticbeanstalk.com
ap-southeast-2.elasticbeanstalk.com
ca-central-1.elasticbeanstalk.com
eu-central-1.elasticbeanstalk.com
eu-west-1.elasticbeanstalk.com
eu-west-2.elasticbeanstalk.com
eu-west-3.elasticbeanstalk.com
sa-east-1.elasticbeanstalk.com
us-east-1.elasticbeanstalk.com
us-east-2.elasticbeanstalk.com
us-gov-west-1.elasticbeanstalk.com
us-west-1.elasticbeanstalk.com
us-west-2.elasticbeanstalk.com
// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/
// Submitted by Luke Wells <psl-maintainers@amazon.com>
*.elb.amazonaws.com
*.elb.amazonaws.com.cn
// Amazon Global Accelerator : https://aws.amazon.com/global-accelerator/
// Submitted by Daniel Massaguer <psl-maintainers@amazon.com>
awsglobalaccelerator.com
// Amazon S3 : https://aws.amazon.com/s3/
// Submitted by Luke Wells <psl-maintainers@amazon.com> // Submitted by Luke Wells <psl-maintainers@amazon.com>
// Reference: d068bd97-f0a9-4838-a6d8-954b622ef4ae
s3.cn-north-1.amazonaws.com.cn
s3.dualstack.ap-northeast-1.amazonaws.com
s3.dualstack.ap-northeast-2.amazonaws.com
s3.ap-northeast-2.amazonaws.com
s3-website.ap-northeast-2.amazonaws.com
s3.dualstack.ap-south-1.amazonaws.com
s3.ap-south-1.amazonaws.com
s3-website.ap-south-1.amazonaws.com
s3.dualstack.ap-southeast-1.amazonaws.com
s3.dualstack.ap-southeast-2.amazonaws.com
s3.dualstack.ca-central-1.amazonaws.com
s3.ca-central-1.amazonaws.com
s3-website.ca-central-1.amazonaws.com
s3.dualstack.eu-central-1.amazonaws.com
s3.eu-central-1.amazonaws.com
s3-website.eu-central-1.amazonaws.com
s3.dualstack.eu-west-1.amazonaws.com
s3.dualstack.eu-west-2.amazonaws.com
s3.eu-west-2.amazonaws.com
s3-website.eu-west-2.amazonaws.com
s3.dualstack.eu-west-3.amazonaws.com
s3.eu-west-3.amazonaws.com
s3-website.eu-west-3.amazonaws.com
s3.amazonaws.com s3.amazonaws.com
s3-ap-northeast-1.amazonaws.com s3-ap-northeast-1.amazonaws.com
s3-ap-northeast-2.amazonaws.com s3-ap-northeast-2.amazonaws.com
@ -10763,48 +10793,25 @@ s3-eu-west-3.amazonaws.com
s3-external-1.amazonaws.com s3-external-1.amazonaws.com
s3-fips-us-gov-west-1.amazonaws.com s3-fips-us-gov-west-1.amazonaws.com
s3-sa-east-1.amazonaws.com s3-sa-east-1.amazonaws.com
s3-us-gov-west-1.amazonaws.com
s3-us-east-2.amazonaws.com s3-us-east-2.amazonaws.com
s3-us-gov-west-1.amazonaws.com
s3-us-west-1.amazonaws.com s3-us-west-1.amazonaws.com
s3-us-west-2.amazonaws.com s3-us-west-2.amazonaws.com
s3.ap-northeast-2.amazonaws.com
s3.ap-south-1.amazonaws.com
s3.cn-north-1.amazonaws.com.cn
s3.ca-central-1.amazonaws.com
s3.eu-central-1.amazonaws.com
s3.eu-west-2.amazonaws.com
s3.eu-west-3.amazonaws.com
s3.us-east-2.amazonaws.com
s3.dualstack.ap-northeast-1.amazonaws.com
s3.dualstack.ap-northeast-2.amazonaws.com
s3.dualstack.ap-south-1.amazonaws.com
s3.dualstack.ap-southeast-1.amazonaws.com
s3.dualstack.ap-southeast-2.amazonaws.com
s3.dualstack.ca-central-1.amazonaws.com
s3.dualstack.eu-central-1.amazonaws.com
s3.dualstack.eu-west-1.amazonaws.com
s3.dualstack.eu-west-2.amazonaws.com
s3.dualstack.eu-west-3.amazonaws.com
s3.dualstack.sa-east-1.amazonaws.com
s3.dualstack.us-east-1.amazonaws.com
s3.dualstack.us-east-2.amazonaws.com
s3-website-us-east-1.amazonaws.com
s3-website-us-west-1.amazonaws.com
s3-website-us-west-2.amazonaws.com
s3-website-ap-northeast-1.amazonaws.com s3-website-ap-northeast-1.amazonaws.com
s3-website-ap-southeast-1.amazonaws.com s3-website-ap-southeast-1.amazonaws.com
s3-website-ap-southeast-2.amazonaws.com s3-website-ap-southeast-2.amazonaws.com
s3-website-eu-west-1.amazonaws.com s3-website-eu-west-1.amazonaws.com
s3-website-sa-east-1.amazonaws.com s3-website-sa-east-1.amazonaws.com
s3-website.ap-northeast-2.amazonaws.com s3-website-us-east-1.amazonaws.com
s3-website.ap-south-1.amazonaws.com s3-website-us-west-1.amazonaws.com
s3-website.ca-central-1.amazonaws.com s3-website-us-west-2.amazonaws.com
s3-website.eu-central-1.amazonaws.com s3.dualstack.sa-east-1.amazonaws.com
s3-website.eu-west-2.amazonaws.com s3.dualstack.us-east-1.amazonaws.com
s3-website.eu-west-3.amazonaws.com s3.dualstack.us-east-2.amazonaws.com
s3.us-east-2.amazonaws.com
s3-website.us-east-2.amazonaws.com s3-website.us-east-2.amazonaws.com
// AWS Cloud9 : https://aws.amazon.com/cloud9/ // AWS Cloud9
// Submitted by: AWS Security <psl-maintainers@amazon.com> // Submitted by: AWS Security <psl-maintainers@amazon.com>
// Reference: 2b6dfa9a-3a7f-4367-b2e7-0321e77c0d59 // Reference: 2b6dfa9a-3a7f-4367-b2e7-0321e77c0d59
vfs.cloud9.af-south-1.amazonaws.com vfs.cloud9.af-south-1.amazonaws.com
@ -10850,6 +10857,49 @@ webview-assets.cloud9.us-west-1.amazonaws.com
vfs.cloud9.us-west-2.amazonaws.com vfs.cloud9.us-west-2.amazonaws.com
webview-assets.cloud9.us-west-2.amazonaws.com webview-assets.cloud9.us-west-2.amazonaws.com
// AWS Elastic Beanstalk
// Submitted by Luke Wells <psl-maintainers@amazon.com>
// Reference: aa202394-43a0-4857-b245-8db04549137e
cn-north-1.eb.amazonaws.com.cn
cn-northwest-1.eb.amazonaws.com.cn
elasticbeanstalk.com
ap-northeast-1.elasticbeanstalk.com
ap-northeast-2.elasticbeanstalk.com
ap-northeast-3.elasticbeanstalk.com
ap-south-1.elasticbeanstalk.com
ap-southeast-1.elasticbeanstalk.com
ap-southeast-2.elasticbeanstalk.com
ca-central-1.elasticbeanstalk.com
eu-central-1.elasticbeanstalk.com
eu-west-1.elasticbeanstalk.com
eu-west-2.elasticbeanstalk.com
eu-west-3.elasticbeanstalk.com
sa-east-1.elasticbeanstalk.com
us-east-1.elasticbeanstalk.com
us-east-2.elasticbeanstalk.com
us-gov-west-1.elasticbeanstalk.com
us-west-1.elasticbeanstalk.com
us-west-2.elasticbeanstalk.com
// (AWS) Elastic Load Balancing
// Submitted by Luke Wells <psl-maintainers@amazon.com>
// Reference: 12a3d528-1bac-4433-a359-a395867ffed2
*.elb.amazonaws.com.cn
*.elb.amazonaws.com
// AWS Global Accelerator
// Submitted by Daniel Massaguer <psl-maintainers@amazon.com>
// Reference: d916759d-a08b-4241-b536-4db887383a6a
awsglobalaccelerator.com
// eero
// Submitted by Yue Kang <eero-dynamic-dns@amazon.com>
// Reference: 264afe70-f62c-4c02-8ab9-b5281ed24461
eero.online
eero-stage.online
// concludes Amazon
// Amune : https://amune.org/ // Amune : https://amune.org/
// Submitted by Team Amune <cert@amune.org> // Submitted by Team Amune <cert@amune.org>
t3l3p0rt.net t3l3p0rt.net
@ -10905,6 +10955,10 @@ cdn.prod.atlassian-dev.net
// Submitted by Lukas Reschke <lukas@authentick.net> // Submitted by Lukas Reschke <lukas@authentick.net>
translated.page translated.page
// Autocode : https://autocode.com
// Submitted by Jacob Lee <jacob@autocode.com>
autocode.dev
// AVM : https://avm.de // AVM : https://avm.de
// Submitted by Andreas Weise <a.weise@avm.de> // Submitted by Andreas Weise <a.weise@avm.de>
myfritz.net myfritz.net
@ -11033,6 +11087,11 @@ cafjs.com
// Submitted by Marcus Popp <admin@callidomus.com> // Submitted by Marcus Popp <admin@callidomus.com>
mycd.eu mycd.eu
// Canva Pty Ltd : https://canva.com/
// Submitted by Joel Aquilina <publicsuffixlist@canva.com>
canva-apps.cn
canva-apps.com
// Carrd : https://carrd.co // Carrd : https://carrd.co
// Submitted by AJ <aj@carrd.co> // Submitted by AJ <aj@carrd.co>
drr.ac drr.ac
@ -11162,8 +11221,11 @@ cloudcontrolapp.com
// Cloudflare, Inc. : https://www.cloudflare.com/ // Cloudflare, Inc. : https://www.cloudflare.com/
// Submitted by Cloudflare Team <publicsuffixlist@cloudflare.com> // Submitted by Cloudflare Team <publicsuffixlist@cloudflare.com>
pages.dev cf-ipfs.com
cloudflare-ipfs.com
trycloudflare.com trycloudflare.com
pages.dev
r2.dev
workers.dev workers.dev
// Clovyr : https://clovyr.io // Clovyr : https://clovyr.io
@ -11745,11 +11807,6 @@ e4.cz
easypanel.app easypanel.app
easypanel.host easypanel.host
// eero : https://eero.com/
// Submitted by Yue Kang <eero-dynamic-dns@amazon.com>
eero.online
eero-stage.online
// Elementor : Elementor Ltd. // Elementor : Elementor Ltd.
// Submitted by Anton Barkan <antonb@elementor.com> // Submitted by Anton Barkan <antonb@elementor.com>
elementor.cloud elementor.cloud
@ -11952,6 +12009,7 @@ u.channelsdvr.net
// Fastly Inc. : http://www.fastly.com/ // Fastly Inc. : http://www.fastly.com/
// Submitted by Fastly Security <security@fastly.com> // Submitted by Fastly Security <security@fastly.com>
edgecompute.app edgecompute.app
fastly-edge.com
fastly-terrarium.com fastly-terrarium.com
fastlylb.net fastlylb.net
map.fastlylb.net map.fastlylb.net
@ -11963,6 +12021,10 @@ a.ssl.fastly.net
b.ssl.fastly.net b.ssl.fastly.net
global.ssl.fastly.net global.ssl.fastly.net
// Fastmail : https://www.fastmail.com/
// Submitted by Marc Bradshaw <marc@fastmailteam.com>
*.user.fm
// FASTVPS EESTI OU : https://fastvps.ru/ // FASTVPS EESTI OU : https://fastvps.ru/
// Submitted by Likhachev Vasiliy <lihachev@fastvps.ru> // Submitted by Likhachev Vasiliy <lihachev@fastvps.ru>
fastvps-server.com fastvps-server.com
@ -12432,7 +12494,6 @@ herokussl.com
// Hibernating Rhinos // Hibernating Rhinos
// Submitted by Oren Eini <oren@ravendb.net> // Submitted by Oren Eini <oren@ravendb.net>
ravendb.cloud ravendb.cloud
myravendb.com
ravendb.community ravendb.community
ravendb.me ravendb.me
development.run development.run
@ -12463,6 +12524,10 @@ ngo.ng
edu.scot edu.scot
sch.so sch.so
// HostFly : https://www.ie.ua
// Submitted by Bohdan Dub <support@hostfly.com.ua>
ie.ua
// HostyHosting (hostyhosting.com) // HostyHosting (hostyhosting.com)
hostyhosting.io hostyhosting.io
@ -12921,6 +12986,7 @@ cloudapp.net
azurestaticapps.net azurestaticapps.net
1.azurestaticapps.net 1.azurestaticapps.net
2.azurestaticapps.net 2.azurestaticapps.net
3.azurestaticapps.net
centralus.azurestaticapps.net centralus.azurestaticapps.net
eastasia.azurestaticapps.net eastasia.azurestaticapps.net
eastus2.azurestaticapps.net eastus2.azurestaticapps.net
@ -12973,25 +13039,6 @@ cust.retrosnub.co.uk
// Submitted by Paulus Schoutsen <infra@nabucasa.com> // Submitted by Paulus Schoutsen <infra@nabucasa.com>
ui.nabu.casa ui.nabu.casa
// Names.of.London : https://names.of.london/
// Submitted by James Stevens <registry[at]names.of.london> or <publiclist[at]jrcs.net>
pony.club
of.fashion
in.london
of.london
from.marketing
with.marketing
for.men
repair.men
and.mom
for.mom
for.one
under.one
for.sale
that.win
from.work
to.work
// Net at Work Gmbh : https://www.netatwork.de // Net at Work Gmbh : https://www.netatwork.de
// Submitted by Jan Jaeschke <jan.jaeschke@netatwork.de> // Submitted by Jan Jaeschke <jan.jaeschke@netatwork.de>
cloud.nospamproxy.com cloud.nospamproxy.com
@ -13006,7 +13053,19 @@ netlify.app
// ngrok : https://ngrok.com/ // ngrok : https://ngrok.com/
// Submitted by Alan Shreve <alan@ngrok.com> // Submitted by Alan Shreve <alan@ngrok.com>
ngrok.app
ngrok-free.app
ngrok.dev
ngrok-free.dev
ngrok.io ngrok.io
ap.ngrok.io
au.ngrok.io
eu.ngrok.io
in.ngrok.io
jp.ngrok.io
sa.ngrok.io
us.ngrok.io
ngrok.pizza
// Nimbus Hosting Ltd. : https://www.nimbushosting.co.uk/ // Nimbus Hosting Ltd. : https://www.nimbushosting.co.uk/
// Submitted by Nicholas Ford <nick@nimbushosting.co.uk> // Submitted by Nicholas Ford <nick@nimbushosting.co.uk>
@ -13188,7 +13247,26 @@ omniwe.site
// One.com: https://www.one.com/ // One.com: https://www.one.com/
// Submitted by Jacob Bunk Nielsen <jbn@one.com> // Submitted by Jacob Bunk Nielsen <jbn@one.com>
123hjemmeside.dk
123hjemmeside.no
123homepage.it
123kotisivu.fi
123minsida.se
123miweb.es
123paginaweb.pt
123sait.ru
123siteweb.fr
123webseite.at
123webseite.de
123website.be
123website.ch
123website.lu
123website.nl
service.one service.one
simplesite.com
simplesite.com.br
simplesite.gr
simplesite.pl
// One Fold Media : http://www.onefoldmedia.com/ // One Fold Media : http://www.onefoldmedia.com/
// Submitted by Eddie Jones <eddie@onefoldmedia.com> // Submitted by Eddie Jones <eddie@onefoldmedia.com>
@ -13457,7 +13535,9 @@ app.render.com
onrender.com onrender.com
// Repl.it : https://repl.it // Repl.it : https://repl.it
// Submitted by Mason Clayton <mason@repl.it> // Submitted by Lincoln Bergeson <lincoln@replit.com>
firewalledreplit.co
id.firewalledreplit.co
repl.co repl.co
id.repl.co id.repl.co
repl.run repl.run
@ -13505,6 +13585,56 @@ rocky.page
спб.рус спб.рус
я.рус я.рус
// SAKURA Internet Inc. : https://www.sakura.ad.jp/
// Submitted by Internet Service Department <rs-vendor-ml@sakura.ad.jp>
180r.com
dojin.com
sakuratan.com
sakuraweb.com
x0.com
2-d.jp
bona.jp
crap.jp
daynight.jp
eek.jp
flop.jp
halfmoon.jp
jeez.jp
matrix.jp
mimoza.jp
ivory.ne.jp
mail-box.ne.jp
mints.ne.jp
mokuren.ne.jp
opal.ne.jp
sakura.ne.jp
sumomo.ne.jp
topaz.ne.jp
netgamers.jp
nyanta.jp
o0o0.jp
rdy.jp
rgr.jp
rulez.jp
s3.isk01.sakurastorage.jp
s3.isk02.sakurastorage.jp
saloon.jp
sblo.jp
skr.jp
tank.jp
uh-oh.jp
undo.jp
rs.webaccel.jp
user.webaccel.jp
websozai.jp
xii.jp
squares.net
jpn.org
kirara.st
x0.to
from.tv
sakura.tv
// Salesforce.com, Inc. https://salesforce.com/ // Salesforce.com, Inc. https://salesforce.com/
// Submitted by Michael Biven <mbiven@salesforce.com> // Submitted by Michael Biven <mbiven@salesforce.com>
*.builder.code.com *.builder.code.com
@ -13657,6 +13787,9 @@ vp4.me
// Snowflake Inc : https://www.snowflake.com/ // Snowflake Inc : https://www.snowflake.com/
// Submitted by Faith Olapade <faith.olapade@snowflake.com> // Submitted by Faith Olapade <faith.olapade@snowflake.com>
snowflake.app
privatelink.snowflake.app
streamlit.app
streamlitapp.com streamlitapp.com
// Snowplow Analytics : https://snowplowanalytics.com/ // Snowplow Analytics : https://snowplowanalytics.com/
@ -13792,6 +13925,8 @@ direct.quickconnect.to
// Tabit Technologies Ltd. : https://tabit.cloud/ // Tabit Technologies Ltd. : https://tabit.cloud/
// Submitted by Oren Agiv <oren@tabit.cloud> // Submitted by Oren Agiv <oren@tabit.cloud>
tabitorder.co.il tabitorder.co.il
mytabit.co.il
mytabit.com
// TAIFUN Software AG : http://taifun-software.de // TAIFUN Software AG : http://taifun-software.de
// Submitted by Bjoern Henke <dev-server@taifun-software.de> // Submitted by Bjoern Henke <dev-server@taifun-software.de>
@ -13824,10 +13959,6 @@ telebit.app
telebit.io telebit.io
*.telebit.xyz *.telebit.xyz
// The Gwiddle Foundation : https://gwiddlefoundation.org.uk
// Submitted by Joshua Bayfield <joshua.bayfield@gwiddlefoundation.org.uk>
gwiddle.co.uk
// Thingdust AG : https://thingdust.com/ // Thingdust AG : https://thingdust.com/
// Submitted by Adrian Imboden <adi@thingdust.com> // Submitted by Adrian Imboden <adi@thingdust.com>
*.firenet.ch *.firenet.ch
@ -13862,10 +13993,6 @@ pages.torproject.net
bloxcms.com bloxcms.com
townnews-staging.com townnews-staging.com
// TradableBits: https://tradablebits.com
// Submitted by Dmitry Khrisanov dmitry@tradablebits.com
tbits.me
// TrafficPlex GmbH : https://www.trafficplex.de/ // TrafficPlex GmbH : https://www.trafficplex.de/
// Submitted by Phillipp Röll <phillipp.roell@trafficplex.de> // Submitted by Phillipp Röll <phillipp.roell@trafficplex.de>
12hp.at 12hp.at
@ -13938,6 +14065,10 @@ hk.org
ltd.hk ltd.hk
inc.hk inc.hk
// UK Intis Telecom LTD : https://it.com
// Submitted by ITComdomains <to@it.com>
it.com
// UNIVERSAL DOMAIN REGISTRY : https://www.udr.org.yt/ // UNIVERSAL DOMAIN REGISTRY : https://www.udr.org.yt/
// see also: whois -h whois.udr.org.yt help // see also: whois -h whois.udr.org.yt help
// Submitted by Atanunu Igbunuroghene <publicsuffixlist@udr.org.yt> // Submitted by Atanunu Igbunuroghene <publicsuffixlist@udr.org.yt>

View File

@ -1334,14 +1334,14 @@ void exec_on_terminal(struct terminal *term, unsigned char *path, unsigned char
int rs; int rs;
if (path && !*path) return; if (path && !*path) return;
if (!path) path = cast_uchar ""; if (!path) path = cast_uchar "";
#ifdef NO_FG_EXEC
fg = 0;
#endif
#ifdef HAVE_EXE_ON_BACKGROUND #ifdef HAVE_EXE_ON_BACKGROUND
if (*path) { if (*path) {
rs = exe_on_background(path, delet); rs = exe_on_background(path, delet, fg);
if (!rs) return; if (!rs) return;
} }
#endif
#ifdef NO_FG_EXEC
fg = 0;
#endif #endif
if (term->master) { if (term->master) {
if (!*path) { if (!*path) {

View File

@ -785,6 +785,7 @@ void create_initial_extensions(void)
ext.ext = cast_uchar "dvi", ext.ct=cast_uchar "application/x-dvi", update_ext(&ext); ext.ext = cast_uchar "dvi", ext.ct=cast_uchar "application/x-dvi", update_ext(&ext);
ext.ext = cast_uchar "dl", ext.ct=cast_uchar "video/dl", update_ext(&ext); ext.ext = cast_uchar "dl", ext.ct=cast_uchar "video/dl", update_ext(&ext);
ext.ext = cast_uchar "deb", ext.ct=cast_uchar "application/x-debian-package", update_ext(&ext); ext.ext = cast_uchar "deb", ext.ct=cast_uchar "application/x-debian-package", update_ext(&ext);
ext.ext = cast_uchar "avif", ext.ct=cast_uchar "image/avif", update_ext(&ext);
ext.ext = cast_uchar "avi", ext.ct=cast_uchar "video/x-msvideo", update_ext(&ext); ext.ext = cast_uchar "avi", ext.ct=cast_uchar "video/x-msvideo", update_ext(&ext);
ext.ext = cast_uchar "au,snd", ext.ct=cast_uchar "audio/basic", update_ext(&ext); ext.ext = cast_uchar "au,snd", ext.ct=cast_uchar "audio/basic", update_ext(&ext);
ext.ext = cast_uchar "aif,aiff,aifc", ext.ct=cast_uchar "audio/x-aiff", update_ext(&ext); ext.ext = cast_uchar "aif,aiff,aifc", ext.ct=cast_uchar "audio/x-aiff", update_ext(&ext);
@ -903,7 +904,8 @@ unsigned char *get_content_type_by_extension(unsigned char *url)
if ((extl == 3 && !casecmp(ext, cast_uchar "tif", 3)) || if ((extl == 3 && !casecmp(ext, cast_uchar "tif", 3)) ||
(extl == 4 && !casecmp(ext, cast_uchar "tiff", 4))) return stracpy(cast_uchar "image/tiff"); (extl == 4 && !casecmp(ext, cast_uchar "tiff", 4))) return stracpy(cast_uchar "image/tiff");
if ((extl == 3 && !casecmp(ext, cast_uchar "svg", 3))) return stracpy(cast_uchar "image/svg+xml"); if ((extl == 3 && !casecmp(ext, cast_uchar "svg", 3))) return stracpy(cast_uchar "image/svg+xml");
if ((extl == 3 && !casecmp(ext, cast_uchar "webp", 3))) return stracpy(cast_uchar "image/webp"); if ((extl == 4 && !casecmp(ext, cast_uchar "webp", 4))) return stracpy(cast_uchar "image/webp");
if ((extl == 4 && !casecmp(ext, cast_uchar "avif", 4))) return stracpy(cast_uchar "image/avif");
exxt = init_str(); el = 0; exxt = init_str(); el = 0;
add_to_str(&exxt, &el, cast_uchar "application/x-"); add_to_str(&exxt, &el, cast_uchar "application/x-");
add_bytes_to_str(&exxt, &el, ext, extl); add_bytes_to_str(&exxt, &el, ext, extl);
@ -966,6 +968,8 @@ static unsigned char *get_extension_by_content_type(unsigned char *ct)
return stracpy(cast_uchar "svg"); return stracpy(cast_uchar "svg");
if (!casestrcmp(ct, cast_uchar "image/webp")) if (!casestrcmp(ct, cast_uchar "image/webp"))
return stracpy(cast_uchar "webp"); return stracpy(cast_uchar "webp");
if (!casestrcmp(ct, cast_uchar "image/avif"))
return stracpy(cast_uchar "avif");
if (!cmpbeg(ct, cast_uchar "application/x-")) { if (!cmpbeg(ct, cast_uchar "application/x-")) {
x = ct + strlen("application/x-"); x = ct + strlen("application/x-");
if (casestrcmp(x, cast_uchar "z") && if (casestrcmp(x, cast_uchar "z") &&
@ -1328,4 +1332,3 @@ void free_types(void)
free_history(ext_search_history); free_history(ext_search_history);
free_history(assoc_search_history); free_history(assoc_search_history);
} }