Compare commits

..

2 commits

Author SHA1 Message Date
Juhani Krekelä
622a2d8cb9 Upstream Links 2.30 2024-08-26 19:03:41 +03:00
Juhani Krekelä
adc4c50290 Upstream Links 2.29 2023-04-06 20:18:18 +03:00
41 changed files with 9639 additions and 6915 deletions

8
.gitignore vendored
View file

@ -1,8 +0,0 @@
*.o
Makefile
config.cache
config.h
config.log
config.status
links
stamp-h

View file

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

View file

@ -1,3 +1,43 @@
=== RELEASE 2.30 ===
Sat Jul 27 18:41:39 CEST 2024 mikulas:
Disable asynchronous DNS on Windows because of some Cygwin bug
Sun Jul 21 19:58:03 CEST 2024 mikulas:
Fix the configure script to work with GCC 14
Sun Jul 21 17:22:30 CEST 2024 mikulas:
Fix window title on kwin
=== RELEASE 2.29 ===
Thu Mar 9 19:51:20 CET 2023 Florian Weimer <fweimer@redhat.com>:
Add "#define _GNU_SOURCE" to the configure test for memrchr
Thu Mar 9 18:37:12 CET 2023 Juhani Krekela <juhani@krekela.fi>:
Implement strike formatting
Wed Mar 8 20:08:01 CET 2023 mikulas:
Fixed a bug that image was sometimes displayed with too small size
Mon Jan 23 19:25:18 CET 2023 mikulas:
Fixed a bug that webp images from local disk could not be displayed
Mon Jan 23 19:24:06 CET 2023 notcancername <notcancername@protonmail.com>:
Support AVIF images
Sun Oct 9 15:54:06 CEST 2022 Jakub Bogusz <qboosh@pld-linux.org>:
Updated Polish Translation
=== RELEASE 2.28 === === RELEASE 2.28 ===
Sat Sep 17 21:54:44 CEST 2022 mikulas: Sat Sep 17 21:54:44 CEST 2022 mikulas:

View file

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

View file

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

View file

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

View file

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

105
avif.c Normal file
View file

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

1
bfu.c
View file

@ -536,6 +536,7 @@ static void menu_func(struct window *win, struct links_event *ev, int fwd)
int f = 1; int f = 1;
struct window *w1; struct window *w1;
struct list_head *w1l; struct list_head *w1l;
f = f + 0; /* avoid warning */
foreachfrom(struct window, w1, w1l, win->term->windows, &win->list_entry) { foreachfrom(struct window, w1, w1l, win->term->windows, &win->list_entry) {
struct menu *m1; struct menu *m1;
if (w1->handler == mainmenu_func) { if (w1->handler == mainmenu_func) {

View file

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

222
certs.inc

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

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

View file

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

1525
configure vendored

File diff suppressed because it is too large Load diff

View file

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

View file

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

22
html.c
View file

@ -1779,6 +1779,16 @@ static void html_button(unsigned char *a)
{ {
unsigned char *al; unsigned char *al;
struct form_control *fc; struct form_control *fc;
if ((al = get_attr_val(a, cast_uchar "class"))) { /* Wikipedia hack */
if (strstr(cast_const_char al, "vector-toc-toggle") || strstr(cast_const_char al, "vector-pinnable-header-toggle-button")) {
html_top.invisible = INVISIBLE;
mem_free(al);
return;
}
mem_free(al);
}
find_form_for_input(a); find_form_for_input(a);
fc = mem_calloc(sizeof(struct form_control)); fc = mem_calloc(sizeof(struct form_control));
if (!(al = get_attr_val(a, cast_uchar "type"))) { if (!(al = get_attr_val(a, cast_uchar "type"))) {
@ -3192,6 +3202,18 @@ do { \
format_.fontsize = list_struct(e->list_entry.next, struct html_element)->attr.fontsize; format_.fontsize = list_struct(e->list_entry.next, struct html_element)->attr.fontsize;
ln_break(lnb); ln_break(lnb);
while (e->list_entry.prev != &html_stack) kill_html_stack_item(list_struct(e->list_entry.prev, struct html_element)); while (e->list_entry.prev != &html_stack) kill_html_stack_item(list_struct(e->list_entry.prev, struct html_element));
if (e->namelen == 4 && !casecmp(e->name, cast_uchar "SPAN", 4)) { /* Wikipedia hack */
unsigned char *al;
if ((al = get_attr_val(e->options, cast_uchar "class"))) {
if (!strcmp(cast_const_char al, "vector-toc-numb"))
putsp = 1;
mem_free(al);
}
}
if (e->namelen == 2 && (!casecmp(e->name, cast_uchar "UL", 2) || !casecmp(e->name, cast_uchar "OL", 2))) { /* Wikipedia hack */
while (html < eof && WHITECHAR(*html))
html++;
}
kill_html_stack_item(e); kill_html_stack_item(e);
break; break;
} }

4
http.c
View file

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

35
img.c
View file

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

View file

@ -22,8 +22,8 @@ T_LINKS__LYNX_LIKE, "Links " VERSION_STRING "\n\nWWW browser",
T_VERSION, "Verze", T_VERSION, "Verze",
T_VERSION_INFORMATION, "Informace o verzi", T_VERSION_INFORMATION, "Informace o verzi",
T_LINKS_VERSION, "Verze Linksu", T_LINKS_VERSION, "Verze Linksu",
T_OPERATING_SYSTEM_TYPE, "Typ operaèního systému", T_OPERATING_SYSTEM_TYPE, "Typ systému",
T_OPERATING_SYSTEM_VERSION, "Verze operaèního systému", T_OPERATING_SYSTEM_VERSION, "Verze systému",
T_COMPILER, "Kompilátor", T_COMPILER, "Kompilátor",
T_WORD_SIZE, "Velikost slova", T_WORD_SIZE, "Velikost slova",
T_MEMORY, "Pamì»", T_MEMORY, "Pamì»",

View file

@ -22,8 +22,8 @@ T_LINKS__LYNX_LIKE, "Links " VERSION_STRING "\n\nText and graphics WWW browser",
T_VERSION, "Version", T_VERSION, "Version",
T_VERSION_INFORMATION, "Version information", T_VERSION_INFORMATION, "Version information",
T_LINKS_VERSION, "Links version", T_LINKS_VERSION, "Links version",
T_OPERATING_SYSTEM_TYPE, "Operating system type", T_OPERATING_SYSTEM_TYPE, "System type",
T_OPERATING_SYSTEM_VERSION, "Operating system version", T_OPERATING_SYSTEM_VERSION, "System version",
T_COMPILER, "Compiler", T_COMPILER, "Compiler",
T_WORD_SIZE, "Word size", T_WORD_SIZE, "Word size",
T_MEMORY, "Memory", T_MEMORY, "Memory",
@ -36,10 +36,10 @@ T_IPV6, "IPv6",
T_NOT_ENABLED_IN_SYSTEM, "Not enabled in system", T_NOT_ENABLED_IN_SYSTEM, "Not enabled in system",
T_LOCAL_NETWORK_ONLY, "Local network only", T_LOCAL_NETWORK_ONLY, "Local network only",
T_UTF8_TERMINAL, "UTF-8 terminal", T_UTF8_TERMINAL, "UTF-8 terminal",
T_COMPRESSION_METHODS, "Compression methods", T_COMPRESSION_METHODS, "Compression",
T_ENCRYPTION, "Encryption", T_ENCRYPTION, "Encryption",
T_NO_CERTIFICATE_VERIFICATION, "no certificate verification", T_NO_CERTIFICATE_VERIFICATION, "no certificate verification",
T_GPM_MOUSE_DRIVER, "GPM mouse driver", T_GPM_MOUSE_DRIVER, "Mouse driver",
T_XTERM_FOR_OS2, "Xterm for OS/2", T_XTERM_FOR_OS2, "Xterm for OS/2",
T_GRAPHICS_MODE, "Graphics mode", T_GRAPHICS_MODE, "Graphics mode",
T_IMAGE_LIBRARIES, "Image libraries", T_IMAGE_LIBRARIES, "Image libraries",
@ -51,7 +51,7 @@ T_DISABLED, "Disabled",
T_THREAD, "thread", T_THREAD, "thread",
T_THREADS, "threads", T_THREADS, "threads",
T_THREADS5, "threads", T_THREADS5, "threads",
T_CONFIGURATION_DIRECTORY, "Configuration directory", T_CONFIGURATION_DIRECTORY, "Home directory",
T_NONE, "None", T_NONE, "None",
T_KEYS, "Keys", T_KEYS, "Keys",
T_KEYS_DESC, "ESC display menu\n^C, q, Q quit\np, l scroll up, down\n[, ] scroll left, right\nup, down select link\nH, L select top/bottom link\n-> follow link\n<-, z go back\n', x go forward\nTAB switch frames\ng go to url\nG go to url based on current url\n^G go to url based on current link\n* toggle image displaying\n^W complete URL or search string\n^B,^X,^V,^K copy, cut, paste, cut line to/from clipboard\nAlt-1 .. Alt-9 switch virtual screens (svgalib and fb)", T_KEYS_DESC, "ESC display menu\n^C, q, Q quit\np, l scroll up, down\n[, ] scroll left, right\nup, down select link\nH, L select top/bottom link\n-> follow link\n<-, z go back\n', x go forward\nTAB switch frames\ng go to url\nG go to url based on current url\n^G go to url based on current link\n* toggle image displaying\n^W complete URL or search string\n^B,^X,^V,^K copy, cut, paste, cut line to/from clipboard\nAlt-1 .. Alt-9 switch virtual screens (svgalib and fb)",

View file

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

View file

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

View file

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

22
links.h
View file

@ -1049,7 +1049,7 @@ unsigned char *os_conv_to_external_path(unsigned char *, unsigned char *);
unsigned char *os_fixup_external_program(unsigned char *); unsigned char *os_fixup_external_program(unsigned char *);
int exe(unsigned char *, int); int exe(unsigned char *, int);
#ifdef WIN #ifdef WIN
int exe_on_background(unsigned char *, unsigned char *); int exe_on_background(unsigned char *, unsigned char *, int);
int windows_charset(void); int windows_charset(void);
#define HAVE_EXE_ON_BACKGROUND #define HAVE_EXE_ON_BACKGROUND
#endif #endif
@ -1300,8 +1300,9 @@ int defrag_entry(struct cache_entry *);
void truncate_entry(struct cache_entry *, off_t, int); void truncate_entry(struct cache_entry *, off_t, int);
void free_entry_to(struct cache_entry *, off_t); void free_entry_to(struct cache_entry *, off_t);
void delete_entry_content(struct cache_entry *); void delete_entry_content(struct cache_entry *);
void delete_cache_entry(struct cache_entry *e);
void trim_cache_entry(struct cache_entry *e); void trim_cache_entry(struct cache_entry *e);
void delete_cache_entry(struct cache_entry *e);
void finish_cache_entry(struct cache_entry *e);
/* sched.c */ /* sched.c */
@ -3171,6 +3172,10 @@ struct g_object_tag {
#define IM_WEBP 6 #define IM_WEBP 6
#endif /* #ifdef HAVE_WEBP */ #endif /* #ifdef HAVE_WEBP */
#ifdef HAVE_AVIF
#define IM_AVIF 7
#endif /* #ifdef HAVE_AVIF */
#define MEANING_DIMS 0 #define MEANING_DIMS 0
#define MEANING_AUTOSCALE 1 #define MEANING_AUTOSCALE 1
struct cached_image { struct cached_image {
@ -4383,6 +4388,19 @@ void add_webp_version(unsigned char **s, int *l);
#endif #endif
/* avif.c */
#if defined(G) && defined(HAVE_AVIF)
void avif_start(struct cached_image *cimg);
void avif_restart(struct cached_image *cimg, unsigned char *data, int length);
void avif_finish(struct cached_image *cimg);
void avif_destroy_decoder(struct cached_image *cimg);
void add_avif_version(unsigned char **s, int *l);
#endif
/* img.c */ /* img.c */
#ifdef G #ifdef G

View file

@ -75,19 +75,19 @@ File links.crt
File links.exe File links.exe
File links-g.exe File links-g.exe
File dll\cygwin1.dll File dll\cygwin1.dll
File c:\cygwin\bin\cygEGL-1.dll
File c:\cygwin\bin\cygGL-1.dll
File c:\cygwin\bin\cygX11-6.dll File c:\cygwin\bin\cygX11-6.dll
File c:\cygwin\bin\cygX11-xcb-1.dll
File c:\cygwin\bin\cygXau-6.dll File c:\cygwin\bin\cygXau-6.dll
File c:\cygwin\bin\cygXdmcp-6.dll File c:\cygwin\bin\cygXdmcp-6.dll
File c:\cygwin\bin\cygXext-6.dll File c:\cygwin\bin\cygXext-6.dll
File c:\cygwin\bin\cygXrender-1.dll File c:\cygwin\bin\cygXrender-1.dll
File c:\cygwin\bin\cygbrotlidec-1.dll
File c:\cygwin\bin\cygbrotlicommon-1.dll
File c:\cygwin\bin\cygbz2-1.dll File c:\cygwin\bin\cygbz2-1.dll
File c:\cygwin\bin\cygcairo-2.dll File c:\cygwin\bin\cygcairo-2.dll
File c:\cygwin\bin\cygcroco-0.6-3.dll File c:\cygwin\bin\cygcroco-0.6-3.dll
File c:\cygwin\bin\cygcrypto-1.1.dll File c:\cygwin\bin\cygcrypto-1.0.0.dll
File c:\cygwin\bin\cygdatrie-1.dll File c:\cygwin\bin\cygdatrie-1.dll
File c:\cygwin\bin\cygdeflate-0.dll
File c:\cygwin\bin\cygevent-2-0-5.dll File c:\cygwin\bin\cygevent-2-0-5.dll
File c:\cygwin\bin\cygexpat-1.dll File c:\cygwin\bin\cygexpat-1.dll
File c:\cygwin\bin\cygffi-6.dll File c:\cygwin\bin\cygffi-6.dll
@ -96,6 +96,7 @@ File c:\cygwin\bin\cygfreetype-6.dll
File c:\cygwin\bin\cyggcc_s-1.dll File c:\cygwin\bin\cyggcc_s-1.dll
File c:\cygwin\bin\cyggdk_pixbuf-2.0-0.dll File c:\cygwin\bin\cyggdk_pixbuf-2.0-0.dll
File c:\cygwin\bin\cyggio-2.0-0.dll File c:\cygwin\bin\cyggio-2.0-0.dll
File c:\cygwin\bin\cygglapi-0.dll
File c:\cygwin\bin\cygglib-2.0-0.dll File c:\cygwin\bin\cygglib-2.0-0.dll
File c:\cygwin\bin\cyggmodule-2.0-0.dll File c:\cygwin\bin\cyggmodule-2.0-0.dll
File c:\cygwin\bin\cyggobject-2.0-0.dll File c:\cygwin\bin\cyggobject-2.0-0.dll
@ -114,18 +115,16 @@ File c:\cygwin\bin\cygpcre-1.dll
File c:\cygwin\bin\cygpixman-1-0.dll File c:\cygwin\bin\cygpixman-1-0.dll
File c:\cygwin\bin\cygpng16-16.dll File c:\cygwin\bin\cygpng16-16.dll
File c:\cygwin\bin\cygrsvg-2-2.dll File c:\cygwin\bin\cygrsvg-2-2.dll
File c:\cygwin\bin\cygssl-1.1.dll File c:\cygwin\bin\cygssl-1.0.0.dll
File c:\cygwin\bin\cygstdc++-6.dll File c:\cygwin\bin\cygstdc++-6.dll
File c:\cygwin\bin\cygthai-0.dll File c:\cygwin\bin\cygthai-0.dll
File c:\cygwin\bin\cygtiff-6.dll File c:\cygwin\bin\cygtiff-6.dll
File c:\cygwin\bin\cyguuid-1.dll
File c:\cygwin\bin\cygwebp-7.dll
File c:\cygwin\bin\cygxcb-1.dll File c:\cygwin\bin\cygxcb-1.dll
File c:\cygwin\bin\cygxcb-glx-0.dll
File c:\cygwin\bin\cygxcb-render-0.dll File c:\cygwin\bin\cygxcb-render-0.dll
File c:\cygwin\bin\cygxcb-shm-0.dll File c:\cygwin\bin\cygxcb-shm-0.dll
File c:\cygwin\bin\cygxml2-2.dll File c:\cygwin\bin\cygxml2-2.dll
File c:\cygwin\bin\cygz.dll File c:\cygwin\bin\cygz.dll
File c:\cygwin\bin\cygzstd-1.dll
;Store installation folder ;Store installation folder
WriteRegStr HKCU "Software\Links" "" $INSTDIR WriteRegStr HKCU "Software\Links" "" $INSTDIR
@ -169,19 +168,20 @@ Delete "$INSTDIR\README"
Delete "$INSTDIR\links.crt" Delete "$INSTDIR\links.crt"
Delete "$INSTDIR\links.exe" Delete "$INSTDIR\links.exe"
Delete "$INSTDIR\links-g.exe" Delete "$INSTDIR\links-g.exe"
Delete "$INSTDIR\cygwin1.dll"
Delete "$INSTDIR\cygEGL-1.dll"
Delete "$INSTDIR\cygGL-1.dll"
Delete "$INSTDIR\cygX11-6.dll" Delete "$INSTDIR\cygX11-6.dll"
Delete "$INSTDIR\cygX11-xcb-1.dll"
Delete "$INSTDIR\cygXau-6.dll" Delete "$INSTDIR\cygXau-6.dll"
Delete "$INSTDIR\cygXdmcp-6.dll" Delete "$INSTDIR\cygXdmcp-6.dll"
Delete "$INSTDIR\cygXext-6.dll" Delete "$INSTDIR\cygXext-6.dll"
Delete "$INSTDIR\cygXrender-1.dll" Delete "$INSTDIR\cygXrender-1.dll"
Delete "$INSTDIR\cygbrotlicommon-1.dll"
Delete "$INSTDIR\cygbrotlidec-1.dll"
Delete "$INSTDIR\cygbz2-1.dll" Delete "$INSTDIR\cygbz2-1.dll"
Delete "$INSTDIR\cygcairo-2.dll" Delete "$INSTDIR\cygcairo-2.dll"
Delete "$INSTDIR\cygcroco-0.6-3.dll" Delete "$INSTDIR\cygcroco-0.6-3.dll"
Delete "$INSTDIR\cygcrypto-1.1.dll" Delete "$INSTDIR\cygcrypto-1.0.0.dll"
Delete "$INSTDIR\cygdatrie-1.dll" Delete "$INSTDIR\cygdatrie-1.dll"
Delete "$INSTDIR\cygdeflate-0.dll"
Delete "$INSTDIR\cygevent-2-0-5.dll" Delete "$INSTDIR\cygevent-2-0-5.dll"
Delete "$INSTDIR\cygexpat-1.dll" Delete "$INSTDIR\cygexpat-1.dll"
Delete "$INSTDIR\cygffi-6.dll" Delete "$INSTDIR\cygffi-6.dll"
@ -190,6 +190,7 @@ Delete "$INSTDIR\cygfreetype-6.dll"
Delete "$INSTDIR\cyggcc_s-1.dll" Delete "$INSTDIR\cyggcc_s-1.dll"
Delete "$INSTDIR\cyggdk_pixbuf-2.0-0.dll" Delete "$INSTDIR\cyggdk_pixbuf-2.0-0.dll"
Delete "$INSTDIR\cyggio-2.0-0.dll" Delete "$INSTDIR\cyggio-2.0-0.dll"
Delete "$INSTDIR\cygglapi-0.dll"
Delete "$INSTDIR\cygglib-2.0-0.dll" Delete "$INSTDIR\cygglib-2.0-0.dll"
Delete "$INSTDIR\cyggmodule-2.0-0.dll" Delete "$INSTDIR\cyggmodule-2.0-0.dll"
Delete "$INSTDIR\cyggobject-2.0-0.dll" Delete "$INSTDIR\cyggobject-2.0-0.dll"
@ -208,19 +209,16 @@ Delete "$INSTDIR\cygpcre-1.dll"
Delete "$INSTDIR\cygpixman-1-0.dll" Delete "$INSTDIR\cygpixman-1-0.dll"
Delete "$INSTDIR\cygpng16-16.dll" Delete "$INSTDIR\cygpng16-16.dll"
Delete "$INSTDIR\cygrsvg-2-2.dll" Delete "$INSTDIR\cygrsvg-2-2.dll"
Delete "$INSTDIR\cygssl-1.1.dll" Delete "$INSTDIR\cygssl-1.0.0.dll"
Delete "$INSTDIR\cygstdc++-6.dll" Delete "$INSTDIR\cygstdc++-6.dll"
Delete "$INSTDIR\cygthai-0.dll" Delete "$INSTDIR\cygthai-0.dll"
Delete "$INSTDIR\cygtiff-6.dll" Delete "$INSTDIR\cygtiff-6.dll"
Delete "$INSTDIR\cyguuid-1.dll"
Delete "$INSTDIR\cygwebp-7.dll"
Delete "$INSTDIR\cygwin1.dll"
Delete "$INSTDIR\cygxcb-1.dll" Delete "$INSTDIR\cygxcb-1.dll"
Delete "$INSTDIR\cygxcb-glx-0.dll"
Delete "$INSTDIR\cygxcb-render-0.dll" Delete "$INSTDIR\cygxcb-render-0.dll"
Delete "$INSTDIR\cygxcb-shm-0.dll" Delete "$INSTDIR\cygxcb-shm-0.dll"
Delete "$INSTDIR\cygxml2-2.dll" Delete "$INSTDIR\cygxml2-2.dll"
Delete "$INSTDIR\cygz.dll" Delete "$INSTDIR\cygz.dll"
Delete "$INSTDIR\cygzstd-1.dll"
Delete "$INSTDIR\.links\*" Delete "$INSTDIR\.links\*"
RMDir "$INSTDIR\.links" RMDir "$INSTDIR\.links"

View file

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

View file

@ -85,14 +85,15 @@ File c:\cygwin64\bin\cygbrotlicommon-1.dll
File c:\cygwin64\bin\cygbz2-1.dll File c:\cygwin64\bin\cygbz2-1.dll
File c:\cygwin64\bin\cygcairo-2.dll File c:\cygwin64\bin\cygcairo-2.dll
File c:\cygwin64\bin\cygcroco-0.6-3.dll File c:\cygwin64\bin\cygcroco-0.6-3.dll
File c:\cygwin64\bin\cygcrypto-1.1.dll File c:\cygwin64\bin\cygcrypto-3.dll
File c:\cygwin64\bin\cygdatrie-1.dll File c:\cygwin64\bin\cygdatrie-1.dll
File c:\cygwin64\bin\cygdeflate-0.dll File c:\cygwin64\bin\cygdeflate-0.dll
File c:\cygwin64\bin\cygexpat-1.dll File c:\cygwin64\bin\cygexpat-1.dll
File c:\cygwin64\bin\cygevent-2-0-5.dll File c:\cygwin64\bin\cygevent-2-1-7.dll
File c:\cygwin64\bin\cygffi-6.dll File c:\cygwin64\bin\cygffi-8.dll
File c:\cygwin64\bin\cygfontconfig-1.dll File c:\cygwin64\bin\cygfontconfig-1.dll
File c:\cygwin64\bin\cygfreetype-6.dll File c:\cygwin64\bin\cygfreetype-6.dll
File c:\cygwin64\bin\cygfribidi-0.dll
File c:\cygwin64\bin\cyggcc_s-seh-1.dll File c:\cygwin64\bin\cyggcc_s-seh-1.dll
File c:\cygwin64\bin\cyggdk_pixbuf-2.0-0.dll File c:\cygwin64\bin\cyggdk_pixbuf-2.0-0.dll
File c:\cygwin64\bin\cyggio-2.0-0.dll File c:\cygwin64\bin\cyggio-2.0-0.dll
@ -114,10 +115,11 @@ File c:\cygwin64\bin\cygpcre-1.dll
File c:\cygwin64\bin\cygpixman-1-0.dll File c:\cygwin64\bin\cygpixman-1-0.dll
File c:\cygwin64\bin\cygpng16-16.dll File c:\cygwin64\bin\cygpng16-16.dll
File c:\cygwin64\bin\cygrsvg-2-2.dll File c:\cygwin64\bin\cygrsvg-2-2.dll
File c:\cygwin64\bin\cygssl-1.1.dll File c:\cygwin64\bin\cygsharpyuv-0.dll
File c:\cygwin64\bin\cygssl-3.dll
File c:\cygwin64\bin\cygstdc++-6.dll File c:\cygwin64\bin\cygstdc++-6.dll
File c:\cygwin64\bin\cygthai-0.dll File c:\cygwin64\bin\cygthai-0.dll
File c:\cygwin64\bin\cygtiff-6.dll File c:\cygwin64\bin\cygtiff-7.dll
File c:\cygwin64\bin\cyguuid-1.dll File c:\cygwin64\bin\cyguuid-1.dll
File c:\cygwin64\bin\cygwebp-7.dll File c:\cygwin64\bin\cygwebp-7.dll
File c:\cygwin64\bin\cygxcb-1.dll File c:\cygwin64\bin\cygxcb-1.dll
@ -169,6 +171,7 @@ Delete "$INSTDIR\README"
Delete "$INSTDIR\links.crt" Delete "$INSTDIR\links.crt"
Delete "$INSTDIR\links.exe" Delete "$INSTDIR\links.exe"
Delete "$INSTDIR\links-g.exe" Delete "$INSTDIR\links-g.exe"
Delete "$INSTDIR\cygwin1.dll"
Delete "$INSTDIR\cygX11-6.dll" Delete "$INSTDIR\cygX11-6.dll"
Delete "$INSTDIR\cygXau-6.dll" Delete "$INSTDIR\cygXau-6.dll"
Delete "$INSTDIR\cygXdmcp-6.dll" Delete "$INSTDIR\cygXdmcp-6.dll"
@ -179,14 +182,15 @@ Delete "$INSTDIR\cygbrotlidec-1.dll"
Delete "$INSTDIR\cygbz2-1.dll" Delete "$INSTDIR\cygbz2-1.dll"
Delete "$INSTDIR\cygcairo-2.dll" Delete "$INSTDIR\cygcairo-2.dll"
Delete "$INSTDIR\cygcroco-0.6-3.dll" Delete "$INSTDIR\cygcroco-0.6-3.dll"
Delete "$INSTDIR\cygcrypto-1.1.dll" Delete "$INSTDIR\cygcrypto-3.dll"
Delete "$INSTDIR\cygdatrie-1.dll" Delete "$INSTDIR\cygdatrie-1.dll"
Delete "$INSTDIR\cygdeflate-0.dll" Delete "$INSTDIR\cygdeflate-0.dll"
Delete "$INSTDIR\cygevent-2-0-5.dll" Delete "$INSTDIR\cygevent-2-1-7.dll"
Delete "$INSTDIR\cygexpat-1.dll" Delete "$INSTDIR\cygexpat-1.dll"
Delete "$INSTDIR\cygffi-6.dll" Delete "$INSTDIR\cygffi-8.dll"
Delete "$INSTDIR\cygfontconfig-1.dll" Delete "$INSTDIR\cygfontconfig-1.dll"
Delete "$INSTDIR\cygfreetype-6.dll" Delete "$INSTDIR\cygfreetype-6.dll"
Delete "$INSTDIR\cygfribidi-0.dll"
Delete "$INSTDIR\cyggcc_s-seh-1.dll" Delete "$INSTDIR\cyggcc_s-seh-1.dll"
Delete "$INSTDIR\cyggdk_pixbuf-2.0-0.dll" Delete "$INSTDIR\cyggdk_pixbuf-2.0-0.dll"
Delete "$INSTDIR\cyggio-2.0-0.dll" Delete "$INSTDIR\cyggio-2.0-0.dll"
@ -208,13 +212,13 @@ Delete "$INSTDIR\cygpcre-1.dll"
Delete "$INSTDIR\cygpixman-1-0.dll" Delete "$INSTDIR\cygpixman-1-0.dll"
Delete "$INSTDIR\cygpng16-16.dll" Delete "$INSTDIR\cygpng16-16.dll"
Delete "$INSTDIR\cygrsvg-2-2.dll" Delete "$INSTDIR\cygrsvg-2-2.dll"
Delete "$INSTDIR\cygssl-1.1.dll" Delete "$INSTDIR\cygsharpyuv-0.dll"
Delete "$INSTDIR\cygssl-3.dll"
Delete "$INSTDIR\cygstdc++-6.dll" Delete "$INSTDIR\cygstdc++-6.dll"
Delete "$INSTDIR\cygthai-0.dll" Delete "$INSTDIR\cygthai-0.dll"
Delete "$INSTDIR\cygtiff-6.dll" Delete "$INSTDIR\cygtiff-7.dll"
Delete "$INSTDIR\cyguuid-1.dll" Delete "$INSTDIR\cyguuid-1.dll"
Delete "$INSTDIR\cygwebp-7.dll" Delete "$INSTDIR\cygwebp-7.dll"
Delete "$INSTDIR\cygwin1.dll"
Delete "$INSTDIR\cygxcb-1.dll" Delete "$INSTDIR\cygxcb-1.dll"
Delete "$INSTDIR\cygxcb-render-0.dll" Delete "$INSTDIR\cygxcb-render-0.dll"
Delete "$INSTDIR\cygxcb-shm-0.dll" Delete "$INSTDIR\cygxcb-shm-0.dll"

5
menu.c
View file

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

View file

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

View file

@ -90,7 +90,7 @@ static inline int dir_sep(unsigned char x) { return x == '/' || x == '\\'; }
static inline int dir_sep(unsigned char x) { return x == '/' || x == '\\'; } static inline int dir_sep(unsigned char x) { return x == '/' || x == '\\'; }
#define NEWLINE "\r\n" #define NEWLINE "\r\n"
/*#define NO_ASYNC_LOOKUP*/ #define NO_ASYNC_LOOKUP /* Cygwin 3.5.3 has some bug that async lookup doesn't work when started from a detached thread */
#define SYSTEM_ID SYS_WIN_32 #define SYSTEM_ID SYS_WIN_32
#define SYSTEM_NAME "Win32" #define SYSTEM_NAME "Win32"
#define DEFAULT_SHELL "cmd.exe" #define DEFAULT_SHELL "cmd.exe"

View file

@ -123,10 +123,14 @@ LC_ALL=
. .
/DELETE1/-1,/DELETE1/d /DELETE1/-1,/DELETE1/d
/DELETE2/-1,/DELETE2/d /DELETE2/-1,/DELETE2/d
,s/^main/int main/
,s/XtMalloc/'int XtMalloc'/
,s/foo()/int foo()/
w w
q q
EOS EOS
sed -i '/^#include <stdio.h>/a#include <stdlib.h>' configure
sed -i '/^#include <ctype.h>/a#include <stdlib.h>' configure
else else
exit exit
fi fi

View file

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

View file

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

View file

@ -85,7 +85,7 @@ void add_bytes_to_str(unsigned char **s, int *l, unsigned char *a, size_t ll)
(defined(__ARM_ARCH) && __ARM_ARCH < 5) || \ (defined(__ARM_ARCH) && __ARM_ARCH < 5) || \
(defined(__sparc__) && (!defined(__VIS__) || __VIS__ < 0x300)) ||\ (defined(__sparc__) && (!defined(__VIS__) || __VIS__ < 0x300)) ||\
defined(__hppa) || \ defined(__hppa) || \
defined(__riscv) || \ (defined(__riscv) && !defined(__riscv_zbb)) || \
defined(__sh__)) defined(__sh__))
if (!(sizeof(unsigned) & (sizeof(unsigned) - 1))) { if (!(sizeof(unsigned) & (sizeof(unsigned) - 1))) {
new_length = 2U << ((sizeof(unsigned) * 8 - 1) new_length = 2U << ((sizeof(unsigned) * 8 - 1)

1696
suffix.inc

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -969,6 +969,7 @@ static void redraw_screen(struct terminal *term)
int l = 0; int l = 0;
int print_next = 0; int print_next = 0;
struct term_spec *s; struct term_spec *s;
n_chars = n_chars + 0; /* avoid warning */
NO_GFX; NO_GFX;
if (!term->dirty || (term->master && is_blocked())) return; if (!term->dirty || (term->master && is_blocked())) return;
a = init_str(); a = init_str();
@ -1334,14 +1335,14 @@ void exec_on_terminal(struct terminal *term, unsigned char *path, unsigned char
int rs; int rs;
if (path && !*path) return; if (path && !*path) return;
if (!path) path = cast_uchar ""; if (!path) path = cast_uchar "";
#ifdef NO_FG_EXEC
fg = 0;
#endif
#ifdef HAVE_EXE_ON_BACKGROUND #ifdef HAVE_EXE_ON_BACKGROUND
if (*path) { if (*path) {
rs = exe_on_background(path, delet); rs = exe_on_background(path, delet, fg);
if (!rs) return; if (!rs) return;
} }
#endif
#ifdef NO_FG_EXEC
fg = 0;
#endif #endif
if (term->master) { if (term->master) {
if (!*path) { if (!*path) {

View file

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

115
x.c
View file

@ -217,13 +217,15 @@ static GC x_normal_gc = 0, x_copy_gc = 0, x_drawbitmap_gc = 0, x_scroll_gc = 0;
static long x_normal_gc_color; static long x_normal_gc_color;
static struct rect x_scroll_gc_rect; static struct rect x_scroll_gc_rect;
static Colormap x_default_colormap, x_colormap; static Colormap x_default_colormap, x_colormap;
static Atom x_delete_window_atom, x_wm_protocols_atom, x_sel_atom, x_targets_atom, x_utf8_string_atom; static Atom x_delete_window_atom, x_wm_protocols_atom, x_sel_atom, x_targets_atom, x_utf8_string_atom, x__net_supporting_wm_check, x__net_wm_name;
static Pixmap x_icon = 0; static Pixmap x_icon = 0;
#ifdef X_INPUT_METHOD #ifdef X_INPUT_METHOD
static XIM xim = NULL; static XIM xim = NULL;
#endif #endif
static int prefer_utf8_window_title;
extern struct graphics_driver x_driver; extern struct graphics_driver x_driver;
static unsigned char *x_driver_param = NULL; static unsigned char *x_driver_param = NULL;
@ -1526,6 +1528,49 @@ static void x_process_events(void *data)
#endif #endif
} }
static unsigned_char_p x_get_property_string(Window w, Atom prop, Atom type, Bool del)
{
unsigned_char_p buffer;
unsigned long pty_size, pty_items;
int pty_format, ret;
Atom pty_type;
/* Get size and type of property */
ret = XGetWindowProperty(
x_display,
w,
prop,
0,
0,
False,
AnyPropertyType,
&pty_type,
&pty_format,
&pty_items,
&pty_size,
&buffer);
/*debug("1: %d %d %d %ld %ld %p", ret, pty_type, pty_format, pty_items, pty_size, buffer);*/
if (ret != Success || !buffer) return NULL;
XFree(buffer);
ret = XGetWindowProperty(
x_display,
w,
prop,
0,
(long)pty_size,
del,
AnyPropertyType,
&pty_type,
&pty_format,
&pty_items,
&pty_size,
&buffer
);
/*debug("2: %d %d %d %ld %ld %p", ret, pty_type, pty_format, pty_items, pty_size, buffer);*/
if (ret != Success || !buffer) return NULL;
return buffer;
}
static void x_after_fork(void) static void x_after_fork(void)
{ {
@ -1814,10 +1859,35 @@ visual_found:
x_sel_atom = XInternAtom(x_display, "SEL_PROP", False); x_sel_atom = XInternAtom(x_display, "SEL_PROP", False);
x_targets_atom = XInternAtom(x_display, "TARGETS", False); x_targets_atom = XInternAtom(x_display, "TARGETS", False);
x_utf8_string_atom = XInternAtom(x_display, "UTF8_STRING", False); x_utf8_string_atom = XInternAtom(x_display, "UTF8_STRING", False);
x__net_supporting_wm_check = XInternAtom(x_display, "_NET_SUPPORTING_WM_CHECK", False);
x__net_wm_name = XInternAtom(x_display, "_NET_WM_NAME", False);
if (x_have_palette) win_attr.colormap = x_colormap; if (x_have_palette) win_attr.colormap = x_colormap;
else win_attr.colormap = x_default_colormap; else win_attr.colormap = x_default_colormap;
prefer_utf8_window_title = 0;
#if defined(HAVE_XSUPPORTSLOCALE) && defined(HAVE_XMBTEXTLISTTOTEXTPROPERTY) && X_HAVE_UTF8_STRING
{
unsigned_char_p buffer;
Window win;
buffer = x_get_property_string(x_root_window, x__net_supporting_wm_check, XA_WINDOW, False);
if (!buffer)
goto skip_wm_name;
win = *(Window *)buffer;
XFree(buffer);
x_prepare_for_failure(X_GetProperty);
buffer = x_get_property_string(win, x__net_wm_name, AnyPropertyType, False);
if (x_test_for_failure())
goto skip_wm_name;
if (!buffer)
goto skip_wm_name;
if (!strcasecmp(cast_const_char buffer, "kwin"))
prefer_utf8_window_title = 1;
XFree(buffer);
}
skip_wm_name:
#endif
fake_window = XCreateWindow( fake_window = XCreateWindow(
x_display, x_display,
x_root_window, x_root_window,
@ -2751,7 +2821,7 @@ retry_encode_ascii:
if (XSupportsLocale()) { if (XSupportsLocale()) {
ret = XmbTextListToTextProperty(x_display, &xx_str, 1, XStdICCTextStyle, &windowName); ret = XmbTextListToTextProperty(x_display, &xx_str, 1, XStdICCTextStyle, &windowName);
#ifdef X_HAVE_UTF8_STRING #ifdef X_HAVE_UTF8_STRING
if (ret > 0) { if (ret > 0 || (!ret && prefer_utf8_window_title)) {
XFree(windowName.value); XFree(windowName.value);
ret = XmbTextListToTextProperty(x_display, &xx_str, 1, XUTF8StringStyle, &windowName); ret = XmbTextListToTextProperty(x_display, &xx_str, 1, XUTF8StringStyle, &windowName);
if (ret < 0) { if (ret < 0) {
@ -2916,48 +2986,13 @@ static unsigned char *x_get_clipboard_text(void)
} }
if (event.xselection.property) { if (event.xselection.property) {
unsigned_char_p buffer; unsigned_char_p buffer;
unsigned long pty_size, pty_items;
int pty_format, ret;
Atom pty_type;
if (event.xselection.target != type_atom) goto no_new_sel; if (event.xselection.target != type_atom) goto no_new_sel;
if (event.xselection.property != x_sel_atom) goto no_new_sel; if (event.xselection.property != x_sel_atom) goto no_new_sel;
buffer = x_get_property_string(fake_window, event.xselection.property, True, AnyPropertyType);
/* Get size and type of property */ if (!buffer)
ret = XGetWindowProperty( goto no_new_sel;
x_display,
fake_window,
event.xselection.property,
0,
0,
False,
AnyPropertyType,
&pty_type,
&pty_format,
&pty_items,
&pty_size,
&buffer);
if (ret != Success) goto no_new_sel;
XFree(buffer);
ret = XGetWindowProperty(
x_display,
fake_window,
event.xselection.property,
0,
(long)pty_size,
True,
AnyPropertyType,
&pty_type,
&pty_format,
&pty_items,
&pty_size,
&buffer
);
if (ret != Success) goto no_new_sel;
pty_size = (pty_format>>3) * pty_items;
x_clear_clipboard(); x_clear_clipboard();
if (type_atom == x_utf8_string_atom) { if (type_atom == x_utf8_string_atom) {