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>:
Updated the German translation
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 ===
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:

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
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
dist-hook:
@ -45,4 +45,3 @@ haiku.o: $(srcdir)/haiku.cpp
datadir = $(prefix)/@DATADIRNAME@
LIBS = @LIBS@

View File

@ -78,7 +78,7 @@ bin_PROGRAMS = links
@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
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@
@ -94,7 +94,7 @@ PROGRAMS = $(bin_PROGRAMS)
DEFS = @DEFS@ -I. -I$(srcdir) -I.
CPPFLAGS = @CPPFLAGS@
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 \
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 \
@ -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 \
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
@ATHEOS_GR_TRUE@links_DEPENDENCIES = atheos.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@regexp.o
@ATHEOS_GR_TRUE@links_DEPENDENCIES = atheos.o
@HAIKU_GR_TRUE@links_DEPENDENCIES = haiku.o
links_LDFLAGS =
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
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
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
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

View File

@ -244,5 +244,8 @@
/* WebP */
#undef HAVE_WEBP
/* AVIF */
#undef HAVE_AVIF
/* Gpm_Event has wdx and 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)
{
size_t s = (size_t)f->length;
mem_free(f);
s += sizeof(struct fragment);
}
#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);
}
void finish_cache_entry(struct cache_entry *e)
{
e->count = cache_count++;
}
static int shrink_file_cache(int u)
{
int r = 0;

View File

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

View File

@ -572,6 +572,9 @@
/* Define if you have the <atheos/threads.h> header file. */
#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. */
#undef HAVE_BROTLI_DECODE_H
@ -848,6 +851,9 @@
/* Define if you have the atheos library (-latheos). */
#undef HAVE_LIBATHEOS
/* Define if you have the avif library (-lavif). */
#undef HAVE_LIBAVIF
/* Define if you have the be library (-lbe). */
#undef HAVE_LIBBE
@ -1203,5 +1209,8 @@
/* WebP */
#undef HAVE_WEBP
/* AVIF */
#undef HAVE_AVIF
/* Gpm_Event has wdx and 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)
AM_INIT_AUTOMAKE(links, 2.28)
AM_INIT_AUTOMAKE(links, 2.29)
ACLOCAL="./missing aclocal"
AUTOCONF="./missing autoconf"
@ -410,7 +410,8 @@ fi
AC_HAVE_FUNCS(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
AC_DEFINE(HAVE_MEMRCHR)
@ -1489,6 +1490,19 @@ 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
AC_MSG_ERROR([No graphics drivers found.])
dnl else
@ -1577,4 +1591,3 @@ fi
dnl mv Makefile Makefile.tmp
dnl grep -v DEPS_MAGIC Makefile.tmp >Makefile
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
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)
$(LINK) /EXECUTABLE=LINKS.EXE $(OBJS)$(LINKFLAGS)

50
dip.c
View File

@ -1996,11 +1996,14 @@ bypass_freetype:
* at least 1 apart
* 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;
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 (thickness>baseline) thickness=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 */
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;
unsigned char original_flags;
int top_line, bottom_line, original_width, my_width;
unsigned char original_flags, line_style;
struct rect saved_clip;
if (y + style->height <= device->clip.y1 || y >= device->clip.y2)
goto o;
if (style->flags & FF_UNDERLINE) {
/* Underline */
if (style->flags & FF_UNDERLINE || style->flags & FF_STRIKE) {
/* Underline or strike */
if (!width) {
width = &my_width;
*width = 0;
}
original_flags = style->flags;
original_width = *width;
style->flags &= ~FF_UNDERLINE;
get_underline_pos(style->height, &top_underline, &bottom_underline);
restrict_clip_area(device, &saved_clip, 0, 0, device->size.x2, y + top_underline);
line_style = style->flags & FF_UNDERLINE ? FF_UNDERLINE : FF_STRIKE;
style->flags &= ~line_style;
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);
set_clip_area(device, &saved_clip);
if (bottom_underline - top_underline == 1) {
if (bottom_line - top_line == 1) {
/* 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 {
/* 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) {
/* Do the bottom half only if the underline is above
if (bottom_line < style->height) {
/* Do the bottom half only if the line is above
* the bottom of the letters.
*/
*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);
set_clip_area(device, &saved_clip);
}
@ -2275,9 +2279,11 @@ struct style *g_invert_style(struct style *old)
#ifdef HAVE_FREETYPE
st->ft_face = old->ft_face;
#endif
if (st->flags & FF_UNDERLINE) {
/* We have to get a foreground color for underlining */
st->underline_color = dip_get_color_sRGB((st->r1 << 16) | (st->g1 << 8) | (st->b1));
if (st->flags & FF_UNDERLINE || st->flags & FF_STRIKE) {
/* We have to get a foreground color for underlining and
* striking
*/
st->line_color = dip_get_color_sRGB((st->r1 << 16) | (st->g1 << 8) | (st->b1));
}
st->mono_space = old->mono_space;
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
st->ft_face = freetype_get_font(font);
#endif
if (fflags & FF_UNDERLINE) {
/* We have to get a foreground color for underlining */
st->underline_color = dip_get_color_sRGB(fg);
if (fflags & FF_UNDERLINE || fflags & FF_STRIKE) {
/* We have to get a foreground color for underlining and
* striking
*/
st->line_color = dip_get_color_sRGB(fg);
}
if (fflags & FF_MONOSPACED)
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;
}
static void html_strike(unsigned char *a)
{
get_js_events(a);
format_.attr |= AT_STRIKE;
}
static void html_fixed(unsigned char *a)
{
get_js_events(a);
@ -1773,6 +1779,16 @@ static void html_button(unsigned char *a)
{
unsigned char *al;
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);
fc = mem_calloc(sizeof(struct form_control));
if (!(al = get_attr_val(a, cast_uchar "type"))) {
@ -2777,8 +2793,10 @@ static struct element_info elements[] = {
{"EM", html_italic, 0, 0},
{"ABBR", html_italic, 0, 0},
{"U", html_underline, 0, 0},
{"S", html_underline, 0, 0},
{"STRIKE", html_underline, 0, 0},
{"INS", html_underline, 0, 0},
{"S", html_strike, 0, 0},
{"DEL", html_strike, 0, 0},
{"STRIKE", html_strike, 0, 0},
{"FIXED", html_fixed, 0, 0},
{"CODE", 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;
ln_break(lnb);
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);
break;
}

View File

@ -113,6 +113,7 @@ static struct style *get_style_by_ta(struct text_attrib *ta)
fflags = 0;
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_ITALIC) fflags |= FF_ITALIC;
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);
if (format_.attr & AT_ITALIC) fg = fg ^ 0x01;
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;
fg = fg_color(fg, bg);
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: ");
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)) {
/*
@ -661,7 +661,7 @@ static void add_accept(unsigned char **hdr, int *l, struct connection *c)
if (c->doh) {
add_to_str(hdr, l, cast_uchar "Accept: application/dns-message\r\n");
} 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 {
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:
webp_destroy_decoder(cimg);
break;
#endif
#ifdef HAVE_AVIF
case IM_AVIF:
avif_destroy_decoder(cimg);
break;
#endif
}
mem_free(cimg->decoder);
@ -782,6 +787,17 @@ static void type(struct cached_image *cimg, unsigned char *content_type, unsigne
#ifdef HAVE_WEBP
if (data[0] == 'R' && data[1] == 'I' && data[2] == 'F' && data[3] == 'F')
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
if (data[0] == 0x89 && data[1] == 'P' && data[2] == 'N' && data[3] == 'G')
goto have_png;
@ -835,6 +851,13 @@ static void type(struct cached_image *cimg, unsigned char *content_type, unsigne
webp_start(cimg);
} else
#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 */
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);
break;
#endif /* #ifdef HAVE_WEBP */
#ifdef HAVE_AVIF
case IM_AVIF:
avif_restart(cimg,data,length);
break;
#endif /* #ifdef HAVE_AVIF */
#ifdef DEBUG
default:
fprintf(stderr,"cimg->image_type=%d\n",cimg->state);
@ -967,6 +995,10 @@ img_process_download.\n");
#ifdef HAVE_WEBP
if (cimg->image_type==IM_WEBP)
webp_finish(cimg);
#endif
#ifdef HAVE_AVIF
if (cimg->image_type==IM_AVIF)
avif_finish(cimg);
#endif
}
cimg->eof_hit=1;
@ -1373,6 +1405,9 @@ int known_image_type(unsigned char *type)
#ifdef HAVE_WEBP
if (!casestrcmp(type, cast_uchar "image/webp")) return 1;
#endif
#ifdef HAVE_AVIF
if (!casestrcmp(type, cast_uchar "image/avif")) return 1;
#endif
#endif
return 0;
}

View File

@ -1,7 +1,7 @@
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.
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
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_CONFIG_ERROR, "Błąd konfiguracji",
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_UNABLE_TO_WRITE_TO_BOOKMARK_FILE, "Nie można zapisać pliku zakładek",
T_ABOUT, "O programie",
@ -43,16 +43,16 @@ T_GPM_MOUSE_DRIVER, "Sterownik myszy GPM",
T_XTERM_FOR_OS2, "Xterm dla OS/2",
T_GRAPHICS_MODE, "Tryb graficzny",
T_IMAGE_LIBRARIES, "Biblioteki obrazów",
T_FONT_RENDERING, NULL,
T_INTERNAL, NULL,
T_FONT_RENDERING, "Renderowanie fontów",
T_INTERNAL, "Wewnêtrzne",
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_THREAD, "wątek",
T_THREADS, "wątki",
T_THREADS5, "wątków",
T_CONFIGURATION_DIRECTORY, NULL,
T_NONE, NULL,
T_CONFIGURATION_DIRECTORY, "Katalog konfiguracyjny",
T_NONE, "Brak",
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_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_FORMATTED_DOCUMENT_CACHE, "Sformatowane dokumenty w pamięci podręcznej",
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_TIMERS, "zegar(ów)",
T_WAITING, "oczekujących",
@ -82,14 +82,14 @@ T_DOCUMENTS, "dokument
T_SERVERS, "serwerów",
T_MEMORY_ALLOCATED, "przydzielonej pamięci",
T_BLOCKS_ALLOCATED, "bloków",
T_MEMORY_LARGE_BLOCKS, NULL,
T_BLOCKS_LARGE_BLOCKS, NULL,
T_MEMORY_LARGE_BLOCKS, "przydzielonych w du¿ych blokach",
T_BLOCKS_LARGE_BLOCKS, "du¿ych bloków",
T_MEMORY_REQUESTED, "żądanej z systemu pamięci",
T_BLOCKS_REQUESTED, "bloków",
T_JS_MEMORY_ALLOCATED, "przydzielonej pamięci dla javascriptu",
T_MEMORY_INFO, "Informacje o pamięci",
T_MOST_ALLOCATED, NULL,
T_LARGEST_BLOCKS, NULL,
T_MOST_ALLOCATED, "Najwiêcej przydzielone",
T_LARGEST_BLOCKS, "Najwiêksze bloki",
T_NO_HISTORY, "Brak historii",
T_NO_DOWNLOADS, "Brak pobrań",
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_KOI8R_FRAMES, "Ramki KOI8-R",
T_FREEBSD_FRAMES, "Ramki FreeBSD",
T_UTF8_FRAMES, NULL,
T_UTF8_FRAMES, "Ramki UTF-8",
T_USE_11M, "Użyj ^[[11m",
T_RESTRICT_FRAMES_IN_CP850_852, "Ogranicz ramki w cp850/852",
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_NOPROXY_LIST, "Lista domen dostępnych bez proxy",
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_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_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_FILE, "Plik certyfikatu klienta",
T_CLIENT_CERTIFICATE_KEY_PASSWORD, "Hasło certyfikatu klienta (nie będzie zapisane w pliku konfiguracyjnym)",
T_BAD_FILE, "Błędny plik",
T_THE_FILE_DOES_NOT_EXIST, "Plik nie istnieje",
T_THE_FILE_HAS_INVALID_FORMAT, "Plik ma błędny format",
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, "B³±d inicjowania wbudowanych certyfikatów",
T_FAILED, "nie powiod³o siê",
T_DNS_OPTIONS, "Opcje DNS",
T_DNS_OVER_HTTPS_URL, "DNS po HTTPS (host lub URL)",
T_CONNECTIONS, "Połączenia",
T_MAX_CONNECTIONS, "Maksymalna liczba połączeń",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Maksymalna liczba połączeń z jednym serwerem",
T_RETRIES, "Próby (0 - bez ograniczeń)",
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_TRYING_MULTIPLE_ADDRESSES, NULL,
T_TIMEOUT_WHEN_TRYING_KEEPALIVE_CONNECTION, NULL,
T_TIMEOUT_WHEN_TRYING_MULTIPLE_ADDRESSES, "Maks. czas oczekiwania przy wielu adresach",
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_IPV6_ADDRESS, "... adresu IPv6",
T_ASYNC_DNS_LOOKUP, "Asynchroniczne szukanie nazw",
@ -217,9 +217,9 @@ T_FIND_PREVIOUS, "Znajd
T_TOGGLE_HTML_PLAIN, "Przełącz html/plain",
T_DOCUMENT_INFO, "Informacje o dokumencie",
T_FRAME_AT_FULL_SCREEN, "Ramka na całym ekranie",
T_SAVE_CLIPBOARD_TO_A_FILE, NULL,
T_LOAD_CLIPBOARD_FROM_A_FILE, NULL,
T_THE_CLIPBOARD_IS_EMPTY, NULL,
T_SAVE_CLIPBOARD_TO_A_FILE, "Zapis schowka do pliku",
T_LOAD_CLIPBOARD_FROM_A_FILE, "Odczyt schowka z pliku",
T_THE_CLIPBOARD_IS_EMPTY, "Schowek jest pusty",
T_SAVE_HTML_OPTIONS, "Zapisz ustawienia HTML",
T_CHARACTER_SET, "Zestaw znaków",
T_DEFAULT_CHARSET, "Domyślny",
@ -233,7 +233,7 @@ T_FILE, "Plik",
T_VIEW, "Widok",
T_LINK, "Link",
T_DOWNLOADS, "Pobieranie",
T_WINDOWS, NULL,
T_WINDOWS, "Okna",
T_SETUP, "Ustawienia",
T_HELP, "Pomoc",
T_ENTER_URL, "Wprowadź URL",
@ -244,8 +244,8 @@ T_SEARCH_FOR_TEXT, "Znajd
T_PAGE_P, "(s. ",
T_PAGE_OF, " z ",
T_PAGE_CL, ")",
T_FORMATTING_DOCUMENT, NULL,
T_SEARCHING, NULL,
T_FORMATTING_DOCUMENT, "Formatowanie dokumentu",
T_SEARCHING, "Wyszukiwanie",
T_WAITING_IN_QUEUE, "Oczekujące w kolejce",
T_LOOKING_UP_HOST, "Szukam serwera",
T_MAKING_CONNECTION, "Nawiązywanie połączenia",
@ -261,7 +261,7 @@ T_INTERRUPTED, "Przerwano",
T_INTERNAL_ERROR, "Błąd wewnętrzny",
T_OUT_OF_MEMORY, "Brak pamięci",
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_READING_FROM_SOCKET, "Błąd przy czytaniu z gniazda",
T_DATA_MODIFIED, "Dane zostały zmodyfikowane",
@ -273,7 +273,7 @@ T_CANT_GET_SOCKET_STATE, "Nie mo
T_CYCLIC_REDIRECT, "Cykliczne przekierowanie",
T_TOO_LARGE_FILE, "Plik zbyt duży",
T_BAD_HTTP_RESPONSE, "Nieprawidłowa odpowiedź HTTP",
T_HTTP_100, NULL,
T_HTTP_100, "HTTP 100 (\?\?\?)",
T_NO_CONTENT, "Plik pusty",
T_HTTPS_FWD_ERROR, "Przekierowanie HTTPS nie powiodło się",
T_INVALID_CERTIFICATE, "Błędny certyfikat",
@ -314,7 +314,7 @@ T_ABORT, "Przerwij",
T_ABORT_AND_DELETE_FILE, "Przerwij i usuń plik",
T_YES, "Tak",
T_NO, "Nie",
T_NEVER, NULL,
T_NEVER, "Nigdy",
T_DIRECTORY, "Katalog",
T_FILE_ALREADY_EXISTS, "Plik już istnieje",
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_SAVE_ERROR, "Błąd zapisu",
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_FOLLOW_LINK, "Wybierz link",
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_NO_HEADER, "Dokument nie ma nagłówka",
T_URL, "URL",
T_IP_ADDRESS, NULL,
T_IP_ADDRESSES, NULL,
T_IP_ADDRESS, "Adres IP",
T_IP_ADDRESSES, "Adresy IP",
T_SIZE, "Rozmiar",
T_COMPRESSED_WITH, "skompresowany",
T_INCOMPLETE, "niekompletne",
@ -430,8 +430,8 @@ T_SERVER, "Serwer",
T_DATE, "Data",
T_LAST_MODIFIED, "Ostatnia zmiana",
T_SSL_CIPHER, "Szyfr SSL",
T_CERTIFICATE_AUTHORITY, NULL,
T_CERTIFICATE_AUTHORITIES, NULL,
T_CERTIFICATE_AUTHORITY, "Instytucja certyfikacji",
T_CERTIFICATE_AUTHORITIES, "Instytucje certyfikacji",
T_LANGUAGE, "Język",
T_DEFAULT_LANG, "Domyślny",
T_GO_TO_LINK, "Przejdź do odnośnika",
@ -446,7 +446,7 @@ T_fOLDER, "folder",
T_ADD, "Dodaj",
T_DELETE, "Usuń",
T_EDIT, "Edytuj",
T_SELECT, NULL,
T_SELECT, "Zaznacz",
T_MOVE, "Przenieś",
T_NO_ITEMS_SELECTED, "Nie zaznaczyłeś niczego",
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_MMS_PROG, "Program MMS (% jest zastępowany przez URL)",
T_MAGNET_PROG, "Program Magnet (% jest zastępowany przez URL)",
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "Program pow³oki",
T_GOPHER_PROG, "Program Gopher (% jest zastêpowany przez URL)",
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_TELNET_AND_SHELL_PROGRAMS, "Obsługa poczty, usługi Telnet i powłoki",
T_NO_PROGRAM, "Nie określono programu",
@ -518,7 +518,7 @@ T_TELNET, "telneta",
T_TN3270, "tn3270",
T_MMS, "mms",
T_MAGNET, "magneta",
T_GOPHER, NULL,
T_GOPHER, "gopher",
T_BAD_MAILTO_URL, "Błędny adres e-mail",
T_BAD_TELNET_URL, "Niewłaściwy adres serwera dla programu Telnet",
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_16_BIT_GAMMA_CORRECTION, "16-bitowa korekcja gamma",
T_AUTO_GAMMA_CORRECTION, "Automatyczna korekcja gamma",
T_RGB_PALETTE_8x8x4, NULL,
T_RGB_PALETTE_6x6x6, NULL,
T_SWITCH_PALETTE, NULL,
T_RGB_PALETTE_8x8x4, "Paleta RGB 8x8x4",
T_RGB_PALETTE_6x6x6, "Paleta RGB 6x6x6",
T_SWITCH_PALETTE, "Zmieñ paletê",
T_OVERWRITE_SCREEN_INSTEAD_OF_SCROLLING_IT, "Przykrycie ekranu zamiast przewijania",
T_ALERT, "Uwaga",
T_QUESTION, "Pytanie",
@ -571,16 +571,16 @@ T_ENABLE_JAVASCRIPT, "W
T_VERBOSE_JS_ERRORS, "Śledzenie błędów Javascriptu",
T_VERBOSE_JS_WARNINGS, "Śledzenie ostrzeżeń Javascriptu",
T_MISCELANEOUS_OPTIONS, "Opcje różne",
T_FONTS, NULL,
T_REGULAR_FONT, NULL,
T_BOLD_FONT, NULL,
T_MONOSPACED_FONT, NULL,
T_MONOSPACED_BOLD_FONT, NULL,
T_ITALIC_FONT, NULL,
T_ITALIC_BOLD_FONT, NULL,
T_MONOSPACED_ITALIC_FONT, NULL,
T_MONOSPACED_ITALIC_BOLD_FONT, NULL,
T_BUILT_IN_FONT, NULL,
T_FONTS, "Fonty",
T_REGULAR_FONT, "Font zwyk³y",
T_BOLD_FONT, "Font pogrubiony",
T_MONOSPACED_FONT, "Font o sta³ej szeroko¶ci",
T_MONOSPACED_BOLD_FONT, "Font pogrubiony o sta³ej szeroko¶ci",
T_ITALIC_FONT, "Font pochy³y",
T_ITALIC_BOLD_FONT, "Font pochy³y pogrubiony",
T_MONOSPACED_ITALIC_FONT, "Font pochy³y o sta³ej szeroko¶ci",
T_MONOSPACED_ITALIC_BOLD_FONT, "Font pochy³y, pogrubiony o sta³ej szeroko¶ci",
T_BUILT_IN_FONT, "Font wbudowany",
T_JAVASCRIPT_ERROR, "Błąd Javascriptu",
T_JAVASCRIPT_WARNING, "Ostrzeżenie Javascriptu",
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_BOOKMARKS_FILE, "Plik zakładek",
T_SAVE_URL_HISTORY_ON_EXIT, "Zapis historii URL-i przy wyłączaniu",
T_COOKIES, NULL,
T_ENABLE_COOKIES, NULL,
T_SAVE_COOKIES, NULL,
T_MAX_COOKIE_AGE, NULL,
T_CLEAR_COOKIES, NULL,
T_COOKIES_WERE_CLEARED, NULL,
T_COOKIES, "Ciasteczka",
T_ENABLE_COOKIES, "W³±czenie ciasteczek",
T_SAVE_COOKIES, "Zapis ciasteczek",
T_MAX_COOKIE_AGE, "Maksymalny wiek ciasteczek w dniach (0 - nieskoñczony)",
T_CLEAR_COOKIES, "Wyczy¶æ ciasteczka",
T_COOKIES_WERE_CLEARED, "ciasteczka zosta³y wyczyszczone",
T_ENTER_COLORS_AS_RGB_TRIPLETS, "Wpisz kolory jako trójki RGB",
T_JS_MEMORY_LIMIT_KB, "Pamięć dla Javascriptu",
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_ASSOCIATIONS, "S",
T_HK_FILE_EXTENSIONS, "R",
T_HK_BLOCK_LIST, NULL,
T_HK_BLOCK_LIST, "B",
T_HK_SAVE_OPTIONS, "O",
T_HK_ABOUT, "O",
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" },
{ "B\263\261d konfiguracji" },
{ "Nie mo\277na zapisa\346 do pliku konfiguracyjnego" },
{ NULL },
{ "Katalog domowy niedost\352pny" },
{ "B\263\261d zak\263adki" },
{ "Nie mo\277na zapisa\346 pliku zak\263adek" },
{ "O programie" },
@ -15271,16 +15271,16 @@ static_const struct translation translation_polish [] = {
{ "Xterm dla OS/2" },
{ "Tryb graficzny" },
{ "Biblioteki obraz\363w" },
{ NULL },
{ NULL },
{ "Renderowanie font\363w" },
{ "Wewn\352trzne" },
{ "OpenMP" },
{ NULL },
{ "Nie u\277ywane w trybie tekstowym" },
{ "Wy\263\261czone" },
{ "w\261tek" },
{ "w\261tki" },
{ "w\261tk\363w" },
{ NULL },
{ NULL },
{ "Katalog konfiguracyjny" },
{ "Brak" },
{ "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)" },
{ "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" },
{ "Sformatowane dokumenty w pami\352ci podr\352cznej" },
{ "Pami\352\346 podr\352czna DNS" },
{ NULL },
{ "Pami\352\346 podr\352czna sesji TLS" },
{ "uchwyt(\363w)" },
{ "zegar(\363w)" },
{ "oczekuj\261cych" },
@ -15310,14 +15310,14 @@ static_const struct translation translation_polish [] = {
{ "serwer\363w" },
{ "przydzielonej pami\352ci" },
{ "blok\363w" },
{ NULL },
{ NULL },
{ "przydzielonych w du\277ych blokach" },
{ "du\277ych blok\363w" },
{ "\277\261danej z systemu pami\352ci" },
{ "blok\363w" },
{ "przydzielonej pami\352ci dla javascriptu" },
{ "Informacje o pami\352ci" },
{ NULL },
{ NULL },
{ "Najwi\352cej przydzielone" },
{ "Najwi\352ksze bloki" },
{ "Brak historii" },
{ "Brak pobra\361" },
{ "Brak ramek" },
@ -15325,7 +15325,7 @@ static_const struct translation translation_polish [] = {
{ "Ramki typu Linux lub OS/2" },
{ "Ramki KOI8-R" },
{ "Ramki FreeBSD" },
{ NULL },
{ "Ramki UTF-8" },
{ "U\277yj ^[[11m" },
{ "Ogranicz ramki w cp850/852" },
{ "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)" },
{ "Lista domen dost\352pnych bez proxy" },
{ "\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" },
{ "Akceptowanie b\263\352dnych certyfikat\363w i s\263abych szyfr\363w" },
{ "Ostrzeganie o b\263\352dnych certyfikatach i s\263abych szyfrach" },
{ "Odrzucanie b\263\352dnych certyfikat\363w i s\263abych szyfr\363w" },
{ NULL },
{ "U\277ycie wbudowanych certyfikat\363w" },
{ "Plik klucza certyfikatu klienta" },
{ "Plik certyfikatu klienta" },
{ "Has\263o certyfikatu klienta (nie b\352dzie zapisane w pliku konfiguracyjnym)" },
{ "B\263\352dny plik" },
{ "Plik nie istnieje" },
{ "Plik ma b\263\352dny format" },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ "B\263\261d inicjowania wbudowanych certyfikat\363w" },
{ "nie powiod\263o si\352" },
{ "Opcje DNS" },
{ "DNS po HTTPS (host lub URL)" },
{ "Po\263\261czenia" },
{ "Maksymalna liczba po\263\261cze\361" },
{ "Maksymalna liczba po\263\261cze\361 z jednym serwerem" },
{ "Pr\363by (0 - bez ogranicze\361)" },
{ "Maksymalny czas oczekiwania na po\263\261czenie (sek)" },
{ "Maks. czas oczekiwania na po\263\261czenie niewznawialne" },
{ NULL },
{ NULL },
{ "Maks. czas oczekiwania przy wielu adresach" },
{ "Maks. czas oczekiwania przy po\263\261czeniach podtrzymywanych" },
{ "Przypisanie do lokalnego adresu IP" },
{ "... adresu IPv6" },
{ "Asynchroniczne szukanie nazw" },
@ -15445,9 +15445,9 @@ static_const struct translation translation_polish [] = {
{ "Prze\263\261cz html/plain" },
{ "Informacje o dokumencie" },
{ "Ramka na ca\263ym ekranie" },
{ NULL },
{ NULL },
{ NULL },
{ "Zapis schowka do pliku" },
{ "Odczyt schowka z pliku" },
{ "Schowek jest pusty" },
{ "Zapisz ustawienia HTML" },
{ "Zestaw znak\363w" },
{ "Domy\266lny" },
@ -15461,7 +15461,7 @@ static_const struct translation translation_polish [] = {
{ "Widok" },
{ "Link" },
{ "Pobieranie" },
{ NULL },
{ "Okna" },
{ "Ustawienia" },
{ "Pomoc" },
{ "Wprowad\274 URL" },
@ -15472,8 +15472,8 @@ static_const struct translation translation_polish [] = {
{ "(s. " },
{ " z " },
{ ")" },
{ NULL },
{ NULL },
{ "Formatowanie dokumentu" },
{ "Wyszukiwanie" },
{ "Oczekuj\261ce w kolejce" },
{ "Szukam serwera" },
{ "Nawi\261zywanie po\263\261czenia" },
@ -15489,7 +15489,7 @@ static_const struct translation translation_polish [] = {
{ "B\263\261d wewn\352trzny" },
{ "Brak pami\352ci" },
{ "Nie znaleziono serwera" },
{ NULL },
{ "Nie znaleziono proxy" },
{ "B\263\261d przy zapisywaniu do gniazda" },
{ "B\263\261d przy czytaniu z gniazda" },
{ "Dane zosta\263y zmodyfikowane" },
@ -15501,7 +15501,7 @@ static_const struct translation translation_polish [] = {
{ "Cykliczne przekierowanie" },
{ "Plik zbyt du\277y" },
{ "Nieprawid\263owa odpowied\274 HTTP" },
{ NULL },
{ "HTTP 100 (\?\?\?)" },
{ "Plik pusty" },
{ "Przekierowanie HTTPS nie powiod\263o si\352" },
{ "B\263\352dny certyfikat" },
@ -15542,7 +15542,7 @@ static_const struct translation translation_polish [] = {
{ "Przerwij i usu\361 plik" },
{ "Tak" },
{ "Nie" },
{ NULL },
{ "Nigdy" },
{ "Katalog" },
{ "Plik ju\277 istnieje" },
{ "ju\277 istnieje jako aktywne \266ci\261ganie." },
@ -15603,7 +15603,7 @@ static_const struct translation translation_polish [] = {
{ "Nie znaleziono wyra\277enia" },
{ "B\263\261d zapisu" },
{ "B\263\261d zapisu do pliku" },
{ NULL },
{ "B\263\261d odczytu z pliku" },
{ "Poka\277 map\352 obrazk\363w" },
{ "Wybierz link" },
{ "Otw\363rz w nowym oknie" },
@ -15646,8 +15646,8 @@ static_const struct translation translation_polish [] = {
{ "Tak naprawd\352 to jeste\266 nigdzie!" },
{ "Dokument nie ma nag\263\363wka" },
{ "URL" },
{ NULL },
{ NULL },
{ "Adres IP" },
{ "Adresy IP" },
{ "Rozmiar" },
{ "skompresowany" },
{ "niekompletne" },
@ -15658,8 +15658,8 @@ static_const struct translation translation_polish [] = {
{ "Data" },
{ "Ostatnia zmiana" },
{ "Szyfr SSL" },
{ NULL },
{ NULL },
{ "Instytucja certyfikacji" },
{ "Instytucje certyfikacji" },
{ "J\352zyk" },
{ "Domy\266lny" },
{ "Przejd\274 do odno\266nika" },
@ -15674,7 +15674,7 @@ static_const struct translation translation_polish [] = {
{ "Dodaj" },
{ "Usu\361" },
{ "Edytuj" },
{ NULL },
{ "Zaznacz" },
{ "Przenie\266" },
{ "Nie zaznaczy\263e\266 niczego" },
{ "Odznacz wszystkie" },
@ -15735,8 +15735,8 @@ static_const struct translation translation_polish [] = {
{ "Program Tn3270 (% jest zast\352powany przez \"host\" lub przez \"host port\")" },
{ "Program MMS (% jest zast\352powany przez URL)" },
{ "Program Magnet (% jest zast\352powany przez URL)" },
{ NULL },
{ "Program pow\263oki" },
{ "Program Gopher (% jest zast\352powany przez URL)" },
{ "Pow\263oka do wykonywania polece\361 zewn\352trznych (% jest zast\352powany poleceniem)" },
{ "Obs\263uga poczty i us\263ugi Telnet" },
{ "Obs\263uga poczty, us\263ugi Telnet i pow\263oki" },
{ "Nie okre\266lono programu" },
@ -15746,7 +15746,7 @@ static_const struct translation translation_polish [] = {
{ "tn3270" },
{ "mms" },
{ "magneta" },
{ NULL },
{ "gopher" },
{ "B\263\352dny adres e-mail" },
{ "Niew\263a\266ciwy adres serwera dla programu Telnet" },
{ "Niew\263a\266ciwy adres serwera dla programu Tn3270" },
@ -15783,9 +15783,9 @@ static_const struct translation translation_polish [] = {
{ "8-bitowa korekcja gamma" },
{ "16-bitowa korekcja gamma" },
{ "Automatyczna korekcja gamma" },
{ NULL },
{ NULL },
{ NULL },
{ "Paleta RGB 8x8x4" },
{ "Paleta RGB 6x6x6" },
{ "Zmie\361 palet\352" },
{ "Przykrycie ekranu zamiast przewijania" },
{ "Uwaga" },
{ "Pytanie" },
@ -15799,16 +15799,16 @@ static_const struct translation translation_polish [] = {
{ "\246ledzenie b\263\352d\363w Javascriptu" },
{ "\246ledzenie ostrze\277e\361 Javascriptu" },
{ "Opcje r\363\277ne" },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ "Fonty" },
{ "Font zwyk\263y" },
{ "Font pogrubiony" },
{ "Font o sta\263ej szeroko\266ci" },
{ "Font pogrubiony o sta\263ej szeroko\266ci" },
{ "Font pochy\263y" },
{ "Font pochy\263y pogrubiony" },
{ "Font pochy\263y o sta\263ej szeroko\266ci" },
{ "Font pochy\263y, pogrubiony o sta\263ej szeroko\266ci" },
{ "Font wbudowany" },
{ "B\263\261d Javascriptu" },
{ "Ostrze\277enie Javascriptu" },
{ "Pomi\361" },
@ -15834,12 +15834,12 @@ static_const struct translation translation_polish [] = {
{ "Kolor ramki paska przewijania" },
{ "Plik zak\263adek" },
{ "Zapis historii URL-i przy wy\263\261czaniu" },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ NULL },
{ "Ciasteczka" },
{ "W\263\261czenie ciasteczek" },
{ "Zapis ciasteczek" },
{ "Maksymalny wiek ciasteczek w dniach (0 - niesko\361czony)" },
{ "Wyczy\266\346 ciasteczka" },
{ "ciasteczka zosta\263y wyczyszczone" },
{ "Wpisz kolory jako tr\363jki RGB" },
{ "Pami\352\346 dla Javascriptu" },
{ "Skalowanie wszystkich obraz\363w" },
@ -15911,7 +15911,7 @@ static_const struct translation translation_polish [] = {
{ "C" },
{ "S" },
{ "R" },
{ NULL },
{ "B" },
{ "O" },
{ "O" },
{ "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 *);
int exe(unsigned char *, int);
#ifdef WIN
int exe_on_background(unsigned char *, unsigned char *);
int exe_on_background(unsigned char *, unsigned char *, int);
int windows_charset(void);
#define HAVE_EXE_ON_BACKGROUND
#endif
@ -1300,8 +1300,9 @@ int defrag_entry(struct cache_entry *);
void truncate_entry(struct cache_entry *, off_t, int);
void free_entry_to(struct cache_entry *, off_t);
void delete_entry_content(struct cache_entry *);
void delete_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 */
@ -2174,9 +2175,11 @@ struct style {
/* ?0 are background, ?1 foreground.
* These are unrounded 8-bit sRGB space
*/
unsigned char flags; /* non-zero means underline */
unsigned char flags; /* FF_ flags */
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
* width of the space otherwise
*/
@ -2266,6 +2269,7 @@ int hack_rgb(int rgb);
#define FF_MONOSPACED 2
#define FF_ITALIC 4
#define FF_UNDERLINE 8
#define FF_STRIKE 16
#ifndef USE_ITALIC
#define FF_SHAPES 4
@ -3168,6 +3172,10 @@ struct g_object_tag {
#define IM_WEBP 6
#endif /* #ifdef HAVE_WEBP */
#ifdef HAVE_AVIF
#define IM_AVIF 7
#endif /* #ifdef HAVE_AVIF */
#define MEANING_DIMS 0
#define MEANING_AUTOSCALE 1
struct cached_image {
@ -4380,6 +4388,19 @@ void add_webp_version(unsigned char **s, int *l);
#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 */
#ifdef G
@ -4539,6 +4560,7 @@ void init_grview(void);
#define AT_FIXED 8
#define AT_GRAPHICS 16
#define AT_INVERT 32
#define AT_STRIKE 64
#define AL_LEFT 0
#define AL_CENTER 1

View File

@ -1,7 +1,7 @@
<WARPIN>
<HEAD>
<PCK INDEX="1"
PACKAGEID="Mikulas Patocka\Links\Base package\2\28"
PACKAGEID="Mikulas Patocka\Links\Base package\2\29"
TARGET="?:\Links"
SELECT
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\cygdeflate-0.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\cygfontconfig-1.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\cygpng16-16.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\cygstdc++-6.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\cygwebp-7.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\cygdatrie-1.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\cygffi-6.dll"
Delete "$INSTDIR\cygfontconfig-1.dll"
@ -208,10 +209,11 @@ Delete "$INSTDIR\cygpcre-1.dll"
Delete "$INSTDIR\cygpixman-1-0.dll"
Delete "$INSTDIR\cygpng16-16.dll"
Delete "$INSTDIR\cygrsvg-2-2.dll"
Delete "$INSTDIR\cygsharpyuv-0.dll"
Delete "$INSTDIR\cygssl-1.1.dll"
Delete "$INSTDIR\cygstdc++-6.dll"
Delete "$INSTDIR\cygthai-0.dll"
Delete "$INSTDIR\cygtiff-6.dll"
Delete "$INSTDIR\cygtiff-7.dll"
Delete "$INSTDIR\cyguuid-1.dll"
Delete "$INSTDIR\cygwebp-7.dll"
Delete "$INSTDIR\cygwin1.dll"

5
menu.c
View File

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

View File

@ -1647,7 +1647,7 @@ int exe(unsigned char *path, int fg)
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__
unsigned char *x1;
@ -1692,15 +1692,29 @@ int exe_on_background(unsigned char *path, unsigned char *del)
if (use_create_process) {
PROCESS_INFORMATION pi;
STARTUPINFOA si;
unsigned char *cwd;
memset(&pi, 0, sizeof pi);
memset(&si, 0, 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();
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.hThread);
}
fd_unlock();
if (cwd)
mem_free(cwd);
} else {
/* We need to fork here so that we can close handles */
pid_t pid;

View File

@ -127,6 +127,9 @@ void setcstate(struct connection *c, int state)
{
struct status *stat;
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 = state) == S_TRANS) {
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_;
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);
if (ses->st) print_text(term, 0, term->y - 1, (int)strlen(cast_const_char ses->st), ses->st, COLOR_STATUS);
#ifdef G
@ -294,7 +295,8 @@ static void x_print_screen_title(struct terminal *term, void *ses_)
{
struct session *ses = (struct session *)ses_;
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;
fill_area(term, 0, 0, term->x, 1, ' ', color);
if ((m = print_current_title(ses))) {

View File

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

View File

@ -380,11 +380,29 @@ org.bi
// biz : https://en.wikipedia.org/wiki/.biz
biz
// bj : https://en.wikipedia.org/wiki/.bj
// bj : https://nic.bj/bj-suffixes.txt
// submitted by registry <contact@nic.bj>
bj
asso.bj
barreau.bj
gouv.bj
africa.bj
agro.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
@ -7171,7 +7189,7 @@ org.zw
// 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.
// aaa : 2015-02-26 American Automobile Association, Inc.
aaa
@ -7221,9 +7239,6 @@ aco
// actor : 2013-12-12 Dog Beach, LLC
actor
// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC)
adac
// ads : 2014-12-04 Charleston Road Registry Inc.
ads
@ -7341,7 +7356,7 @@ arab
// aramco : 2014-11-20 Aramco Services Company
aramco
// archi : 2014-02-06 Afilias Limited
// archi : 2014-02-06 Identity Digital Limited
archi
// army : 2014-03-06 Dog Beach, LLC
@ -7389,7 +7404,7 @@ auto
// autos : 2014-01-09 XYZ.COM LLC
autos
// avianca : 2015-01-08 Avianca Holdings S.A.
// avianca : 2015-01-08 Avianca Inc.
avianca
// aws : 2015-06-25 AWS Registry LLC
@ -7485,7 +7500,7 @@ best
// bestbuy : 2015-07-31 BBY Solutions, Inc.
bestbuy
// bet : 2015-05-07 Afilias Limited
// bet : 2015-05-07 Identity Digital Limited
bet
// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited
@ -7506,10 +7521,10 @@ bing
// bingo : 2014-12-04 Binky Moon, LLC
bingo
// bio : 2014-03-06 Afilias Limited
// bio : 2014-03-06 Identity Digital Limited
bio
// black : 2014-01-16 Afilias Limited
// black : 2014-01-16 Identity Digital Limited
black
// blackfriday : 2014-01-16 Registry Services, LLC
@ -7524,7 +7539,7 @@ blog
// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC
bloomberg
// blue : 2013-11-07 Afilias Limited
// blue : 2013-11-07 Identity Digital Limited
blue
// bms : 2014-10-30 Bristol-Myers Squibb Company
@ -7596,9 +7611,6 @@ brother
// brussels : 2014-02-06 DNS.be vzw
brussels
// bugatti : 2015-07-23 Bugatti International SA
bugatti
// build : 2013-11-07 Plan Bee LLC
build
@ -7641,9 +7653,6 @@ camera
// camp : 2013-11-07 Binky Moon, LLC
camp
// cancerresearch : 2014-05-15 Australian Cancer Research Foundation
cancerresearch
// canon : 2014-09-12 Canon Inc.
canon
@ -7782,7 +7791,7 @@ claims
// cleaning : 2013-12-05 Binky Moon, LLC
cleaning
// click : 2014-06-05 UNR Corp.
// click : 2014-06-05 Internet Naming Company LLC
click
// clinic : 2014-03-20 Binky Moon, LLC
@ -8379,7 +8388,7 @@ glass
// gle : 2014-07-24 Charleston Road Registry Inc.
gle
// global : 2014-04-17 Dot Global Domain Registry Limited
// global : 2014-04-17 Identity Digital Limited
global
// 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
// green : 2014-05-08 Afilias Limited
// green : 2014-05-08 Identity Digital Limited
green
// gripe : 2014-03-06 Binky Moon, LLC
@ -8517,7 +8526,7 @@ hisamitsu
// hitachi : 2014-10-31 Hitachi, Ltd.
hitachi
// hiv : 2014-03-13 UNR Corp.
// hiv : 2014-03-13 Internet Naming Company LLC
hiv
// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited
@ -8721,7 +8730,7 @@ jpmorgan
// jprs : 2014-09-18 Japan Registry Services Co., Ltd.
jprs
// juegos : 2014-03-20 UNR Corp.
// juegos : 2014-03-20 Internet Naming Company LLC
juegos
// juniper : 2015-07-30 JUNIPER NETWORKS, INC.
@ -8751,7 +8760,7 @@ kia
// kids : 2021-08-13 DotKids Foundation Limited
kids
// kim : 2013-09-23 Afilias Limited
// kim : 2013-09-23 Identity Digital Limited
kim
// kinder : 2014-11-07 Ferrero Trading Lux S.A.
@ -8856,7 +8865,7 @@ lego
// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION
lexus
// lgbt : 2014-05-08 Afilias Limited
// lgbt : 2014-05-08 Identity Digital Limited
lgbt
// 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
// llc : 2017-12-14 Afilias Limited
// llc : 2017-12-14 Identity Digital Limited
llc
// llp : 2019-08-26 Intercap Registry Inc.
@ -8922,9 +8931,6 @@ locker
// locus : 2015-06-25 Locus Analytics LLC
locus
// loft : 2015-07-30 Annco, Inc.
loft
// lol : 2015-01-30 XYZ.COM LLC
lol
@ -8934,7 +8940,7 @@ london
// lotte : 2014-11-07 Lotte Holdings Co., Ltd.
lotte
// lotto : 2014-04-10 Afilias Limited
// lotto : 2014-04-10 Identity Digital Limited
lotto
// love : 2014-12-22 Merchant Law Group LLP
@ -8961,9 +8967,6 @@ luxe
// luxury : 2013-10-17 Luxury Partners, LLC
luxury
// macys : 2015-07-31 Macys, Inc.
macys
// madrid : 2014-05-01 Comunidad de Madrid
madrid
@ -9282,7 +9285,7 @@ oracle
// orange : 2015-03-12 Orange Brand Services Limited
orange
// organic : 2014-03-27 Afilias Limited
// organic : 2014-03-27 Identity Digital Limited
organic
// origins : 2015-10-01 The Estée Lauder Companies Inc.
@ -9330,7 +9333,7 @@ pay
// pccw : 2015-05-14 PCCW Enterprises Limited
pccw
// pet : 2015-05-07 Afilias Limited
// pet : 2015-05-07 Identity Digital Limited
pet
// pfizer : 2015-09-11 Pfizer Inc.
@ -9378,7 +9381,7 @@ pin
// ping : 2015-06-11 Ping Registry Provider, Inc.
ping
// pink : 2013-10-01 Afilias Limited
// pink : 2013-10-01 Identity Digital Limited
pink
// pioneer : 2015-07-16 Pioneer Corporation
@ -9408,7 +9411,7 @@ pnc
// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
pohl
// poker : 2014-07-03 Afilias Limited
// poker : 2014-07-03 Identity Digital Limited
poker
// politie : 2015-08-20 Politie Nederland
@ -9441,13 +9444,13 @@ prof
// progressive : 2015-07-23 Progressive Casualty Insurance Company
progressive
// promo : 2014-12-18 Afilias Limited
// promo : 2014-12-18 Identity Digital Limited
promo
// properties : 2013-12-05 Binky Moon, LLC
properties
// property : 2014-05-22 UNR Corp.
// property : 2014-05-22 Internet Naming Company LLC
property
// protection : 2015-04-23 XYZ.COM LLC
@ -9465,7 +9468,7 @@ pub
// pwc : 2015-10-29 PricewaterhouseCoopers LLP
pwc
// qpon : 2013-11-14 dotCOOL, Inc.
// qpon : 2013-11-14 dotQPON LLC
qpon
// quebec : 2013-12-19 PointQuébec Inc
@ -9495,7 +9498,7 @@ realty
// recipes : 2013-10-17 Binky Moon, LLC
recipes
// red : 2013-11-07 Afilias Limited
// red : 2013-11-07 Identity Digital Limited
red
// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd.
@ -9711,9 +9714,6 @@ sener
// services : 2014-02-27 Binky Moon, LLC
services
// ses : 2015-07-23 SES
ses
// seven : 2015-08-06 Seven West Media Ltd
seven
@ -9723,7 +9723,7 @@ sew
// sex : 2014-11-13 ICM Registry SX LLC
sex
// sexy : 2013-09-11 UNR Corp.
// sexy : 2013-09-11 Internet Naming Company LLC
sexy
// 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
// shiksha : 2013-11-14 Afilias Limited
// shiksha : 2013-11-14 Identity Digital Limited
shiksha
// shoes : 2013-10-02 Binky Moon, LLC
@ -9777,7 +9777,7 @@ singles
// site : 2015-01-15 Radix FZC
site
// ski : 2015-04-09 Afilias Limited
// ski : 2015-04-09 Identity Digital Limited
ski
// skin : 2015-01-15 XYZ.COM LLC
@ -9798,7 +9798,7 @@ smart
// smile : 2014-12-18 Amazon Registry Services, Inc.
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
// soccer : 2015-03-26 Binky Moon, LLC
@ -10035,7 +10035,7 @@ toray
// toshiba : 2014-04-10 TOSHIBA Corporation
toshiba
// total : 2015-08-06 TOTAL SE
// total : 2015-08-06 TotalEnergies SE
total
// tours : 2015-01-22 Binky Moon, LLC
@ -10071,7 +10071,7 @@ travelers
// travelersinsurance : 2015-03-26 Travelers TLD, LLC
travelersinsurance
// trust : 2014-10-16 UNR Corp.
// trust : 2014-10-16 Internet Naming Company LLC
trust
// trv : 2015-03-26 Travelers TLD, LLC
@ -10218,7 +10218,7 @@ wanggou
// watch : 2013-11-14 Binky Moon, LLC
watch
// watches : 2014-12-22 Afilias Limited
// watches : 2014-12-22 Identity Digital Limited
watches
// weather : 2015-01-08 International Business Machines Corporation
@ -10353,7 +10353,7 @@ xin
// 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
@ -10470,9 +10470,6 @@ xin
// 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.
食品
@ -10660,6 +10657,14 @@ graphox.us
// Submitted by accesso Team <accessoecommerce@accesso.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/
// Submitted by Ian Boston <boston@adobe.com> and Lars Trieloff <trieloff@adobe.com>
adobeaemcloud.com
@ -10669,6 +10674,11 @@ adobeaemcloud.net
hlx.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
// Submitted by Przemyslaw Plewa <it-admin@domena.pl>
beep.pl
@ -10683,6 +10693,24 @@ airkitapps.eu
// Submitted by Etienne Stalmans <security@aiven.io>
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
// Submitted by Anton Avramov <avramov@alboto.ca>
barsy.ca
@ -10704,51 +10732,53 @@ altervista.org
// Submitted by Cyril <admin@alwaysdata.com>
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>
// Reference: 54144616-fd49-4435-8535-19c6a601bdb3
cloudfront.net
// Amazon Elastic Compute Cloud : https://aws.amazon.com/ec2/
// Amazon EC2
// Submitted by Luke Wells <psl-maintainers@amazon.com>
// Reference: 4c38fa71-58ac-4768-99e5-689c1767e537
*.compute.amazonaws.com
*.compute-1.amazonaws.com
*.compute.amazonaws.com.cn
us-east-1.amazonaws.com
// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/
// 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/
// Amazon S3
// 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-ap-northeast-1.amazonaws.com
s3-ap-northeast-2.amazonaws.com
@ -10763,48 +10793,25 @@ s3-eu-west-3.amazonaws.com
s3-external-1.amazonaws.com
s3-fips-us-gov-west-1.amazonaws.com
s3-sa-east-1.amazonaws.com
s3-us-gov-west-1.amazonaws.com
s3-us-east-2.amazonaws.com
s3-us-gov-west-1.amazonaws.com
s3-us-west-1.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-southeast-1.amazonaws.com
s3-website-ap-southeast-2.amazonaws.com
s3-website-eu-west-1.amazonaws.com
s3-website-sa-east-1.amazonaws.com
s3-website.ap-northeast-2.amazonaws.com
s3-website.ap-south-1.amazonaws.com
s3-website.ca-central-1.amazonaws.com
s3-website.eu-central-1.amazonaws.com
s3-website.eu-west-2.amazonaws.com
s3-website.eu-west-3.amazonaws.com
s3-website-us-east-1.amazonaws.com
s3-website-us-west-1.amazonaws.com
s3-website-us-west-2.amazonaws.com
s3.dualstack.sa-east-1.amazonaws.com
s3.dualstack.us-east-1.amazonaws.com
s3.dualstack.us-east-2.amazonaws.com
s3.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>
// Reference: 2b6dfa9a-3a7f-4367-b2e7-0321e77c0d59
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
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/
// Submitted by Team Amune <cert@amune.org>
t3l3p0rt.net
@ -10905,6 +10955,10 @@ cdn.prod.atlassian-dev.net
// Submitted by Lukas Reschke <lukas@authentick.net>
translated.page
// Autocode : https://autocode.com
// Submitted by Jacob Lee <jacob@autocode.com>
autocode.dev
// AVM : https://avm.de
// Submitted by Andreas Weise <a.weise@avm.de>
myfritz.net
@ -11033,6 +11087,11 @@ cafjs.com
// Submitted by Marcus Popp <admin@callidomus.com>
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
// Submitted by AJ <aj@carrd.co>
drr.ac
@ -11162,8 +11221,11 @@ cloudcontrolapp.com
// Cloudflare, Inc. : https://www.cloudflare.com/
// Submitted by Cloudflare Team <publicsuffixlist@cloudflare.com>
pages.dev
cf-ipfs.com
cloudflare-ipfs.com
trycloudflare.com
pages.dev
r2.dev
workers.dev
// Clovyr : https://clovyr.io
@ -11745,11 +11807,6 @@ e4.cz
easypanel.app
easypanel.host
// eero : https://eero.com/
// Submitted by Yue Kang <eero-dynamic-dns@amazon.com>
eero.online
eero-stage.online
// Elementor : Elementor Ltd.
// Submitted by Anton Barkan <antonb@elementor.com>
elementor.cloud
@ -11952,6 +12009,7 @@ u.channelsdvr.net
// Fastly Inc. : http://www.fastly.com/
// Submitted by Fastly Security <security@fastly.com>
edgecompute.app
fastly-edge.com
fastly-terrarium.com
fastlylb.net
map.fastlylb.net
@ -11963,6 +12021,10 @@ a.ssl.fastly.net
b.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/
// Submitted by Likhachev Vasiliy <lihachev@fastvps.ru>
fastvps-server.com
@ -12432,7 +12494,6 @@ herokussl.com
// Hibernating Rhinos
// Submitted by Oren Eini <oren@ravendb.net>
ravendb.cloud
myravendb.com
ravendb.community
ravendb.me
development.run
@ -12463,6 +12524,10 @@ ngo.ng
edu.scot
sch.so
// HostFly : https://www.ie.ua
// Submitted by Bohdan Dub <support@hostfly.com.ua>
ie.ua
// HostyHosting (hostyhosting.com)
hostyhosting.io
@ -12921,6 +12986,7 @@ cloudapp.net
azurestaticapps.net
1.azurestaticapps.net
2.azurestaticapps.net
3.azurestaticapps.net
centralus.azurestaticapps.net
eastasia.azurestaticapps.net
eastus2.azurestaticapps.net
@ -12973,25 +13039,6 @@ cust.retrosnub.co.uk
// Submitted by Paulus Schoutsen <infra@nabucasa.com>
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
// Submitted by Jan Jaeschke <jan.jaeschke@netatwork.de>
cloud.nospamproxy.com
@ -13006,7 +13053,19 @@ netlify.app
// ngrok : https://ngrok.com/
// Submitted by Alan Shreve <alan@ngrok.com>
ngrok.app
ngrok-free.app
ngrok.dev
ngrok-free.dev
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/
// Submitted by Nicholas Ford <nick@nimbushosting.co.uk>
@ -13188,7 +13247,26 @@ omniwe.site
// One.com: https://www.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
simplesite.com
simplesite.com.br
simplesite.gr
simplesite.pl
// One Fold Media : http://www.onefoldmedia.com/
// Submitted by Eddie Jones <eddie@onefoldmedia.com>
@ -13457,7 +13535,9 @@ app.render.com
onrender.com
// 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
id.repl.co
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/
// Submitted by Michael Biven <mbiven@salesforce.com>
*.builder.code.com
@ -13657,6 +13787,9 @@ vp4.me
// Snowflake Inc : https://www.snowflake.com/
// Submitted by Faith Olapade <faith.olapade@snowflake.com>
snowflake.app
privatelink.snowflake.app
streamlit.app
streamlitapp.com
// Snowplow Analytics : https://snowplowanalytics.com/
@ -13792,6 +13925,8 @@ direct.quickconnect.to
// Tabit Technologies Ltd. : https://tabit.cloud/
// Submitted by Oren Agiv <oren@tabit.cloud>
tabitorder.co.il
mytabit.co.il
mytabit.com
// TAIFUN Software AG : http://taifun-software.de
// Submitted by Bjoern Henke <dev-server@taifun-software.de>
@ -13824,10 +13959,6 @@ telebit.app
telebit.io
*.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/
// Submitted by Adrian Imboden <adi@thingdust.com>
*.firenet.ch
@ -13862,10 +13993,6 @@ pages.torproject.net
bloxcms.com
townnews-staging.com
// TradableBits: https://tradablebits.com
// Submitted by Dmitry Khrisanov dmitry@tradablebits.com
tbits.me
// TrafficPlex GmbH : https://www.trafficplex.de/
// Submitted by Phillipp Röll <phillipp.roell@trafficplex.de>
12hp.at
@ -13938,6 +14065,10 @@ hk.org
ltd.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/
// see also: whois -h whois.udr.org.yt help
// 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;
if (path && !*path) return;
if (!path) path = cast_uchar "";
#ifdef NO_FG_EXEC
fg = 0;
#endif
#ifdef HAVE_EXE_ON_BACKGROUND
if (*path) {
rs = exe_on_background(path, delet);
rs = exe_on_background(path, delet, fg);
if (!rs) return;
}
#endif
#ifdef NO_FG_EXEC
fg = 0;
#endif
if (term->master) {
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 "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 "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 "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);
@ -903,7 +904,8 @@ unsigned char *get_content_type_by_extension(unsigned char *url)
if ((extl == 3 && !casecmp(ext, cast_uchar "tif", 3)) ||
(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 "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;
add_to_str(&exxt, &el, cast_uchar "application/x-");
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");
if (!casestrcmp(ct, cast_uchar "image/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-")) {
x = ct + strlen("application/x-");
if (casestrcmp(x, cast_uchar "z") &&
@ -1328,4 +1332,3 @@ void free_types(void)
free_history(ext_search_history);
free_history(assoc_search_history);
}