Compare commits

...

7 Commits

Author SHA1 Message Date
Juhani Krekelä f35eb9357a Add sortix.c to the build system 2024-01-22 02:11:55 +02:00
Juhani Krekelä 81bac29127 Add .gitignore 2024-01-22 02:08:14 +02:00
Juhani Krekelä cb75256439 Sortix patches 2024-01-22 02:04:58 +02:00
Juhani Krekelä adc4c50290 Upstream Links 2.29 2023-04-06 20:18:18 +03:00
Juhani Krekelä c5df2f9b41 Upstream Links 2.28 2023-01-11 02:17:30 +02:00
Juhani Krekelä 991c30eae1 Upstream Links 2.27 2022-06-06 16:14:24 +03:00
Juhani Krekelä 062136efb3 Upstream Links 2.26 2022-06-06 16:08:05 +03:00
96 changed files with 5413 additions and 2497 deletions

8
.gitignore vendored Normal file
View File

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

19
AUTHORS
View File

@ -389,3 +389,22 @@ pluvano <me@pluvano.com>
Ing. Daniel G. Gionco <dggionco@hotmail.com>
Updated the Spanish translation
Timur Adamov <nbvec222@gmail.com>
Handle the "TD" tag outside "TR" the same way as in other browsers
zinov@waifu.club:
Fix a bug when form submit url contained '#'
Martin Michel <martin.famic.de>:
Updated the German translation
Updated the initial bookmarks
notcancername <notcancername@protonmail.com>
Support AVIF images
Juhani Krekela <juhani@krekela.fi>
Implement strike formatting
Florian Weimer <fweimer@redhat.com>
Add "#define _GNU_SOURCE" to the configure test for memrchr

106
ChangeLog
View File

@ -1,3 +1,109 @@
=== RELEASE 2.29 ===
Thu Mar 9 19:51:20 CET 2023 Florian Weimer <fweimer@redhat.com>:
Add "#define _GNU_SOURCE" to the configure test for memrchr
Thu Mar 9 18:37:12 CET 2023 Juhani Krekela <juhani@krekela.fi>:
Implement strike formatting
Wed Mar 8 20:08:01 CET 2023 mikulas:
Fixed a bug that image was sometimes displayed with too small size
Mon Jan 23 19:25:18 CET 2023 mikulas:
Fixed a bug that webp images from local disk could not be displayed
Mon Jan 23 19:24:06 CET 2023 notcancername <notcancername@protonmail.com>:
Support AVIF images
Sun Oct 9 15:54:06 CEST 2022 Jakub Bogusz <qboosh@pld-linux.org>:
Updated Polish Translation
=== RELEASE 2.28 ===
Sat Sep 17 21:54:44 CEST 2022 mikulas:
Disable cache when following redirects from consent.google.com
Sat Sep 10 16:05:02 CEST 2022 mikulas:
On Windows, change the default directory to the "Downloads" directory,
so that downloaded files are placed there
Sat Sep 10 15:31:20 CEST 2022 mikulas:
Compile the 32-bit Windows version without SSE2 instructions
Tue May 31 21:07:51 CEST 2022 mikulas:
Fix a display glitch on framebuffer, if the user doesn't have mouse and
if he presses F5, F6, F7 or F8
=== RELEASE 2.27 ===
Fri May 27 20:10:59 CEST 2022 mikulas:
Compile the Windows version with libevent 2.0 (note that libevent 2.1
doesn't work on Windows 7)
This fixes "Fatal error: too big handle" because Cygwin has too low
FD_SETSIZE (64)
Wed Apr 13 19:43:10 CEST 2022 Emir Yasin SARI <bitigchi@me.com>:
Updated the Turkish translation
Mon Apr 11 19:23:19 CEST 2022 mikulas:
Allow the user to specify a numeric IPv6 address in the dns-over-https
box
=== RELEASE 2.26 ===
Wed Apr 6 18:13:16 CEST 2022 mikulas:
Fix a display glitch if the list is empty and the user presses '*'
Sat Mar 26 11:09:12 CET 2022 mikulas:
Add a possibility to pass gopher:// URLs to an external program
Sat Jan 1 14:46:06 CET 2022 Martin Michel <martin.famic.de>:
Updated the German translation
Updated the initial bookmarks
Fri Dec 24 12:47:58 CET 2021 zinov@waifu.club:
Fix a bug when form submit url contained '#'
Sun Dec 5 18:17:11 CET 2021 mikulas:
Support WEBP images
Fri Dec 3 17:40:55 CET 2021 mikulas:
Support DNS-over-HTTPS
Sun Nov 21 11:36:45 CET 2021 mikulas:
Try multiple IPv4 addresses on systems that don't have getaddrinfo
Sun Nov 14 20:55:11 CET 2021 Timur Adamov <nbvec222@gmail.com>:
Handle the "TD" tag outside "TR" the same way as in other browsers
Tue Oct 19 18:42:50 CEST 2021 mikulas:
Make it possible to bind a socket to a network interface
It could be activated by specifying interface name in the "Bind to local
IP address" box
=== RELEASE 2.25 ===
Fri Oct 1 18:27:25 CEST 2021 mikulas:

View File

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

View File

@ -24,7 +24,7 @@ if JAVASCRIPT
links_LDADD=builtin.o context.o ipret.o javascr.o javascript.o md5.o md5hl.o ns.o pomocny.o regexp.o
endif
links_SOURCES=af_unix.c auth.c beos.c bfu.c block.c bookmark.c cache.c charsets.c compress.c connect.c cookies.c data.c default.c dip.c directfb.c dither.c dns.c 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 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 sortix.c string.c suffix.c svg.c svgalib.c terminal.c tiff.c types.c url.c view.c view_gr.c vms.c webp.c x.c xbm.c beos.h bits.h cfg.h codepage.h com-defs.h config-vms.h dfb_cur.h hpux.h language.h links.h os_dep.h os_depx.h setup.h arrow.inc certs.inc codepage.inc entity.inc fbcommon.inc language.inc links_ic.inc locase.inc suffix.inc suffix_x.inc uni_7b.inc upcase.inc vpipe.inc
# builtin.c context.c ipret.c javascr.c javascript.c md5.c md5hl.c ns.c pomocny.c regexp.c md5.h ns.h struct.h tree.h typy.h ipret.h javascript.h builtin.h builtin_keys.h
dist-hook:
@ -45,4 +45,3 @@ haiku.o: $(srcdir)/haiku.cpp
datadir = $(prefix)/@DATADIRNAME@
LIBS = @LIBS@

View File

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

View File

@ -229,6 +229,9 @@
/* */
#undef GRDRV_GRX
/* */
#undef GRDRV_SORTIX
/* Have freetype */
#undef HAVE_FREETYPE
@ -241,5 +244,11 @@
/* SVG */
#undef HAVE_SVG
/* WebP */
#undef HAVE_WEBP
/* AVIF */
#undef HAVE_AVIF
/* Gpm_Event has wdx and wdy */
#undef HAVE_WDX_WDY

105
avif.c Normal file
View File

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

9
bfu.c
View File

@ -1666,15 +1666,6 @@ static int check_local_ip_address_internal(struct dialog_data *dlg, struct dialo
if (!*p) {
return 0;
}
#ifdef SUPPORT_IPV6
if (pf == PF_INET6) rs = numeric_ipv6_address(p, NULL, NULL);
else
#endif
rs = numeric_ip_address(p, NULL);
if (rs) {
msg_box(dlg->win->term, NULL, TEXT_(T_BAD_IP_ADDRESS), AL_CENTER, TEXT_(T_INVALID_IP_ADDRESS_SYNTAX), MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
return 1;
}
s = socket_and_bind(pf, p);
if (s != -1) {
EINTRLOOP(rs, close(s));

View File

@ -512,12 +512,12 @@ static void create_initial_bookmarks(void)
{
add_bookmark(cast_uchar "Links", NULL, 0);
add_bookmark(cast_uchar "English", NULL, 1);
add_bookmark(cast_uchar "Calibration Procedure", cast_uchar "http://atrey.karlin.mff.cuni.cz/~clock/twibright/links/calibration.html", 2);
add_bookmark(cast_uchar "Links Homepage", cast_uchar "http://atrey.karlin.mff.cuni.cz/~clock/twibright/links/", 2);
add_bookmark(cast_uchar "Calibration Procedure", cast_uchar "http://links.twibright.com/calibration.html", 2);
add_bookmark(cast_uchar "Links Homepage", cast_uchar "http://links.twibright.com/", 2);
add_bookmark(cast_uchar "Links Manual", cast_uchar "http://links.twibright.com/user_en.html", 2);
add_bookmark(cast_uchar "Cesky", NULL, 1);
add_bookmark(cast_uchar "Kalibracni procedura", cast_uchar "http://atrey.karlin.mff.cuni.cz/~clock/twibright/links/kalibrace.html", 2);
add_bookmark(cast_uchar "Links: domaci stranka", cast_uchar "http://atrey.karlin.mff.cuni.cz/~clock/twibright/links/index_cz.html", 2);
add_bookmark(cast_uchar "Kalibracni procedura", cast_uchar "http://links.twibright.com/kalibrace.html", 2);
add_bookmark(cast_uchar "Links: domaci stranka", cast_uchar "http://links.twibright.com/index_cz.php", 2);
add_bookmark(cast_uchar "Manual k Linksu", cast_uchar "http://links.twibright.com/user.html", 2);
}

View File

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

View File

@ -126,6 +126,15 @@
/* Define if you have the SSL_set_security_level function. */
/* #undef HAVE_SSL_SET_SECURITY_LEVEL */
/* Define if you have the WebPDecodeRGBA function. */
/* #undef HAVE_WEBPDECODERGBA */
/* Define if you have the WebPFree function. */
/* #undef HAVE_WEBPFREE */
/* Define if you have the X509_VERIFY_PARAM_set_flags function. */
/* #undef HAVE_X509_VERIFY_PARAM_SET_FLAGS */
/* Define if you have the X509_check_host function. */
/* #undef HAVE_X509_CHECK_HOST */
@ -549,6 +558,9 @@
/* Define if you have the <atheos/threads.h> header file. */
/* #undef HAVE_ATHEOS_THREADS_H */
/* Define if you have the <avif/avif.h> header file. */
/* #undef HAVE_AVIF_AVIF_H */
/* Define if you have the <brotli/decode.h> header file. */
/* #undef HAVE_BROTLI_DECODE_H */
@ -798,6 +810,9 @@
/* Define if you have the <values.h> header file. */
/* #undef HAVE_VALUES_H */
/* Define if you have the <webp/decode.h> header file. */
/* #undef HAVE_WEBP_DECODE_H */
/* Define if you have the <windowsx.h> header file. */
/* #undef HAVE_WINDOWSX_H */
@ -816,6 +831,9 @@
/* Define if you have the atheos library (-latheos). */
/* #undef HAVE_LIBATHEOS */
/* Define if you have the avif library (-lavif). */
/* #undef HAVE_LIBAVIF */
/* Define if you have the be library (-lbe). */
/* #undef HAVE_LIBBE */
@ -897,6 +915,9 @@
/* Define if you have the watt library (-lwatt). */
/* #undef HAVE_LIBWATT */
/* Define if you have the webp library (-lwebp). */
/* #undef HAVE_LIBWEBP */
/* Define if you have the x86 library (-lx86). */
/* #undef HAVE_LIBX86 */
@ -919,11 +940,11 @@
#define PACKAGE "links"
/* Version number of package */
#define VERSION "2.25"
#define VERSION "2.29"
/* */
#define VERSION "2.25"
#define VERSION "2.29"
/* */
/* #undef HAVE_OPENMP */
@ -1156,5 +1177,11 @@
/* SVG */
/* #undef HAVE_SVG */
/* WebP */
/* #undef HAVE_WEBP */
/* AVIF */
/* #undef HAVE_AVIF */
/* Gpm_Event has wdx and wdy */
/* #undef HAVE_WDX_WDY */

View File

@ -125,6 +125,15 @@
/* Define if you have the SSL_set_security_level function. */
#undef HAVE_SSL_SET_SECURITY_LEVEL
/* Define if you have the WebPDecodeRGBA function. */
#undef HAVE_WEBPDECODERGBA
/* Define if you have the WebPFree function. */
#undef HAVE_WEBPFREE
/* Define if you have the X509_VERIFY_PARAM_set_flags function. */
#undef HAVE_X509_VERIFY_PARAM_SET_FLAGS
/* Define if you have the X509_check_host function. */
#undef HAVE_X509_CHECK_HOST
@ -215,6 +224,9 @@
/* Define if you have the dirfd function. */
#undef HAVE_DIRFD
/* Define if you have the <display.h> header file. */
#undef HAVE_DISPLAY_H
/* Define if you have the event_base_free function. */
#undef HAVE_EVENT_BASE_FREE
@ -563,6 +575,9 @@
/* Define if you have the <atheos/threads.h> header file. */
#undef HAVE_ATHEOS_THREADS_H
/* Define if you have the <avif/avif.h> header file. */
#undef HAVE_AVIF_AVIF_H
/* Define if you have the <brotli/decode.h> header file. */
#undef HAVE_BROTLI_DECODE_H
@ -596,6 +611,9 @@
/* Define if you have the <fontconfig/fontconfig.h> header file. */
#undef HAVE_FONTCONFIG_FONTCONFIG_H
/* Define if you have the <framebuffer.h> header file. */
#undef HAVE_FRAMEBUFFER_H
/* Define if you have the <ft2build.h> header file. */
#undef HAVE_FT2BUILD_H
@ -764,6 +782,9 @@
/* Define if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
/* Define if you have the <sys/keycodes.h> header file. */
#undef HAVE_SYS_KEYCODES_H
/* Define if you have the <sys/mman.h> header file. */
#undef HAVE_SYS_MMAN_H
@ -818,6 +839,9 @@
/* Define if you have the <values.h> header file. */
#undef HAVE_VALUES_H
/* Define if you have the <webp/decode.h> header file. */
#undef HAVE_WEBP_DECODE_H
/* Define if you have the <windowsx.h> header file. */
#undef HAVE_WINDOWSX_H
@ -836,6 +860,9 @@
/* Define if you have the atheos library (-latheos). */
#undef HAVE_LIBATHEOS
/* Define if you have the avif library (-lavif). */
#undef HAVE_LIBAVIF
/* Define if you have the be library (-lbe). */
#undef HAVE_LIBBE
@ -848,6 +875,9 @@
/* Define if you have the bz2 library (-lbz2). */
#undef HAVE_LIBBZ2
/* Define if you have the display library (-ldisplay). */
#undef HAVE_LIBDISPLAY
/* Define if you have the dl library (-ldl). */
#undef HAVE_LIBDL
@ -920,6 +950,9 @@
/* Define if you have the watt library (-lwatt). */
#undef HAVE_LIBWATT
/* Define if you have the webp library (-lwebp). */
#undef HAVE_LIBWEBP
/* Define if you have the x86 library (-lx86). */
#undef HAVE_LIBX86
@ -1173,6 +1206,9 @@
/* */
#undef GRDRV_GRX
/* */
#undef GRDRV_SORTIX
/* Have freetype */
#undef HAVE_FREETYPE
@ -1185,5 +1221,11 @@
/* SVG */
#undef HAVE_SVG
/* WebP */
#undef HAVE_WEBP
/* AVIF */
#undef HAVE_AVIF
/* Gpm_Event has wdx and wdy */
#undef HAVE_WDX_WDY

1958
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@
AC_INIT(main.c)
AM_INIT_AUTOMAKE(links, 2.25)
AM_INIT_AUTOMAKE(links, 2.29)
ACLOCAL="./missing aclocal"
AUTOCONF="./missing autoconf"
@ -410,7 +410,8 @@ fi
AC_HAVE_FUNCS(memrchr)
AC_CACHE_CHECK([for memrchr], ac_cv_have_memrchr,
AC_TRY_LINK([#include <string.h>], [char * volatile str = ""; volatile int l = 1; return !!memrchr(str, 0, l);], ac_cv_have_memrchr=yes, ac_cv_have_memrchr=no)
AC_TRY_LINK([#define _GNU_SOURCE
#include <string.h>], [char * volatile str = ""; volatile int l = 1; return !!memrchr(str, 0, l);], ac_cv_have_memrchr=yes, ac_cv_have_memrchr=no)
)
if test "$ac_cv_have_memrchr" = yes; then
AC_DEFINE(HAVE_MEMRCHR)
@ -910,7 +911,7 @@ if test -z "$disable_ssl"; then
if test "$cf_result" = nss; then
AC_DEFINE(HAVE_NSS)
fi
AC_HAVE_FUNCS(ASN1_STRING_get0_data ASN1_STRING_to_UTF8 OPENSSL_cleanup OPENSSL_init_ssl RAND_add RAND_egd RAND_file_name RAND_load_file RAND_write_file SSL_SESSION_is_resumable SSL_get0_verified_chain SSL_get1_peer_certificate SSL_get1_session SSL_load_error_strings SSL_set_security_level X509_check_host X509_check_ip)
AC_HAVE_FUNCS(ASN1_STRING_get0_data ASN1_STRING_to_UTF8 OPENSSL_cleanup OPENSSL_init_ssl RAND_add RAND_egd RAND_file_name RAND_load_file RAND_write_file SSL_SESSION_is_resumable SSL_get0_verified_chain SSL_get1_peer_certificate SSL_get1_session SSL_load_error_strings SSL_set_security_level X509_VERIFY_PARAM_set_flags X509_check_host X509_check_ip)
AC_CACHE_CHECK([for CRYPTO_set_mem_functions without file/line], ac_cv_have_crypto_set_mem_functions_1,
AC_TRY_LINK([#include <openssl/crypto.h>
static int csmf(void *(*m)(size_t), void *(*r)(void *, size_t), void (*f)(void *)) { return 0; }
@ -1049,6 +1050,7 @@ AC_ARG_WITH(windows, [ --without-windows compile without Windows graphics
AC_ARG_WITH(atheos, [ --without-atheos compile without Atheos graphics driver],[if test "$withval" = no; then disable_atheos=yes; else disable_atheos=no; fi])
AC_ARG_WITH(haiku, [ --without-haiku compile without Haiku graphics driver],[if test "$withval" = no; then disable_haiku=yes; else disable_haiku=no; fi])
AC_ARG_WITH(grx, [ --without-grx compile without DOS GRX graphics driver],[if test "$withval" = no; then disable_grx=yes; else disable_grx=no; fi])
AC_ARG_WITH(sortix, [ --without-sortix compile without Sortix display(1) graphics driver],[if test "$withval" = no; then disable_sortix=yes; else disable_sortix=no; fi])
drivers=""
@ -1311,6 +1313,18 @@ if test "$disable_grx" != yes -a "$ac_cv_have_djgpp" = yes; then
fi
fi
if test "$disable_sortix" != yes; then
AC_CHECK_HEADERS(display.h framebuffer.h sys/keycodes.h)
AC_CHECK_LIB(display, display_connect_default)
if test "$ac_cv_header_display_h" = yes &&
test "$ac_cv_header_framebuffer_h" = yes &&
test "$ac_cv_header_sys_keycodes_h" = yes &&
test "$ac_cv_lib_display_display_connect_default" = yes; then
AC_DEFINE(GRDRV_SORTIX)
drivers="$drivers sortix"
fi
fi
AC_ARG_WITH(freetype, [ --without-freetype compile without freetype support],[if test "$withval" = no; then disable_freetype=yes; else disable_freetype=no; fi])
font_rendering=INTERNAL
@ -1441,11 +1455,12 @@ fi
fi
AC_CHECK_HEADERS(cairo.h librsvg/rsvg.h librsvg/rsvg-cairo.h librsvg/librsvg-features.h)
AC_HAVE_FUNCS(rsvg_handle_render_cairo rsvg_handle_read_stream_sync)
AC_HAVE_FUNCS(rsvg_handle_render_cairo)
if test "$ac_cv_func_rsvg_handle_render_cairo" != yes; then
AC_CHECK_LIB(rsvg-2, rsvg_handle_render_cairo)
fi
if test "$ac_cv_header_cairo_h" = yes -a "$ac_cv_header_librsvg_rsvg_h" = yes && test "$ac_cv_func_rsvg_handle_render_cairo" = yes -o "$ac_cv_lib_rsvg_2_rsvg_handle_render_cairo" = yes; then
AC_HAVE_FUNCS(rsvg_handle_read_stream_sync)
AC_DEFINE(HAVE_SVG)
cf_have_svg=yes
image_formats="$image_formats SVG"
@ -1455,6 +1470,51 @@ fi
fi
fi
AC_ARG_WITH(libwebp, [ --without-libwebp compile without WEBP support],[if test "$withval" = no; then disable_webp=yes; else disable_webp=no; fi])
cf_have_webp=no
if test "$disable_webp" != yes; then
CPPFLAGS_X="$CPPFLAGS"
LIBS_X="$LIBS"
AC_ARG_ENABLE(webp-pkgconfig, [ --disable-webp-pkgconfig don't use pkgconfig when searching for librwebp], cf_libwebp_pkgconfig="$enableval", cf_libwebp_pkgconfig=yes)
if test "$cf_libwebp_pkgconfig" != no; then
PKG_CHECK_MODULES(LIBWEBP, libwebp, pkgconfig_libwebp=yes, pkgconfig_libwebp=no)
if test "$PKG_CONFIG" != no -a "$pkgconfig_libwebp" = no; then
AC_MSG_RESULT(no)
fi
if test "$pkgconfig_libwebp" = "yes"; then
CPPFLAGS="$CPPFLAGS $LIBWEBP_CFLAGS"
LIBS="$LIBWEBP_LIBS $LIBS"
fi
fi
AC_CHECK_HEADERS(webp/decode.h)
AC_HAVE_FUNCS(WebPDecodeRGBA)
if test "$ac_cv_func_WebPDecodeRGBA" != yes; then
AC_CHECK_LIB(webp, WebPDecodeRGBA)
fi
if test "$ac_cv_header_webp_decode_h" = yes && test "$ac_cv_func_WebPDecodeRGBA" = yes -o "$ac_cv_lib_webp_WebPDecodeRGBA" = yes; then
AC_HAVE_FUNCS(WebPFree)
AC_DEFINE(HAVE_WEBP)
cf_have_webp=yes
image_formats="$image_formats WEBP"
else
CPPFLAGS="$CPPFLAGS_X"
LIBS="$LIBS_X"
fi
fi
AC_ARG_WITH(libavif, [ --without-libavif compile without AVIF support],[if test "$withval" = no; then disable_avif=yes; else disable_avif=no; fi])
cf_have_avif=no
if test "$disable_avif" != yes; then
AC_CHECK_HEADERS(avif/avif.h)
AC_CHECK_LIB(avif, avifDecoderSetIOMemory)
if test "$ac_cv_header_avif_avif_h" = yes && test "$ac_cv_lib_avif_avifDecoderSetIOMemory" = yes; then
AC_DEFINE(HAVE_AVIF)
cf_have_avif=yes
image_formats="$image_formats AVIF"
fi
fi
if test -z "$drivers" && test "$cf_use_graphics" != no; then
AC_MSG_ERROR([No graphics drivers found.])
@ -1544,4 +1604,3 @@ fi
dnl mv Makefile Makefile.tmp
dnl grep -v DEPS_MAGIC Makefile.tmp >Makefile
dnl rm Makefile.tmp

View File

@ -110,9 +110,7 @@ int socket_and_bind(int pf, unsigned char *address)
struct sockaddr_in sa;
unsigned char addr[4];
if (numeric_ip_address(address, addr) == -1) {
EINTRLOOP(rs, close(s));
errno = EINVAL;
return -1;
goto bind_to_iface;
}
memset(&sa, 0, sizeof sa);
sa.sin_family = AF_INET;
@ -133,9 +131,7 @@ int socket_and_bind(int pf, unsigned char *address)
unsigned char addr[16];
unsigned scope;
if (numeric_ipv6_address(address, addr, &scope) == -1) {
EINTRLOOP(rs, close(s));
errno = EINVAL;
return -1;
goto bind_to_iface;
}
memset(&sa, 0, sizeof sa);
sa.sin6_family = AF_INET6;
@ -162,6 +158,16 @@ int socket_and_bind(int pf, unsigned char *address)
}
}
return s;
bind_to_iface:
errno = EINVAL;
#ifdef SO_BINDTODEVICE
EINTRLOOP(rs, setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE, address, (socklen_t)(strlen(cast_const_char address) + 1)));
if (!rs) {
return s;
}
#endif
EINTRLOOP(rs, close(s));
return -1;
}
void close_socket(int *s)
@ -187,7 +193,6 @@ struct conn_info {
void make_connection(struct connection *c, int port, int *sock, void (*func)(struct connection *))
{
int socks_port = -1;
int as;
unsigned char *host;
size_t sl;
struct conn_info *b;
@ -239,14 +244,17 @@ void make_connection(struct connection *c, int port, int *sock, void (*func)(str
b->l.addr_index = c->last_lookup_state.addr_index;
b->l.dont_try_more_servers = 1;
dns_found(c, 0);
as = 0;
} else if (c->no_cache >= NC_RELOAD) {
as = find_host_no_cache(host, &b->l.addr, &c->dnsquery, dns_found, c);
} else {
as = find_host(host, &b->l.addr, &c->dnsquery, dns_found, c);
int q = -1;
if (c->no_cache < NC_RELOAD) {
q = find_host_in_cache(host, &b->l.addr, &c->dnsquery, dns_found, c);
}
if (q) {
setcstate(c, S_DNS);
find_host_no_cache(host, c->doh, &b->l.addr, &c->dnsquery, dns_found, c);
}
}
mem_free(host);
if (as) setcstate(c, S_DNS);
}
int is_ipv6(int h)
@ -610,16 +618,13 @@ void retry_connect(struct connection *c, int err, int ssl_downgrade)
return;
}
b->l.addr_index++;
#if MAX_ADDRESSES > 1
if (b->l.addr_index < b->l.addr.n && !b->l.dont_try_more_servers) {
if (b->l.addr_index == 1)
rotate_addresses(&b->l.addr);
log_string(cast_uchar "\nNEXT ADDRESS\n");
close_socket(b->sock);
try_connect(c);
} else
#endif
{
} else {
dns_clear_host(b->host);
setcstate(c, b->first_error);
retry_connection(c);
@ -702,11 +707,9 @@ static void try_connect(struct connection *c)
}
set_handlers(s, NULL, connected, c);
setcstate(c, !b->l.addr_index ? S_CONN : S_CONN_ANOTHER);
#if MAX_ADDRESSES > 1
if (b->l.addr.n > 1 && (is_connection_restartable(c) || max_tries == 1)) {
set_connection_timeout(c);
}
#endif
} else {
connected(c);
}
@ -846,7 +849,6 @@ skip_numeric_address:
static void update_dns_priority(struct connection *c)
{
#if MAX_ADDRESSES > 1
struct conn_info *b = c->newconn;
if (!b->l.dont_try_more_servers && b->host[0]) {
if (b->l.addr_index) {
@ -857,7 +859,6 @@ static void update_dns_priority(struct connection *c)
}
b->l.dont_try_more_servers = 1;
}
#endif
}
static void connected_callback(struct connection *c)

View File

@ -717,42 +717,39 @@ static unsigned char *get_home(int *n)
{
struct stat st;
int rs;
unsigned char *p;
unsigned char *home;
unsigned char *home_links;
unsigned char *config_dir;
EINTRLOOP(rs, stat(".", &st));
if (rs && (home = cast_uchar getenv("HOME")))
EINTRLOOP(rs, chdir(cast_const_char home));
if (rs && (p = cast_uchar getenv("HOME")))
EINTRLOOP(rs, chdir(cast_const_char p));
home = NULL;
config_dir = stracpy(cast_uchar getenv("CONFIG_DIR"));
if (n) *n = 1;
#ifdef WIN
#ifdef WINDOWS_RELEASE
if ((p = cast_uchar getenv("USERPROFILE"))) {
p = stracpy(p);
translate_win32_to_unix(&p);
EINTRLOOP(rs, chdir(cast_const_char p));
mem_free(p);
if (!rs)
EINTRLOOP(rs, chdir("Downloads"));
}
#endif
if (!home) {
home = stracpy(cast_uchar getenv("APPDATA"));
#ifdef HAVE_CYGWIN_CONV_PATH
/*
* Newer Cygwin complains about windows-style path, so
* we have to convert it.
*/
if (home) {
unsigned char *new_path;
ssize_t sz = cygwin_conv_path(CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE, home, NULL, 0);
if (sz < 0 || sz >= MAXINT)
goto skip_path_conv;
new_path = mem_alloc(sz);
sz = cygwin_conv_path(CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE, home, new_path, sz);
if (sz < 0) {
mem_free(new_path);
goto skip_path_conv;
}
mem_free(home);
home = new_path;
skip_path_conv:;
translate_win32_to_unix(&home);
}
#endif
if (home) {
EINTRLOOP(rs, stat(cast_const_char home, &st));
if (rs || !S_ISDIR(st.st_mode)) {
@ -1426,26 +1423,6 @@ static void dp_wr(struct option *o, unsigned char **s, int *l)
}
}
static unsigned char *ip_rd(struct option *o, unsigned char *c)
{
unsigned char *e;
e = str_rd(o, c);
if (e) return e;
if (*(unsigned char *)o->ptr && numeric_ip_address(o->ptr, NULL) == -1) return cast_uchar "Invalid IP address";
return NULL;
}
static unsigned char *ipv6_rd(struct option *o, unsigned char *c)
{
unsigned char *e;
e = str_rd(o, c);
if (e) return e;
#ifdef SUPPORT_IPV6
if (*(unsigned char *)o->ptr && numeric_ipv6_address(o->ptr, NULL, NULL) == -1) return cast_uchar "Invalid IPv6 address";
#endif
return NULL;
}
static unsigned char *gen_cmd(struct option *o, unsigned char ***argv, int *argc)
{
unsigned char *e;
@ -1665,10 +1642,10 @@ fprintf(stdout, "%s%s%s%s%s%s\n",
" Timeout for connection when trying multiple addresses or keepalive connection.\n"
" (default: 3)\n"
"\n"
" -bind-address <ip address>\n"
" -bind-address <ip address or interface name>\n"
" Use a specific local IP address.\n"
"\n"
" -bind-address-ipv6 <ipv6 address>\n"
" -bind-address-ipv6 <ipv6 address or interface name>\n"
" Use a specific local IPv6 address.\n"
"\n"
" -no-libevent\n"
@ -1677,9 +1654,6 @@ fprintf(stdout, "%s%s%s%s%s%s\n",
" -no-openmp\n"
" Don't use OpenMP.\n"
"\n"
" -async-dns <0>/<1>\n"
" Asynchronous DNS resolver on(1)/off(0).\n"
"\n"
" -download-utime <0>/<1>\n"
" Set time of downloaded files to last modification time reported by server.\n"
"\n"
@ -1767,6 +1741,13 @@ fprintf(stdout, "%s%s%s%s%s%s\n",
"\n"
" -ssl.client-cert-password <text>\n"
" Password for the user private key.\n"
"\n"
" -async-dns <0>/<1>\n"
" Asynchronous DNS resolver on(1)/off(0).\n"
"\n"
" -dns-over-https <url>\n"
" DNS over HTTPS url.\n"
" (default: blank)\n"
"\n"),(
" -http-bugs.http10 <0>/<1>\n"
" (default 0)\n"
@ -2139,7 +2120,6 @@ int unrestartable_receive_timeout = 600;
int timeout_multiple_addresses = 3;
unsigned char bind_ip_address[16] = "";
unsigned char bind_ipv6_address[INET6_ADDRSTRLEN] = "";
int async_lookup = 1;
int download_utime = 0;
int max_format_cache_entries = 5;
@ -2157,6 +2137,8 @@ struct ssl_options ssl_options = { SSL_WARN_ON_INVALID_CERTIFICATE,
0,
#endif
"", "", "" };
int async_lookup = 1;
unsigned char dns_over_https[MAX_STR_LEN] = "";
struct http_options http_options = { 0, 1, 0, 0, 0, { 0, 0, REFERER_REAL_SAME_SERVER, "", "", "" } };
struct ftp_options ftp_options = { "somebody@host.domain", 1, 0, 1 };
struct smb_options smb_options = { 0 };
@ -2269,11 +2251,10 @@ static struct option links_options[] = {
{1, gen_cmd, num_rd, num_wr, 1, 9999, &receive_timeout, "receive_timeout", "receive-timeout"},
{1, gen_cmd, num_rd, num_wr, 1, 9999, &unrestartable_receive_timeout, "unrestartable_receive_timeout", "unrestartable-receive-timeout"},
{1, gen_cmd, num_rd, num_wr, 1, 999, &timeout_multiple_addresses, "timeout_when_trying_multiple_addresses", "timeout-when-trying-multiple-addresses"},
{1, gen_cmd, ip_rd, str_wr, 0, 16, bind_ip_address, "bind_address", "bind-address"},
{1, gen_cmd, ipv6_rd, str_wr, 0, INET6_ADDRSTRLEN, bind_ipv6_address, "bind_address_ipv6", "bind-address-ipv6"},
{1, gen_cmd, str_rd, str_wr, 0, 16, bind_ip_address, "bind_address", "bind-address"},
{1, gen_cmd, str_rd, str_wr, 0, INET6_ADDRSTRLEN, bind_ipv6_address, "bind_address_ipv6", "bind-address-ipv6"},
{1, set_cmd, NULL, NULL, 0, 0, &disable_libevent, NULL, "no-libevent"},
{1, set_cmd, NULL, NULL, 0, 0, &disable_openmp, NULL, "no-openmp"},
{1, gen_cmd, num_rd, num_wr, 0, 1, &async_lookup, "async_dns", "async-dns"},
{1, gen_cmd, num_rd, num_wr, 0, 1, &download_utime, "download_utime", "download-utime"},
{1, gen_cmd, num_rd, num_wr, 0, 999, &max_format_cache_entries, "format_cache_size", "format-cache-size"},
{1, gen_cmd, num_rd, num_wr, 0, MAXINT, &memory_cache_size, "memory_cache_size", "memory-cache-size"},
@ -2296,6 +2277,8 @@ static struct option links_options[] = {
{1, gen_cmd, str_rd, NULL, 0, MAX_STR_LEN, &ssl_options.client_cert_password, NULL, "ssl.client-cert-password"},
{1, gen_cmd, str_rd, NULL, 0, MAX_STR_LEN, &ssl_options.client_cert_key, "client_cert_key", "http.client_cert_key"}, /* backward compatibility with Debian patches */
{1, gen_cmd, str_rd, NULL, 0, MAX_STR_LEN, &ssl_options.client_cert_crt, "client_cert_crt", "http.client_cert_crt"}, /* backward compatibility with Debian patches */
{1, gen_cmd, num_rd, num_wr, 0, 1, &async_lookup, "async_dns", "async-dns"},
{1, gen_cmd, str_rd, str_wr, 0, MAX_STR_LEN, dns_over_https, "dns_over_https", "dns-over-https"},
{1, gen_cmd, num_rd, num_wr, 0, 1, &http_options.http10, "http_bugs.http10", "http-bugs.http10"},
{1, gen_cmd, num_rd, num_wr, 0, 1, &http_options.allow_blacklist, "http_bugs.allow_blacklist", "http-bugs.allow-blacklist"},
{1, gen_cmd, NULL, NULL, 0, 1, NULL, "http_bugs.bug_302_redirect", NULL},
@ -2366,6 +2349,7 @@ static struct option links_options[] = {
{1, NULL, prog_rd, prog_wr, 0, 0, &tn3270_prog, "tn3270", NULL},
{1, NULL, prog_rd, prog_wr, 0, 0, &mms_prog, "mms", NULL},
{1, NULL, prog_rd, prog_wr, 0, 0, &magnet_prog, "magnet", NULL},
{1, NULL, prog_rd, prog_wr, 0, 0, &gopher_prog, "gopher", NULL},
{1, NULL, block_rd, block_wr, 0, 0, NULL, "imageblock", NULL},
{1, NULL, dp_rd, dp_wr, 0, 0, NULL, "video_driver", NULL},
{0, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL},

View File

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

58
dip.c
View File

@ -160,8 +160,10 @@ static void add_row_gray(unsigned *my_restrict row_buf, unsigned char *my_restri
ATTR_NOINLINE
#endif
static void add_col_color(scale_t *my_restrict col_buf,
#if defined(__GNUC__) && __GNUC__ == 3
#ifdef __GNUC__
#if __GNUC__ == 3
volatile
#endif
#endif
unsigned short *my_restrict ptr,
size_t line_skip, size_t n, ulonglong weight)
@ -194,8 +196,10 @@ static void add_col_color(scale_t *my_restrict col_buf,
/* n is in pixels. pixel is 3 unsigned shorts in series */
/* We assume unsigned short holds at least 16 bits. */
static void add_row_color(scale_t *my_restrict row_buf,
#if defined(__GNUC__) && __GNUC__ == 3
#ifdef __GNUC__
#if __GNUC__ == 3
volatile
#endif
#endif
unsigned short *my_restrict ptr,
size_t n, ulonglong weight)
@ -1992,11 +1996,14 @@ bypass_freetype:
* at least 1 apart
* Otherwise g_print_text will print nonsense (but won't segfault)
*/
static void get_underline_pos(int height, int *top, int *bottom)
static void get_line_pos(int height, int *top, int *bottom, unsigned style)
{
int thickness, baseline;
thickness=(height+15)/16;
baseline=height/7;
if (style == FF_STRIKE)
baseline=height/2 - height/12;
else
baseline=height/7;
if (baseline<=0) baseline=1;
if (thickness>baseline) thickness=baseline;
*top=height-baseline;
@ -2006,38 +2013,39 @@ static void get_underline_pos(int height, int *top, int *bottom)
/* *width will be advanced by the width of the text */
void g_print_text(struct graphics_device *device, int x, int y, struct style *style, unsigned char *text, int *width)
{
int top_underline, bottom_underline, original_width, my_width;
unsigned char original_flags;
int top_line, bottom_line, original_width, my_width;
unsigned char original_flags, line_style;
struct rect saved_clip;
if (y + style->height <= device->clip.y1 || y >= device->clip.y2)
goto o;
if (style->flags & FF_UNDERLINE) {
/* Underline */
if (style->flags & FF_UNDERLINE || style->flags & FF_STRIKE) {
/* Underline or strike */
if (!width) {
width = &my_width;
*width = 0;
}
original_flags = style->flags;
original_width = *width;
style->flags &= ~FF_UNDERLINE;
get_underline_pos(style->height, &top_underline, &bottom_underline);
restrict_clip_area(device, &saved_clip, 0, 0, device->size.x2, y + top_underline);
line_style = style->flags & FF_UNDERLINE ? FF_UNDERLINE : FF_STRIKE;
style->flags &= ~line_style;
get_line_pos(style->height, &top_line, &bottom_line, line_style);
restrict_clip_area(device, &saved_clip, 0, 0, device->size.x2, y + top_line);
g_print_text(device, x, y, style, text, width);
set_clip_area(device, &saved_clip);
if (bottom_underline - top_underline == 1) {
if (bottom_line - top_line == 1) {
/* Line */
drv->draw_hline(device, x, y + top_underline, safe_add(x, *width) - original_width, style->underline_color);
drv->draw_hline(device, x, y + top_line, safe_add(x, *width) - original_width, style->line_color);
} else {
/* Area */
drv->fill_area(device, x, y + top_underline, safe_add(x, *width) - original_width, y + bottom_underline, style->underline_color);
drv->fill_area(device, x, y + top_line, safe_add(x, *width) - original_width, y + bottom_line, style->line_color);
}
if (bottom_underline < style->height) {
/* Do the bottom half only if the underline is above
if (bottom_line < style->height) {
/* Do the bottom half only if the line is above
* the bottom of the letters.
*/
*width = original_width;
restrict_clip_area(device, &saved_clip, 0, y + bottom_underline, device->size.x2, device->size.y2);
restrict_clip_area(device, &saved_clip, 0, y + bottom_line, device->size.x2, device->size.y2);
g_print_text(device, x, y, style, text, width);
set_clip_area(device, &saved_clip);
}
@ -2271,9 +2279,11 @@ struct style *g_invert_style(struct style *old)
#ifdef HAVE_FREETYPE
st->ft_face = old->ft_face;
#endif
if (st->flags & FF_UNDERLINE) {
/* We have to get a foreground color for underlining */
st->underline_color = dip_get_color_sRGB((st->r1 << 16) | (st->g1 << 8) | (st->b1));
if (st->flags & FF_UNDERLINE || st->flags & FF_STRIKE) {
/* We have to get a foreground color for underlining and
* striking
*/
st->line_color = dip_get_color_sRGB((st->r1 << 16) | (st->g1 << 8) | (st->b1));
}
st->mono_space = old->mono_space;
st->mono_height = old->mono_height;
@ -2319,9 +2329,11 @@ struct style *g_get_style_font(int fg, int bg, int size, int fflags, unsigned ch
else
st->ft_face = freetype_get_font(font);
#endif
if (fflags & FF_UNDERLINE) {
/* We have to get a foreground color for underlining */
st->underline_color = dip_get_color_sRGB(fg);
if (fflags & FF_UNDERLINE || fflags & FF_STRIKE) {
/* We have to get a foreground color for underlining and
* striking
*/
st->line_color = dip_get_color_sRGB(fg);
}
if (fflags & FF_MONOSPACED)
load_metric(st, ' ', &st->mono_space, &st->mono_height);

View File

@ -54,9 +54,11 @@
static int *red_table = DUMMY, *green_table = DUMMY, *blue_table = DUMMY;
static int table_16 = 1;
static unsigned short *
#if defined(__GNUC__) && __GNUC__ == 3
#ifdef __GNUC__
#if __GNUC__ == 3
volatile
#endif
#endif
real_colors_table = NULL;
/* If we want to represent some 16-bit from-screen-light, it would require certain display input

84
dns.c
View File

@ -63,6 +63,7 @@ static void my_freeaddrinfo(struct addrinfo *res)
struct dnsentry {
list_entry_1st
uttime absolute_time;
uttime timeout;
struct lookup_result addr;
list_entry_last
unsigned char name[1];
@ -72,23 +73,9 @@ struct dnsentry {
struct dnsquery *dns_queue = NULL;
#endif
struct dnsquery {
#ifndef THREAD_SAFE_LOOKUP
struct dnsquery *next_in_queue;
#endif
void (*fn)(void *, int);
void *data;
int h;
struct dnsquery **s;
struct lookup_result *addr;
int addr_preference;
unsigned char name[1];
};
static int dns_cache_addr_preference = -1;
static struct list_head dns_cache = {&dns_cache, &dns_cache};
static void end_dns_lookup(struct dnsquery *q, int a);
static int shrink_dns_cache(int u);
static int get_addr_byte(unsigned char **ptr, unsigned char *res, unsigned char stp)
@ -237,22 +224,18 @@ skip_addr:
#endif
#if MAX_ADDRESSES > 1
static int memcmp_host_address(struct host_address *a, struct host_address *b)
{
if (a->af != b->af || a->scope_id != b->scope_id)
return 1;
return memcmp(a->addr, b->addr, sizeof a->addr);
}
#endif
static void add_address(struct lookup_result *host, int af, unsigned char *address, unsigned scope_id, int preference)
void add_address(struct lookup_result *host, int af, unsigned char *address, unsigned scope_id, int preference)
{
struct host_address neww;
struct host_address *e, *t;
#if MAX_ADDRESSES > 1
struct host_address *n;
#endif
if (af != AF_INET && preference == ADDR_PREFERENCE_IPV4_ONLY)
return;
#ifdef SUPPORT_IPV6
@ -267,7 +250,6 @@ static void add_address(struct lookup_result *host, int af, unsigned char *addre
neww.scope_id = scope_id;
e = &host->a[host->n];
t = e;
#if MAX_ADDRESSES > 1
for (n = host->a; n != e; n++) {
if (!memcmp_host_address(n, &neww))
return;
@ -283,7 +265,6 @@ static void add_address(struct lookup_result *host, int af, unsigned char *addre
#endif
}
memmove(t + 1, t, (e - t) * sizeof(struct host_address));
#endif
memcpy(t, &neww, sizeof(struct host_address));
host->n++;
}
@ -329,7 +310,6 @@ static int use_getaddrinfo(unsigned char *name, struct addrinfo *hints, int pref
void rotate_addresses(struct lookup_result *host)
{
#if MAX_ADDRESSES > 1
int first_type, first_different, i;
if (host->n <= 2)
@ -352,7 +332,6 @@ do_swap:
memmove(&host->a[2], &host->a[1], (first_different - 1) * sizeof(struct host_address));
memcpy(&host->a[1], &ha, sizeof(struct host_address));
}
#endif
}
void do_real_lookup(unsigned char *name, int preference, struct lookup_result *host)
@ -471,11 +450,11 @@ static void end_real_lookup(void *q_)
end:
set_handlers(q->h, NULL, NULL, NULL);
EINTRLOOP(rs, close(q->h));
end_dns_lookup(q, r);
end_dns_lookup(q, r, -1);
}
#endif
static int do_lookup(struct dnsquery *q, int force_async)
static void do_lookup(struct dnsquery *q, int force_async)
{
/*debug("starting lookup for %s", q->name);*/
#ifndef NO_ASYNC_LOOKUP
@ -485,34 +464,30 @@ static int do_lookup(struct dnsquery *q, int force_async)
sync_lookup:
#endif
do_real_lookup(q->name, q->addr_preference, q->addr);
end_dns_lookup(q, !q->addr->n);
return 0;
end_dns_lookup(q, !q->addr->n, -1);
#ifndef NO_ASYNC_LOOKUP
} else {
q->h = start_thread(lookup_fn, q, (int)((unsigned char *)strchr(cast_const_char q->name, 0) + 1 - (unsigned char *)q), 1);
if (q->h == -1) goto sync_lookup;
set_handlers(q->h, end_real_lookup, NULL, q);
return 1;
}
#endif
}
static int do_queued_lookup(struct dnsquery *q)
static void do_queued_lookup(struct dnsquery *q)
{
#ifndef THREAD_SAFE_LOOKUP
q->next_in_queue = NULL;
if (!dns_queue) {
dns_queue = q;
/*debug("direct lookup");*/
#endif
return do_lookup(q, 0);
do_lookup(q, 0);
#ifndef THREAD_SAFE_LOOKUP
} else {
/*debug("queuing lookup for %s", q->name);*/
if (dns_queue->next_in_queue) internal_error("DNS queue corrupted");
dns_queue->next_in_queue = q;
dns_queue = q;
return 1;
}
#endif
}
@ -546,13 +521,15 @@ static void free_dns_entry(struct dnsentry *dnsentry)
mem_free(dnsentry);
}
static void end_dns_lookup(struct dnsquery *q, int a)
void end_dns_lookup(struct dnsquery *q, int a, uttime timeout)
{
struct dnsentry *dnsentry;
size_t sl;
void (*fn)(void *, int);
void *data;
/*debug("end lookup %s", q->name);*/
/*debug("end lookup %s: %d, %lu", q->name, a, (unsigned long)timeout);*/
if (timeout > DNS_TIMEOUT)
timeout = DNS_TIMEOUT;
#ifndef THREAD_SAFE_LOOKUP
if (q->next_in_queue) {
/*debug("processing next in queue: %s", q->next_in_queue->name);*/
@ -580,6 +557,7 @@ static void end_dns_lookup(struct dnsquery *q, int a)
strcpy(cast_char dnsentry->name, cast_const_char q->name);
memcpy(&dnsentry->addr, q->addr, sizeof(struct lookup_result));
dnsentry->absolute_time = get_absolute_time();
dnsentry->timeout = timeout;
add_to_list(dns_cache, dnsentry);
e:
if (q->s) *q->s = NULL;
@ -589,7 +567,7 @@ static void end_dns_lookup(struct dnsquery *q, int a)
fn(data, a);
}
int find_host_no_cache(unsigned char *name, struct lookup_result *addr, void **qp, void (*fn)(void *, int), void *data)
void find_host_no_cache(unsigned char *name, int no_doh, struct lookup_result *addr, void **qp, void (*fn)(void *, int), void *data)
{
struct dnsquery *q;
retry:
@ -598,30 +576,45 @@ int find_host_no_cache(unsigned char *name, struct lookup_result *addr, void **q
if (out_of_memory(0, NULL, 0))
goto retry;
fn(data, 1);
return 0;
}
#ifndef THREAD_SAFE_LOOKUP
q->next_in_queue = NULL;
#endif
q->fn = fn;
q->data = data;
q->s = (struct dnsquery **)qp;
q->s = qp;
q->doh = NULL;
q->addr = addr;
q->addr_preference = ipv6_options.addr_preference;
strcpy(cast_char q->name, cast_const_char name);
if (qp) *qp = q;
return do_queued_lookup(q);
if (is_noproxy_host(name))
no_doh = 1;
if (!numeric_ip_address(name, NULL))
no_doh = 1;
#ifdef SUPPORT_IPV6
if (!numeric_ipv6_address(name, NULL, NULL))
no_doh = 1;
#endif
if (!no_doh && *dns_over_https) {
do_doh_lookup(q);
} else {
do_queued_lookup(q);
}
}
int find_host(unsigned char *name, struct lookup_result *addr, void **qp, void (*fn)(void *, int), void *data)
int find_host_in_cache(unsigned char *name, struct lookup_result *addr, void **qp, void (*fn)(void *, int), void *data)
{
struct dnsentry *dnsentry;
if (qp) *qp = NULL;
if (!find_in_dns_cache(name, &dnsentry)) {
if (get_absolute_time() - dnsentry->absolute_time > DNS_TIMEOUT) goto timeout;
if (get_absolute_time() - dnsentry->absolute_time >= dnsentry->timeout) goto timeout;
memcpy(addr, &dnsentry->addr, sizeof(struct lookup_result));
fn(data, 0);
return 0;
}
timeout:
return find_host_no_cache(name, addr, qp, fn, data);
return -1;
}
void kill_dns_request(void **qp)
@ -649,11 +642,11 @@ void dns_prefetch(unsigned char *name)
addr = (struct lookup_result *)malloc(sizeof(struct lookup_result));
if (!addr)
return;
find_host(name, addr, NULL, dns_prefetch_end, addr);
if (find_host_in_cache(name, addr, NULL, dns_prefetch_end, addr))
find_host_no_cache(name, 0, addr, NULL, dns_prefetch_end, addr);
#endif
}
#if MAX_ADDRESSES > 1
void dns_set_priority(unsigned char *name, struct host_address *address, int prefer)
{
int i;
@ -672,7 +665,6 @@ void dns_set_priority(unsigned char *name, struct host_address *address, int pre
memcpy(&dnsentry->addr.a[dnsentry->addr.n - 1], address, sizeof(struct host_address));
}
}
#endif
void dns_clear_host(unsigned char *name)
{
@ -686,6 +678,7 @@ unsigned long dns_info(int type)
{
switch (type) {
case CI_FILES:
shrink_dns_cache(SH_CHECK_QUOTA);
return list_size(&dns_cache);
default:
internal_error("dns_info: bad request");
@ -703,7 +696,7 @@ static int shrink_dns_cache(int u)
d = list_struct(dns_cache.prev, struct dnsentry);
goto delete_last;
}
foreach(struct dnsentry, d, ld, dns_cache) if (u == SH_FREE_ALL || now - d->absolute_time > DNS_TIMEOUT) {
foreach(struct dnsentry, d, ld, dns_cache) if (u == SH_FREE_ALL || now - d->absolute_time >= d->timeout) {
delete_last:
ld = d->list_entry.prev;
free_dns_entry(d);
@ -800,6 +793,7 @@ void flood_memory(void)
while (1) {
while ((de = mem_alloc_mayfail(s))) {
de->absolute_time = get_absolute_time();
de->timeout = DNS_TIMEOUT;
memset(&de->addr, 0, sizeof de->addr);
de->name[0] = 0;
add_to_list(list, de);

235
doh.c Normal file
View File

@ -0,0 +1,235 @@
#include "links.h"
struct dnsquery_addr {
struct status stat;
unsigned char *url;
int redirect_cnt;
};
struct dnsquery_doh {
struct dnsquery *q;
struct dnsquery_addr ipv4;
struct dnsquery_addr ipv6;
int in_progress;
uttime ttl;
};
#define skip_bytes(n) do { if (len < (n)) return; len -= (n); start += (n); } while (0)
#define get_byte(b) do { if (!len--) return; (b) = *start++; } while (0)
#define get_word(w) do { unsigned char lo, hi; get_byte(hi); get_byte(lo); (w) = (hi << 8) | lo; } while (0)
#define get_dword(d) do { unsigned short lw, hw; get_word(hw); get_word(lw); (d) = ((unsigned)hw << 16) | lw; } while (0)
#define skip_name() do while (1) { \
unsigned char n; \
get_byte(n); \
if ((n & 0xc0) == 0) { \
if (n == 0) \
break; \
skip_bytes(n); \
continue; \
} else if ((n & 0xc0) == 0xc0) { \
skip_bytes(1); \
break; \
} else { \
return; \
} \
} while (0)
static void parse_dns_reply(struct dnsquery *q, unsigned char *start, size_t len)
{
unsigned short status, qdcount, ancount, i;
struct dnsquery_doh *doh = q->doh;
int preference = q->addr_preference;
#ifdef SUPPORT_IPV6
if (preference == ADDR_PREFERENCE_DEFAULT)
preference = ADDR_PREFERENCE_IPV6;
#endif
if (!support_ipv6) preference = ADDR_PREFERENCE_IPV4_ONLY;
skip_bytes(2);
get_word(status);
if (status & 0xf)
return;
get_word(qdcount);
get_word(ancount);
skip_bytes(4);
for (i = 0; i < qdcount; i++) {
skip_name();
skip_bytes(4);
}
for (i = 0; i < ancount; i++) {
unsigned short typ, cls, rdlength;
unsigned ttl;
skip_name();
get_word(typ);
get_word(cls);
get_dword(ttl);
if (ttl < doh->ttl)
doh->ttl = ttl;
get_word(rdlength);
skip_bytes(rdlength);
/*fprintf(stderr, "typ %04x, class %04x, length %04x\n", typ, cls, rdlength);*/
if (q->addr) {
if (cls == 1 && typ == 1 && rdlength == 4) {
add_address(q->addr, AF_INET, start - rdlength, 0, preference);
}
#ifdef SUPPORT_IPV6
if (cls == 1 && typ == 0x1c && rdlength == 16) {
add_address(q->addr, AF_INET6, start - rdlength, 0, preference);
}
#endif
}
}
}
static void end_doh_lookup(struct dnsquery_doh *doh)
{
uttime ttl;
struct dnsquery *q;
if (--doh->in_progress)
return;
q = doh->q;
ttl = doh->ttl;
mem_free(doh);
if (ttl * 1000 / 1000 != ttl)
ttl = -1;
else
ttl *= 1000;
end_dns_lookup(q, q->addr ? !q->addr->n : 1, ttl);
}
static void doh_end(struct status *stat, void *doh_)
{
struct dnsquery_doh *doh = (struct dnsquery_doh *)doh_;
struct dnsquery_addr *da = get_struct(stat, struct dnsquery_addr, stat);
struct cache_entry *ce;
if (stat->state >= 0)
return;
if (stat->state == S__OK && (ce = stat->ce)) {
if (ce->redirect && da->redirect_cnt++ < MAX_REDIRECTS) {
unsigned char *u;
u = join_urls(da->url, ce->redirect);
if (!strchr(cast_const_char u, POST_CHAR)) {
unsigned char *pc = cast_uchar strchr(cast_const_char da->url, POST_CHAR);
if (pc)
add_to_strn(&u, pc);
}
mem_free(da->url);
da->url = u;
load_url(u, NULL, &da->stat, PRI_DOH, NC_RELOAD, 1, 1, 0, 0);
return;
}
if (ce->http_code == 200) {
unsigned char *start;
size_t len;
get_file_by_term(NULL, ce, &start, &len, NULL);
parse_dns_reply(doh->q, start, len);
}
}
mem_free(da->url);
end_doh_lookup(doh);
}
static int add_host_name(unsigned char **r, int *l, unsigned char *name)
{
while (*name) {
size_t len = strcspn(cast_const_char name, ".");
if (!len || len > 63)
return -1;
add_chr_to_str(r, l, (unsigned char)len);
add_bytes_to_str(r, l, name, len);
name += len;
if (*name == '.')
name++;
}
add_chr_to_str(r, l, 0);
return 0;
}
void do_doh_lookup(struct dnsquery *q)
{
int p;
struct dnsquery_doh *doh;
int bad_name = 0;
q->doh = doh = mem_calloc(sizeof(struct dnsquery_doh));
doh->q = q;
doh->ttl = -1;
for (p = 0; p < 2; p++) {
struct dnsquery_addr *da = !p ? &doh->ipv4 : &doh->ipv6;
unsigned char *u;
int ul;
unsigned char *r;
int rl;
int i;
if (!p) {
#ifdef SUPPORT_IPV6
if (q->addr_preference == ADDR_PREFERENCE_IPV6_ONLY)
continue;
#endif
} else {
#ifndef SUPPORT_IPV6
continue;
#endif
if (q->addr_preference == ADDR_PREFERENCE_IPV4_ONLY)
continue;
}
doh->in_progress++;
da->stat.end = doh_end;
da->stat.data = doh;
u = init_str();
ul = 0;
memset(q->addr, 0, sizeof(struct lookup_result));
if (!casecmp(dns_over_https, cast_uchar "http://", 7) || !casecmp(dns_over_https, cast_uchar "https://", 8)) {
add_to_str(&u, &ul, dns_over_https);
} else {
int ipv6 = 0;
add_to_str(&u, &ul, cast_uchar "https://");
#ifdef SUPPORT_IPV6
if (!numeric_ipv6_address(dns_over_https, NULL, NULL))
ipv6 = 1;
#endif
if (ipv6)
add_chr_to_str(&u, &ul, '[');
add_to_str(&u, &ul, dns_over_https);
if (ipv6)
add_chr_to_str(&u, &ul, ']');
add_to_str(&u, &ul, cast_uchar "/dns-query");
}
add_chr_to_str(&u, &ul, POST_CHAR);
add_to_str(&u, &ul, cast_uchar "application/dns-message\n");
r = init_str();
rl = 0;
add_bytes_to_str(&r, &rl, cast_uchar "\0\0\1\0\0\1\0\0\0\0\0\0", 12);
if (add_host_name(&r, &rl, q->name))
bad_name = 1;
if (!p)
add_bytes_to_str(&r, &rl, cast_uchar "\0\1\0\1", 4);
else
add_bytes_to_str(&r, &rl, cast_uchar "\0\34\0\1", 4);
for (i = 0; i < rl; i++) {
unsigned char p[3];
sprintf(cast_char p, "%02x", (int)r[i]);
add_bytes_to_str(&u, &ul, p, 2);
}
mem_free(r);
da->url = u;
}
for (p = 0; p < 2; p++) {
struct dnsquery_addr *da = !p ? &doh->ipv4 : &doh->ipv6;
if (da->url) {
if (bad_name) {
mem_free(da->url);
end_doh_lookup(doh);
} else {
load_url(da->url, NULL, &da->stat, PRI_DOH, NC_RELOAD, 1, 1, 0, 0);
}
}
}
}

View File

@ -40,6 +40,10 @@ extern struct graphics_driver grx_driver;
#ifdef GRDRV_SDL
extern struct graphics_driver sdl_driver;
#endif
#ifdef GRDRV_SORTIX
extern struct graphics_driver sortix_driver;
#endif
/*
* On SPAD you must test first svgalib and then X (because X test is slow).
@ -82,6 +86,9 @@ static struct graphics_driver *graphics_drivers[] = {
#endif
#ifdef GRDRV_SDL
&sdl_driver,
#endif
#ifdef GRDRV_SORTIX
&sortix_driver,
#endif
NULL
};

3
file.c
View File

@ -205,7 +205,8 @@ again:
add_chr_to_str(p, l, ' ');
}
static unsigned char *get_filename(unsigned char *url)
/* ATTR_NOINLINE is a workaround for a bogus warning on gcc 12 */
ATTR_NOINLINE static unsigned char *get_filename(unsigned char *url)
{
unsigned char *p, *m;
int ml;

View File

@ -14,24 +14,17 @@
#include <w32api/shlobj.h>
static void set_font_path(void)
{
unsigned char *path = cast_uchar "/cygdrive/c/Windows/Fonts";
unsigned char *path = stracpy(cast_uchar "/cygdrive/c/Windows/Fonts");
#if defined(HAVE_CYGWIN_CONV_PATH)
unsigned char win32_path[MAX_PATH];
if (SHGetFolderPathA(NULL, CSIDL_FONTS, NULL, 0, cast_char win32_path) == S_OK) {
ssize_t l;
unsigned char *cyg_path;
l = cygwin_conv_path(CCP_WIN_A_TO_POSIX, win32_path, NULL, 0);
if (l <= 0)
goto do_default;
cyg_path = alloca(l);
l = cygwin_conv_path(CCP_WIN_A_TO_POSIX, win32_path, cyg_path, l);
if (l < 0)
goto do_default;
path = cyg_path;
mem_free(path);
path = stracpy(win32_path);
translate_win32_to_unix(&path);
}
do_default:
#endif
FcConfigAppFontAddDir(NULL, path);
mem_free(path);
}
#else
#define set_font_path() do { } while (0)

View File

@ -279,6 +279,10 @@ static void redraw_mouse(void);
static void fb_mouse_move(int dx, int dy)
{
struct links_event ev;
if (!fb_have_mouse)
return;
mouse_x += dx;
mouse_y += dy;
ev.ev = EV_MOUSE;
@ -1068,8 +1072,10 @@ static void fb_ps2_in(void *nic)
if (dw & 0x08) dw |= -0x10;
}
mouse_x += dx;
mouse_y += dy;
if (fb_active) {
mouse_x += dx;
mouse_y += dy;
}
if (mouse_x >= fb_xsize) mouse_x = fb_xsize - 1;
if (mouse_y >= fb_ysize) mouse_y = fb_ysize - 1;
@ -2077,7 +2083,7 @@ static int fb_block(struct graphics_device *dev)
fb_block_dev = dev;
unhandle_fb_mouse();
fb_old_vd = current_virtual_device;
current_virtual_device=NULL;
current_virtual_device = NULL;
svgalib_block_itrm(fb_kbd);
if (have_cmap && fb_active) set_palette(&old_palette);
EINTRLOOP(rs, fsync(fb_handle));

12
ftp.c
View File

@ -273,14 +273,14 @@ static struct ftp_connection_info *add_file_cmd_to_str(struct connection *c, int
}
if (strlen(cast_const_char port_string) >= sizeof(port_string))
internal_error("buffer overflow in get_pasv_socket_ipv6: %d > %d", (int)strlen(cast_const_char port_string), (int)sizeof(port_string));
}
#ifdef HAVE_IPTOS
if (ftp_options.set_tos) {
int rx;
int on = IPTOS_THROUGHPUT;
EINTRLOOP(rx, setsockopt(c->sock2, IPPROTO_IP, IP_TOS, (char *)&on, sizeof(int)));
}
if (ftp_options.set_tos) {
int rx;
int on = IPTOS_THROUGHPUT;
EINTRLOOP(rx, setsockopt(c->sock2, IPPROTO_IP, IP_TOS, (char *)&on, sizeof(int)));
}
#endif
}
dd = d;
while (*dd == '/') dd++;
de = cast_uchar strchr(cast_const_char dd, 0);

36
html.c
View File

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

View File

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

View File

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

View File

@ -456,6 +456,7 @@ static struct table *parse_table(unsigned char *html, unsigned char *eof, unsign
int i, j, k;
struct rgb l_col;
int c_al = AL_TR, c_val = VAL_TR, c_width = W_AUTO, c_span = 0;
int norow = 1;
memcpy(&l_col, bgcolor, sizeof(struct rgb));
*end = html;
if (bad_html) {
@ -542,6 +543,7 @@ static struct table *parse_table(unsigned char *html, unsigned char *eof, unsign
c_span = 0;
goto see;
}
if (t_namelen == 3 && !casecmp(t_name, cast_uchar "/TR", 3)) norow = 1;
if (t_namelen == 3 && (!casecmp(t_name, cast_uchar "/TR", 3) || !casecmp(t_name, cast_uchar "/TD", 3) || !casecmp(t_name, cast_uchar "/TH", 3))) {
if (c_span) new_columns(t, c_span, c_width, c_al, c_val, 1);
if (p) CELL(t, x, y)->end = html, p = 0;
@ -560,6 +562,7 @@ static struct table *parse_table(unsigned char *html, unsigned char *eof, unsign
get_valign(t_attr, &l_val);
get_bgcolor(t_attr, &l_col);
y++, x = 0;
norow = 0;
goto see;
}
if (t_namelen == 5 && ((!casecmp(t_name, cast_uchar "THEAD", 5)) || (!casecmp(t_name, cast_uchar "TBODY", 5)) || (!casecmp(t_name, cast_uchar "TFOOT", 5)))) {
@ -573,6 +576,7 @@ static struct table *parse_table(unsigned char *html, unsigned char *eof, unsign
if (lbhp) (*bad_html)[*bhp-1].e = html, lbhp = NULL;
if (p) CELL(t, x, y)->end = html, p = 0;
if (y == -1) y = 0, x = 0;
if (norow && x) y++, x = 0, norow = 0;
nc:
cell = new_cell(t, x, y);
if (cell->used) {

51
http.c
View File

@ -23,7 +23,7 @@ static void http_get_header(struct connection *c);
static void test_restart(struct connection *c);
static void add_user_agent(unsigned char **hdr, int *l, unsigned char *url);
static void add_referer(unsigned char **hdr, int *l, unsigned char *url, unsigned char *prev_url);
static void add_accept(unsigned char **hdr, int *l);
static void add_accept(unsigned char **hdr, int *l, struct connection *c);
static void add_accept_language(unsigned char **hdr, int *l, struct http_connection_info *info);
static void add_accept_encoding(unsigned char **hdr, int *l, unsigned char *url, struct connection *c);
static void add_accept_charset(unsigned char **hdr, int *l, struct http_connection_info *info);
@ -484,20 +484,28 @@ static void http_send_header(struct connection *c)
if (proxy) add_proxy_auth_string(&hdr, &l, c->url);
if (!info->https_forward) {
test_restart(c);
add_referer(&hdr, &l, host, c->prev_url);
add_accept(&hdr, &l);
add_accept_language(&hdr, &l, info);
add_accept_encoding(&hdr, &l, host, c);
add_accept_charset(&hdr, &l, info);
if (!c->doh) {
add_referer(&hdr, &l, host, c->prev_url);
}
add_accept(&hdr, &l, c);
if (!c->doh) {
add_accept_language(&hdr, &l, info);
add_accept_encoding(&hdr, &l, host, c);
add_accept_charset(&hdr, &l, info);
}
add_dnt(&hdr, &l);
add_connection(&hdr, &l, http10, proxy, !info->send_close);
add_upgrade(&hdr, &l);
add_if_modified(&hdr, &l, c);
add_range(&hdr, &l, host, c);
add_pragma_no_cache(&hdr, &l, c->no_cache);
add_auth_string(&hdr, &l, host);
if (!c->doh) {
add_upgrade(&hdr, &l);
add_if_modified(&hdr, &l, c);
add_range(&hdr, &l, host, c);
add_pragma_no_cache(&hdr, &l, c->no_cache);
add_auth_string(&hdr, &l, host);
}
add_post_header(&hdr, &l, &post);
add_cookies(&hdr, &l, host);
if (!c->doh) {
add_cookies(&hdr, &l, host);
}
add_extra_options(&hdr, &l);
}
add_to_str(&hdr, &l, cast_uchar "\r\n");
@ -543,7 +551,7 @@ static void add_user_agent(unsigned char **hdr, int *l, unsigned char *url)
{
add_to_str(hdr, l, cast_uchar "User-Agent: ");
if (SCRUB_HEADERS) {
add_to_str(hdr, l, cast_uchar "Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.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)) {
/*
@ -648,10 +656,12 @@ static void add_referer(unsigned char **hdr, int *l, unsigned char *url, unsigne
}
}
static void add_accept(unsigned char **hdr, int *l)
static void add_accept(unsigned char **hdr, int *l, struct connection *c)
{
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");
if (c->doh) {
add_to_str(hdr, l, cast_uchar "Accept: application/dns-message\r\n");
} else if (SCRUB_HEADERS) {
add_to_str(hdr, l, cast_uchar "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n");
} else {
add_to_str(hdr, l, cast_uchar "Accept: */*\r\n");
}
@ -1149,7 +1159,7 @@ static void http_got_header(struct connection *c, struct read_buffer *rb)
return;
}
#endif
if (h != 401 && h != 407) {
if (h != 401 && h != 407 && !c->doh) {
unsigned char *cookie;
unsigned char *ch = head;
while ((cookie = parse_http_header(ch, cast_uchar "Set-Cookie", &ch))) {
@ -1212,6 +1222,8 @@ static void http_got_header(struct connection *c, struct read_buffer *rb)
e->http_code = h;
if (e->head) mem_free(e->head);
e->head = head;
if (c->doh)
e->expire_time = 1;
if ((d = parse_http_header(head, cast_uchar "Expires", NULL))) {
time_t t = parse_http_date(d);
if (t != (time_t)-1 && e->expire_time != 1) e->expire_time = t;
@ -1352,12 +1364,15 @@ static void http_got_header(struct connection *c, struct read_buffer *rb)
/*
* Truncate entry if:
* - we are using DNS-over-HTTPS
* - it is compressed (the mix of an old and new document
* would likely produce decompression error).
* - it was http authentication (the user doesn't need to see the
* authentication message).
*/
if ((d = parse_http_header(e->head, cast_uchar "Content-Encoding", NULL))) {
if (c->doh) {
truncate_entry(e, c->from, 0);
} else if ((d = parse_http_header(e->head, cast_uchar "Content-Encoding", NULL))) {
mem_free(d);
truncate_entry(e, c->from, 0);
} else if (previous_http_code == 401 || previous_http_code == 407) {

View File

@ -325,7 +325,7 @@ links_ssl *getSSL(void)
ssl_load_private_certificates(ctx);
#endif
}
#ifdef X509_V_FLAG_TRUSTED_FIRST
#if defined(HAVE_X509_VERIFY_PARAM_SET_FLAGS) && defined(X509_V_FLAG_TRUSTED_FIRST)
#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x10003000
X509_VERIFY_PARAM_set_flags(SSL_CTX_get_cert_store(ctx)->param, X509_V_FLAG_TRUSTED_FIRST);
#else

63
img.c
View File

@ -60,6 +60,16 @@ static void destroy_decoder (struct cached_image *cimg)
case IM_SVG:
svg_destroy_decoder(cimg);
break;
#endif
#ifdef HAVE_WEBP
case IM_WEBP:
webp_destroy_decoder(cimg);
break;
#endif
#ifdef HAVE_AVIF
case IM_AVIF:
avif_destroy_decoder(cimg);
break;
#endif
}
mem_free(cimg->decoder);
@ -773,6 +783,21 @@ static void type(struct cached_image *cimg, unsigned char *content_type, unsigne
#ifdef HAVE_SVG
if (data[0] == '<' && data[1] == '?')
goto have_svg;
#endif
#ifdef HAVE_WEBP
if (data[0] == 'R' && data[1] == 'I' && data[2] == 'F' && data[3] == 'F')
goto have_webp;
#endif
#if 0
if (data[4] == 'f' && data[5] == 't' && data[6] == 'y' && data[7] == 'p' &&
(memcmp(data + 8, "avi", 3) &&
(data[11] == 'f' || data[11] == 's' || data[11] == 'o')) ||
(data[8] == 'm' &&
(data[9] == 'i' || data[9] == 's') &&
data[10] == 'f' && data[11] == '1') ||
memcmp(data + 8, "miaf", 4) ||
memcmp(data + 8, "MA1B", 4))
goto have_avif;
#endif
if (data[0] == 0x89 && data[1] == 'P' && data[2] == 'N' && data[3] == 'G')
goto have_png;
@ -819,6 +844,20 @@ static void type(struct cached_image *cimg, unsigned char *content_type, unsigne
svg_start(cimg);
} else
#endif /* #ifdef HAVE_SVG */
#ifdef HAVE_WEBP
if (dtest(cast_uchar "image/webp",content_type)) {
have_webp:
cimg->image_type=IM_WEBP;
webp_start(cimg);
} else
#endif /* #ifdef HAVE_WEBP */
#ifdef HAVE_AVIF
if (dtest(cast_uchar "image/avif",content_type)) {
/*have_avif:*/
cimg->image_type=IM_AVIF;
avif_start(cimg);
} else
#endif /* #ifdef HAVE_AVIF */
{
/* Error */
img_end(cimg);
@ -916,6 +955,16 @@ static int img_process_download(struct g_object_image *goi, struct f_data_c *fda
svg_restart(cimg,data,length);
break;
#endif /* #ifdef HAVE_SVG */
#ifdef HAVE_WEBP
case IM_WEBP:
webp_restart(cimg,data,length);
break;
#endif /* #ifdef HAVE_WEBP */
#ifdef HAVE_AVIF
case IM_AVIF:
avif_restart(cimg,data,length);
break;
#endif /* #ifdef HAVE_AVIF */
#ifdef DEBUG
default:
fprintf(stderr,"cimg->image_type=%d\n",cimg->state);
@ -942,6 +991,14 @@ img_process_download.\n");
#ifdef HAVE_SVG
if (cimg->image_type==IM_SVG)
svg_finish(cimg);
#endif
#ifdef HAVE_WEBP
if (cimg->image_type==IM_WEBP)
webp_finish(cimg);
#endif
#ifdef HAVE_AVIF
if (cimg->image_type==IM_AVIF)
avif_finish(cimg);
#endif
}
cimg->eof_hit=1;
@ -1345,6 +1402,12 @@ int known_image_type(unsigned char *type)
if (!casestrcmp(type, cast_uchar "image/svg+xml")) return 1;
if (!casestrcmp(type, cast_uchar "image/svg")) return 1;
#endif
#ifdef HAVE_WEBP
if (!casestrcmp(type, cast_uchar "image/webp")) return 1;
#endif
#ifdef HAVE_AVIF
if (!casestrcmp(type, cast_uchar "image/avif")) return 1;
#endif
#endif
return 0;
}

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Angka melebihi batas",
T_BAD_STRING, "Salah string",
T_EMPTY_STRING_NOT_ALLOWED, "String kosong tidak dibolehkan",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Salah konfigurasi",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Tidak dapat menulis pada berkas konfigurasi",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Hubungan",
T_MAX_CONNECTIONS, "Batas hubungan",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Batas hubungan untuk satu host",
@ -502,20 +503,22 @@ T_MANUAL, "Panduan pengguna",
T_HOMEPAGE, "Halaman rumah",
T_CALIBRATION, "Pengukuran",
T_MAILTO_PROG, "Program surat (% diganti dengan alamat)",
T_SHELL_PROG, "Shell untuk menjalankan perintah eksternal (% diganti dengan perintah)",
T_TELNET_PROG, "Program telnet (% diganti dengan \"host\" atau \"host port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Program Tn3270 (% diganti dengan \"host\" atau \"host port\")",
T_MMS_PROG, "Program MMS (% diganti dengan URL)",
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "Shell untuk menjalankan perintah eksternal (% diganti dengan perintah)",
T_MAIL_AND_TELNET_PROGRAMS, "Program Mail dan telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Program surat, telnet dan shell",
T_NO_PROGRAM, "Tidak ada program",
T_NO_PROGRAM_SPECIFIED_FOR, "Tidak ada program diberikan untuk",
T_MAIL, "surat",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, "mms",
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "URL mailto salah",
T_BAD_TELNET_URL, "URL telnet salah",
T_BAD_TN3270_URL, "URL tn3270 salah",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "
T_BAD_STRING, "îÑÐÒÁצÌØÎÙ ÒÁÄÏË",
T_EMPTY_STRING_NOT_ALLOWED, "ðÕÓÔÙÑ ÒÁÄ˦ ÎÅ ÄÁÚ×ÁÌÑÀÃÃÁ",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "ðÁÍÙÌËÁ ÎÁÓÔÒÏÊ˦",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "îÅÍÁÇÞÙÍÁ ÚÁЦÓÁÃØ Õ ÆÁÊÌ ÎÁÓÔÒÏÅË",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "úÌÕÞÜÎÎÑ®",
T_MAX_CONNECTIONS, "íÁËÓ. ËÏÌØËÁÓÃØ ÚÌÕÞÜÎÎÑ®",
T_MAX_CONNECTIONS_TO_ONE_HOST, "íÁËÓ. ËÏÌØËÁÓÃØ ÚÌÕÞÜÎÎÑ® ÄÁ ÁÄÎÁÇÏ ÓÅÒ×ÅÒÁ",
@ -502,20 +503,22 @@ T_MANUAL, "
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "ðÒÁÇÒÁÍÁ ÁÄÐÒÁ®Ë¦ ÐÏÛÔÙ (% ÚÁÍÑÎÑÅÃÃÁ ÎÁ ÁÄÒÁÓ)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "ðÒÁÇÒÁÍÁ telnet (% ÚÁÍÑÎÑÅÃÃÁ ÎÁ 'host' æ 'host port')",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "ðÒÁÇÒÁÍÁ tn3270 (% ÚÁÍÑÎÑÅÃÃÁ ÎÁ 'host' æ 'host port')",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "ðÒÁÇÒÁÍÙ ÄÌÑ ÐÏÛÔÙ ¦ telnet'Á",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "îÑÍÁ ÐÒÁÇÒÁÍÙ",
T_NO_PROGRAM_SPECIFIED_FOR, "îÅ ®ËÁÚÁÎÁ ÐÒÁÇÒÁÍÁ ÄÌÑ",
T_MAIL, "ÐÏÛÔÙ",
T_TELNET, NULL,
T_MAGNET, NULL,
T_TN3270, NULL,
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "îÑÐÒÁצÌØÎÙ ÁÄÒÁÓ mailto:",
T_BAD_TELNET_URL, "îÑÐÒÁצÌØÎÙ ÁÄÒÁÓ telnet",
T_BAD_TN3270_URL, "îÑÐÒÁצÌØÎÙ ÁÄÒÁÓ tn3270",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "N
T_BAD_STRING, "Sequência de caracteres inválida",
T_EMPTY_STRING_NOT_ALLOWED, "Não é permitido sequência de caracteres vazia",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Erro de configuração",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Não posso escrever no arquivo de configuração",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Conexões",
T_MAX_CONNECTIONS, "Número máximo de conexões",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Número Máximo de conexões a um host",
@ -502,20 +503,22 @@ T_MANUAL, "Manual do Usu
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "Cliente de e-mail (% será substituido pelo endereço)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Cliente telnet (% será substituido por \"host\" or \"host port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Cliente tn3270 (% será substituido por \"host\" or \"host port\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Clientes de e-mail e telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Nenhum programa",
T_NO_PROGRAM_SPECIFIED_FOR, "Nenhum programa foi especificado para",
T_MAIL, "mail",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "URL mailto incorreta",
T_BAD_TELNET_URL, "URL telnet incorreta",
T_BAD_TN3270_URL, "URL tn3270 incorreta",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "
T_BAD_STRING, "Íåâàëèäåí ñèìâîëåí íèç",
T_EMPTY_STRING_NOT_ALLOWED, "Íå å ïîçâîëåí ïðàçåí ñèìâîëåí íèç",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Ãðåøêà â íàñòðîéêèòå",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Íå ìîæå äà ñå ïèøå âúâ ôàéëà ñ íàñòðîéêèòå",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Âðúçêà(è)",
T_MAX_CONNECTIONS, "Ìàêñ. áðîé âðúçêè",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Ìàêñ. áðîé âðúçêè êúì åäèí ñúðâúð",
@ -502,20 +503,22 @@ T_MANUAL, "
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "Ïîùåíñêà ïðîãðàìà (% çàìåíÿ àäðåñà)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Ïðîãðàìà çà telnet (% çàìåíÿ 'host' èëè 'host port')",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Ïðîãðàìà çà tn3270 (% çàìåíÿ 'host' èëè 'host port')",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Ïðîãðàìè çà ïîùà è telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Íÿìà ïðîãðàìà",
T_NO_PROGRAM_SPECIFIED_FOR, "Íå å ïîñî÷åíà ïðîãðàìà çà",
T_MAIL, "ïîùà",
T_TELNET, NULL,
T_MAGNET, NULL,
T_TN3270, NULL,
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Íåâàëèäåí àäðåñ mailto:",
T_BAD_TELNET_URL, "Íåâàëèäåí àäðåñ telnet",
T_BAD_TN3270_URL, "Íåâàëèäåí àäðåñ tn3270",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Nombre fora de rang",
T_BAD_STRING, "Cadena incorrecta",
T_EMPTY_STRING_NOT_ALLOWED, "No s'hi permeten cadenes buides",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Error de configuració",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "No ha estat possible escriure en l'arxiu de configuració",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Connexions",
T_MAX_CONNECTIONS, "Màxim de connexions",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Màxim de connexions a una màquina",
@ -502,20 +503,22 @@ T_MANUAL, "Manual de l'usuari",
T_HOMEPAGE, "Pàgina inicial",
T_CALIBRATION, "Calibratge",
T_MAILTO_PROG, "Programa de correu (% és substituït per l'adreça)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Programa de telnet (% és substituït per \"host\" o per \"host port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Programa tn3270 (% és substituït per \"host\" o per \"host port\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Programes de correu i de telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Cap programa",
T_NO_PROGRAM_SPECIFIED_FOR, "No hi ha cap programa especificat per a",
T_MAIL, "correu",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Adreça de correu incorrecta",
T_BAD_TELNET_URL, "Adreça de telnet incorrecta",
T_BAD_TN3270_URL, "Adreça de tn3270 incorrecta",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Broj izvan opsega",
T_BAD_STRING, "Neispravan niz znakova",
T_EMPTY_STRING_NOT_ALLOWED, "Prazni niz znakova nije dozvoljen",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Gre¹ka u konfiguraciji",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Ne mogu pisati u konfiguracijsku datoteku",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Veze",
T_MAX_CONNECTIONS, "Maksimanlno veza",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Maksimalno veza na jedno raèunalo",
@ -502,20 +503,22 @@ T_MANUAL, "Upute za korisnika",
T_HOMEPAGE, "Polazna stranica",
T_CALIBRATION, "Kalibracija",
T_MAILTO_PROG, "Mail program (% æe biti zamijenjeno adresom)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Telnet program (% æe se zamijeniti sa \"host\" ili \"host port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Tn3270 program (% æe biti zamijenjeno sa \"raèunalo\" ili \"raèunalo port\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Mail i telnet programi",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Nema programa",
T_NO_PROGRAM_SPECIFIED_FOR, "Nema programa za",
T_MAIL, "email",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Neispravan mailto url",
T_BAD_TELNET_URL, "Neispravan telnet url",
T_BAD_TN3270_URL, "Neispravan tn3270 url",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "
T_BAD_STRING, "Chybný øetìzec",
T_EMPTY_STRING_NOT_ALLOWED, "Musí¹ zadat nìjaký text!",
T_BAD_IP_ADDRESS, "Chybná IP addresa",
T_INVALID_IP_ADDRESS_SYNTAX, "Chyná syntax IP adresy",
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, "Nemohu pou¾ít lokální IP adresu",
T_CONFIG_ERROR, "Chyba v konfiguraci",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Nemù¾u zapisovat do konfiguraèního souboru",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, "Soubor neexistuje",
T_THE_FILE_HAS_INVALID_FORMAT, "Soubor má ¹patný formát",
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, "Chyba pøi inicializaci vestavìných certifikátù",
T_FAILED, "selhalo",
T_DNS_OPTIONS, "DNS nastavení",
T_DNS_OVER_HTTPS_URL, "DNS přes HTTPS (host nebo url)",
T_CONNECTIONS, "Spojení",
T_MAX_CONNECTIONS, "Maximálnì spojení",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Maximálnì spojení k jednomu stroji",
@ -502,20 +503,22 @@ T_MANUAL, "Manu
T_HOMEPAGE, "Domácí stránka",
T_CALIBRATION, "Kalibrace",
T_MAILTO_PROG, "Program pro mail (% je nahrazeno adresou)",
T_SHELL_PROG, "Shell pro spouštění externích příkazů (% je nahrazeno příkazem)",
T_TELNET_PROG, "Program pro telnet (% je nahrazeno jménem stroje a pøípadnì portem)",
T_MAGNET_PROG, "Program pro magnet (% je nahrazeno URL)",
T_TN3270_PROG, "Program pro tn3270 (% je nahrazeno jménem stroje a pøípadnì portem)",
T_MMS_PROG, "Program pro mms (% je nahrazeno URL)",
T_MAGNET_PROG, "Program pro magnet (% je nahrazeno URL)",
T_GOPHER_PROG, "Program pro gopher (% je nahrazeno URL)",
T_SHELL_PROG, "Shell pro spouštění externích příkazů (% je nahrazeno příkazem)",
T_MAIL_AND_TELNET_PROGRAMS, "Programy pro mail a telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Programy pro mail, telnet a shell",
T_NO_PROGRAM, "®ádný program",
T_NO_PROGRAM_SPECIFIED_FOR, "Není zadán ¾ádný program pro",
T_MAIL, "mail",
T_TELNET, "telnet",
T_MAGNET, "magnet",
T_TN3270, "tn3270",
T_MMS, "mms",
T_MAGNET, "magnet",
T_GOPHER, "gopher",
T_BAD_MAILTO_URL, "©patné mailto url",
T_BAD_TELNET_URL, "©patné telnet url",
T_BAD_TN3270_URL, "©patné tn3270 url",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, "S",
T_HK_IPV6_OPTIONS, "I",
T_HK_PROXIES, "P",
T_HK_SSL_OPTIONS, "L",
T_HK_DNS_OPTIONS, "D",
T_HK_HTTP_OPTIONS, "H",
T_HK_FTP_OPTIONS, "F",
T_HK_SMB_OPTIONS, "M",

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Nummer uden for omr
T_BAD_STRING, "Fejl i tekststreng",
T_EMPTY_STRING_NOT_ALLOWED, "Tom tekststreng ikke tilladt",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Konfigurationsfejl",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Kan ikke skrive til konfigurationsfil",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Forbindelser",
T_MAX_CONNECTIONS, "Max forbindelser",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Max forbindelser til en vært",
@ -502,20 +503,22 @@ T_MANUAL, "Brugervejledning",
T_HOMEPAGE, "Hjemmeside",
T_CALIBRATION, "Kalibrering",
T_MAILTO_PROG, "Epostprogram (% erstattes med adresse)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Program til fjernlogin (% erstattes med \"vært\" eller \"vært port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Tn3270-program (% erstattes med \"vært\" eller \"vært port\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Program til epost og fjernlogin",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Intet program",
T_NO_PROGRAM_SPECIFIED_FOR, "Intet program angivet for",
T_MAIL, "epost",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Fejl i mailto URL",
T_BAD_TELNET_URL, "Fejl i telnet URL",
T_BAD_TN3270_URL, "Fejl i tn3270 URL",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Number buiten het bereik",
T_BAD_STRING, "Onjuiste string",
T_EMPTY_STRING_NOT_ALLOWED, "Lege string niet toegestaan",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Configuratie fout",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Niet mogelijk om naar het configuratiebestand te schrijven",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Verbindingen",
T_MAX_CONNECTIONS, "Max verbindingen",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Max verbindingen naar één host",
@ -502,20 +503,22 @@ T_MANUAL, "Gebruikershandleiding",
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "Mail programma (% is vervangen met adres)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Telnet programma (% is vervangen met \"host\" of \"host port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Tn3270 programma (% is vervangen met \"host\" of \"host port\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Mail en telnet programma's",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Geen programma",
T_NO_PROGRAM_SPECIFIED_FOR, "Geen programma gespecificieerd voor",
T_MAIL, "mail",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Onjuiste mailto url",
T_BAD_TELNET_URL, "Onjuiste telnet url",
T_BAD_TN3270_URL, "Onjuiste tn3270 url",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Number out of range",
T_BAD_STRING, "Bad string",
T_EMPTY_STRING_NOT_ALLOWED, "Empty string not allowed",
T_BAD_IP_ADDRESS, "Bad IP address",
T_INVALID_IP_ADDRESS_SYNTAX, "Invalid IP address syntax",
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, "Unable to use local IP address",
T_CONFIG_ERROR, "Config error",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Unable to write to config file",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, "The file does not exist",
T_THE_FILE_HAS_INVALID_FORMAT, "The file has invalid format",
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, "Error initializing built-in certificates",
T_FAILED, "failed",
T_DNS_OPTIONS, "DNS options",
T_DNS_OVER_HTTPS_URL, "DNS over HTTPS (host or url)",
T_CONNECTIONS, "Connections",
T_MAX_CONNECTIONS, "Max connections",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Max connections to one host",
@ -502,20 +503,22 @@ T_MANUAL, "User's manual",
T_HOMEPAGE, "Home page",
T_CALIBRATION, "Calibration",
T_MAILTO_PROG, "Mail program (% is replaced with address)",
T_SHELL_PROG, "Shell for executing external commands (% is replaced with command)",
T_TELNET_PROG, "Telnet program (% is replaced with \"host\" or \"host port\")",
T_MAGNET_PROG, "Magnet program (% is replaced with URL)",
T_TN3270_PROG, "Tn3270 program (% is replaced with \"host\" or \"host port\")",
T_MMS_PROG, "MMS program (% is replaced with URL)",
T_MAGNET_PROG, "Magnet program (% is replaced with URL)",
T_GOPHER_PROG, "Goher program (% is replaced with URL)",
T_SHELL_PROG, "Shell for executing external commands (% is replaced with command)",
T_MAIL_AND_TELNET_PROGRAMS, "Mail and telnet programs",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Mail, telnet and shell programs",
T_NO_PROGRAM, "No program",
T_NO_PROGRAM_SPECIFIED_FOR, "No program specified for",
T_MAIL, "mail",
T_TELNET, "telnet",
T_MAGNET, "magnet",
T_TN3270, "tn3270",
T_MMS, "mms",
T_MAGNET, "magnet",
T_GOPHER, "gopher",
T_BAD_MAILTO_URL, "Bad mailto url",
T_BAD_TELNET_URL, "Bad telnet url",
T_BAD_TN3270_URL, "Bad tn3270 url",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, "C",
T_HK_IPV6_OPTIONS, "I",
T_HK_PROXIES, "P",
T_HK_SSL_OPTIONS, "L",
T_HK_DNS_OPTIONS, "D",
T_HK_HTTP_OPTIONS, "H",
T_HK_FTP_OPTIONS, "F",
T_HK_SMB_OPTIONS, "S",

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Number v
T_BAD_STRING, "Ebasobiv string",
T_EMPTY_STRING_NOT_ALLOWED, "Tühi string pole lubatud",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Konfiguratsiooni viga",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Ei saa kirjutada konfiguratsioonifaili",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Ühendused",
T_MAX_CONNECTIONS, "Maksimaalselt ühendusi",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Maksimaalselt ühendusi ühele hostile",
@ -502,20 +503,22 @@ T_MANUAL, "Kasutamisjuhend",
T_HOMEPAGE, "Kodulehekülg",
T_CALIBRATION, "Kalibreerimine",
T_MAILTO_PROG, "Mailiprogramm (% asendatakse aadressiga)",
T_SHELL_PROG, "Shell väliste programmide käivitamiseks (% asendatakse käsuga)",
T_TELNET_PROG, "Telneti programm (% asendatakse \"host\" või \"host port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Tn3270 programm (% asendatakse \"host\" või \"host port\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "Shell väliste programmide käivitamiseks (% asendatakse käsuga)",
T_MAIL_AND_TELNET_PROGRAMS, "Maili ja telneti programmid",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Maili, telneti ja shelli programmid",
T_NO_PROGRAM, "Pole programmi",
T_NO_PROGRAM_SPECIFIED_FOR, "Pole programmi märgitud",
T_MAIL, NULL,
T_TELNET, NULL,
T_MAGNET, NULL,
T_TN3270, NULL,
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Vigane mailto url",
T_BAD_TELNET_URL, "Vigane telnet url",
T_BAD_TN3270_URL, "Vigane tn3270 url",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Numero yli lukualueen",
T_BAD_STRING, "Laiton merkkijono",
T_EMPTY_STRING_NOT_ALLOWED, "Tyhjä merkkijono ei sallittu",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Asetuksissa virhe",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Asetustiedoston kirjoitus ei onnistu",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Yhteydet",
T_MAX_CONNECTIONS, "Yhteyksien maksimilkm",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Yhteyksien maksimilkm yhteen kohteeseen",
@ -502,20 +503,22 @@ T_MANUAL, "K
T_HOMEPAGE, "Kotisivu",
T_CALIBRATION, "Kalibrointi",
T_MAILTO_PROG, "Sähköpostiohjelma (% korvataan osoitteella)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Telnet-ohjelma (% korvataan \"osoitteella\" tai \"portilla\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Tn3270-ohjelma (% korvataan \"osoitteella\" tai \"portilla\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Sähköposti- tai telnetohjelmat",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Ei ohjelmaa",
T_NO_PROGRAM_SPECIFIED_FOR, "Ei ohjelmaa osoitettu",
T_MAIL, "sähköposti",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Laiton sähköposti-URL",
T_BAD_TELNET_URL, "Laiton telnet-URL",
T_BAD_TN3270_URL, "Laiton tn3270-URL",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Intervalle incorrect",
T_BAD_STRING, "Saisie erronnée",
T_EMPTY_STRING_NOT_ALLOWED, "Saisie obligatoire",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Erreur de configuration",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Impossible d'écrire la configuration",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Connexions",
T_MAX_CONNECTIONS, "Nombre maximum de connexions",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Nombre maximum de connexions à un serveur",
@ -502,20 +503,22 @@ T_MANUAL, "Manuel",
T_HOMEPAGE, "Page d'accueil",
T_CALIBRATION, "Calibration",
T_MAILTO_PROG, "Programme E-Mail (% = adresse)",
T_SHELL_PROG, "Programme Shell (% = commande)",
T_TELNET_PROG, "Programme Telnet (% = port hôte)",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Programme TN3270 (% = port hôte)",
T_MMS_PROG, "Programme MMS (% = URL)",
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "Programme Shell (% = commande)",
T_MAIL_AND_TELNET_PROGRAMS, "Clients e-mail/telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Clients e-mail/telnet/shell",
T_NO_PROGRAM, "Pas de programme",
T_NO_PROGRAM_SPECIFIED_FOR, "Aucun programme n'est défini pour ",
T_MAIL, "e-mail",
T_TELNET, "Telnet",
T_MAGNET, NULL,
T_TN3270, "TN3270",
T_MMS, "mms",
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Adresse e-mail incorrecte",
T_BAD_TELNET_URL, "Adresse Telnet incorrecte",
T_BAD_TN3270_URL, "Adresse TN3270 incorrecte",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "N
T_BAD_STRING, "Cadea non válida",
T_EMPTY_STRING_NOT_ALLOWED, "Non se permite unha cadea baleira",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Erro de configuración",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Non se puido escribir no ficheiro de configuración",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Conexións",
T_MAX_CONNECTIONS, "Máximo de conexións",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Máximo de conexións a unha máquina",
@ -502,20 +503,22 @@ T_MANUAL, "Manual de usuario",
T_HOMEPAGE, "Páxina de inicio",
T_CALIBRATION, "Calibrar",
T_MAILTO_PROG, "Programa de correo (% é remprazado pola dirección)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Programa de telnet (% é remprazado por \"máquina\" ou \"máquina porto\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Programa de Tn3270 (% é remprazado por \"máquina\" ou \"máquina porto\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Programas de correo e telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Sen programa",
T_NO_PROGRAM_SPECIFIED_FOR, "Sen programa especificado para",
T_MAIL, "correo",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "URL mailto errónea",
T_BAD_TELNET_URL, "URL telnet errónea",
T_BAD_TN3270_URL, "URL tn3270 errónea",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Ung
T_BAD_STRING, "Falsche Eingabe",
T_EMPTY_STRING_NOT_ALLOWED, "Werteingabe erforderlich",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Konfigurationsfehler",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Kann Konfigurationsdatei nicht schreiben",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Verbindungen",
T_MAX_CONNECTIONS, "Max. Verbindungen",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Max. Verbindungen zu einem Server",
@ -219,7 +220,7 @@ T_FRAME_AT_FULL_SCREEN, "Rahmen im Vollbildschirm",
T_SAVE_CLIPBOARD_TO_A_FILE, NULL,
T_LOAD_CLIPBOARD_FROM_A_FILE, NULL,
T_THE_CLIPBOARD_IS_EMPTY, NULL,
T_SAVE_HTML_OPTIONS, "HTML Sicherheit",
T_SAVE_HTML_OPTIONS, "Speichere HTML Optionen",
T_CHARACTER_SET, "Zeichensatz",
T_DEFAULT_CHARSET, NULL,
T_CACHE, "Cache",
@ -502,20 +503,22 @@ T_MANUAL, "Manual",
T_HOMEPAGE, "Homepage",
T_CALIBRATION, "Kalibration",
T_MAILTO_PROG, "Mail-Programm (% wird mit Email-Addresse ersetzt)",
T_SHELL_PROG, "Shell-Programm für externe Aufrufe (% wird mit Kommando ersetzt)",
T_TELNET_PROG, "Telnet-Programm (% wird mit \"host\" oder \"host port\" ersetzt)",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "TN3270-Programm (% wird mit \"host\" oder \"host port\" ersetzt)",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "Shell-Programm für externe Aufrufe (% wird mit Kommando ersetzt)",
T_MAIL_AND_TELNET_PROGRAMS, "Mail-/Telnet-Programme",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Mail-/Telnet-/Shell-Programme",
T_NO_PROGRAM, "Kein Programm",
T_NO_PROGRAM_SPECIFIED_FOR, "Programm nicht definiert für ",
T_MAIL, "Mail",
T_TELNET, "Telnet",
T_MAGNET, NULL,
T_TN3270, "TN3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "fehlerhafte Mailadresse",
T_BAD_TELNET_URL, "fehlerhafte Telnetadresse",
T_BAD_TN3270_URL, "fehlerhafte TN3270-Adresse",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "
T_BAD_STRING, "Ìç Ýãêõñï áëöáñéèìçôéêü",
T_EMPTY_STRING_NOT_ALLOWED, "Äåí åðéôñÝðåôáé êåíü áëöáñéèìçôéêü",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "ÓöÜëìá ñõèìßóåùí",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Áäýíáôç ç åããñáöÞ óôï áñ÷åßï ñõèìßóåùí",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "ÓõíäÝóåéò",
T_MAX_CONNECTIONS, "ÌÝãéóôïò áñéèìüò óõíäÝóåùí",
T_MAX_CONNECTIONS_TO_ONE_HOST, "ÌÝãéóôïò áñéèìüò óõíäÝóåùí óå Ýíá åîõðçñåôçôÞ",
@ -502,20 +503,22 @@ T_MANUAL, "
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "Ðñüãñáììá áëëçëïãñáößáò (ôï % áíôéêáèßóôáôáé ìå ôç äéåýèõíóç)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Ðñüãñáììá telnet (ôï % áíôéêáèßóôáôáé ìå \"åîõðçñåôçôÞò\" Þ \"åîõðçñåôçôÞò èýñá\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Ðñüãñáììá Tn3270 (ôï % áíôéêáèßóôáôáé ìå \"åîõðçñåôçôÞò\" Þ \"åîõðçñåôçôÞò èýñá\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "ÐñïãñÜììáôá áëëçëïãñáößáò êáé telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Äåí õðÜñ÷åé ðñüãñáììá",
T_NO_PROGRAM_SPECIFIED_FOR, "Äåí êáèïñßóôçêå ðñüãñáììá ãéá",
T_MAIL, "áëëçëïãñáößá",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "ÅóöáëìÝíï URL mailto",
T_BAD_TELNET_URL, "ÅóöáëìÝíï URL telnet",
T_BAD_TN3270_URL, "ÅóöáëìÝíï URL tn3270",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Sz
T_BAD_STRING, "Hibás szöveg",
T_EMPTY_STRING_NOT_ALLOWED, "Üres szöveg nem engedélyezett",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Beállítási hiba",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Nem írható a konfigurációs fájl",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Kapcsolatok",
T_MAX_CONNECTIONS, "Maximális kapcsolatok",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Maximális kapcsolatok egy kiszolgálóhoz",
@ -502,20 +503,22 @@ T_MANUAL, "K
T_HOMEPAGE, "Honlap",
T_CALIBRATION, "Kalibráció",
T_MAILTO_PROG, "Levelezõ program (% helyére írd be a címed)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Telnet program (% helyére írd be \'kiszolgáló\' vagy \'kiszolgáló port\')",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Tn3270 program (% helyére írd be \'kiszolgáló\' vagy \'kiszolgáló port\')",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Levelezõ és Telnet programok",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Nincs program",
T_NO_PROGRAM_SPECIFIED_FOR, "Nincs program beállítva",
T_MAIL, "levelezés",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Hibás levélküldési URL",
T_BAD_TELNET_URL, "Hibás telnet URL",
T_BAD_TN3270_URL, "Hibás tn3270 URL",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Tala ekki
T_BAD_STRING, "Ógildur strengur",
T_EMPTY_STRING_NOT_ALLOWED, "Tómur strengur óheimill",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Uppsetningarvilla",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Villa við ritun uppsetningarskrár",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Tengingar",
T_MAX_CONNECTIONS, "Hámark tenginga",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Hámark tenginga við hvern miðlara",
@ -502,20 +503,22 @@ T_MANUAL, "Handb
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "Póstforrit (% er skipt út fyrir netfang)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Telnet forrit (% er skipt út fyrir \"miðlari\" eða \"miðlari gátt\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Tn3270 forrit (% er skipt út fyrir \"miðlari\" eða \"miðlari gátt\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Póst- og telnet forrit",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Ekkert forrit",
T_NO_PROGRAM_SPECIFIED_FOR, "Ekkert forrit skilgreint fyrir",
T_MAIL, "póstur",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Rangt póstfang",
T_BAD_TELNET_URL, "Rangt netfang",
T_BAD_TN3270_URL, "Rangt netfang",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

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

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Numero fuori intervallo",
T_BAD_STRING, "Stringa sbagliata",
T_EMPTY_STRING_NOT_ALLOWED, "Stringa vuota non consentita",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Errore configurazione",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Non posso scrivere il file di configurazione",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Connessioni",
T_MAX_CONNECTIONS, "Connessioni massime",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Connessioni massime ad un host",
@ -502,20 +503,22 @@ T_MANUAL, "Manuale utente",
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "Programma mail (% e' sostituito con l'indirizzo)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Programma telnet (% e' sostituito con \"host\" o \"host port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Programma Tn3270 (% e' sostituito con \"host\" o \"host port\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Programmi mail e telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Nessun programma",
T_NO_PROGRAM_SPECIFIED_FOR, "Nessun programma definito per",
T_MAIL, "mail",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Errato mailto url",
T_BAD_TELNET_URL, "Errato telnet url",
T_BAD_TN3270_URL, "Errato tn3270 url",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Skai
T_BAD_STRING, "Neteisinga eilutë",
T_EMPTY_STRING_NOT_ALLOWED, "Eilutë negali bûti tuðèia",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Configûravimo klaida",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Neámanoma áraðyti á konfigûracijos failà",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Prisijungimai",
T_MAX_CONNECTIONS, "Daugiausia prisijungimø",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Daugiausia prisijungimø á tà patá hostà",
@ -502,20 +503,22 @@ T_MANUAL, "Vartotojo gidas",
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "Paðto programa (% pakeièiamas adresu)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Telnet'o programa (% pakeièiamas \"hostu\" arba \"hostu prievadu\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Tn3270 programa (% pakeièiamas \"hostu\" arba \"hostu prievadu\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Paðto ir telnet'o programos",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Nër programos",
T_NO_PROGRAM_SPECIFIED_FOR, "Nër programos",
T_MAIL, "paðtui",
T_TELNET, "telnet'ui",
T_MAGNET, NULL,
T_TN3270, "tn3270'ui",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Blogas paðto adresas",
T_BAD_TELNET_URL, "Blogas telnet'o adresas",
T_BAD_TN3270_URL, "Blogas tn3270 adresas",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Nummeret er utenfor omr
T_BAD_STRING, "Feil i tekststreng",
T_EMPTY_STRING_NOT_ALLOWED, "Tom tekststreng er ikke tillatt",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Konfigurasjonsfeil",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Kan ikke skrive til konfigurasjonsfil",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Tilkoblinger",
T_MAX_CONNECTIONS, "Maks antall tilkoblinger",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Maks antall tilkoblinger per vert",
@ -502,20 +503,22 @@ T_MANUAL, "Brukerveiledning",
T_HOMEPAGE, "Hjemmeside",
T_CALIBRATION, "Kalibrering",
T_MAILTO_PROG, "E-brevklient (% erstattes med adresse)",
T_SHELL_PROG, "Skall",
T_TELNET_PROG, "Telnetklient (% erstattes med \"vert\" eller \"vert port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Tn3270-program (% erstattes med \"vert\" eller \"vert port\")",
T_MMS_PROG, "MMS-program (% erstattes med nettadresse)",
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "Skall",
T_MAIL_AND_TELNET_PROGRAMS, "Program for e-brev og fjerninnlogging",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Program for e-brev, fjerninnlogging og skall",
T_NO_PROGRAM, "Ingen program",
T_NO_PROGRAM_SPECIFIED_FOR, "Ingen program er spesifisert",
T_MAIL, "e-brev",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, "mms",
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Feil i \"mailto\"-adresse",
T_BAD_TELNET_URL, "Feil i \"telnet\"-adresse",
T_BAD_TN3270_URL, "Feil i \"tn3270\"-adresse",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

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

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "N
T_BAD_STRING, "Sequência de caracteres inválida",
T_EMPTY_STRING_NOT_ALLOWED, "Não é permitida uma sequência de caracteres vazia",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Erro de configuração",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Não posso escrever no arquivo de configuração",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Conexões",
T_MAX_CONNECTIONS, NULL,
T_MAX_CONNECTIONS_TO_ONE_HOST, NULL,
@ -502,20 +503,22 @@ T_MANUAL, "Manual do Utilizador",
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, NULL,
T_SHELL_PROG, NULL,
T_TELNET_PROG, NULL,
T_MAGNET_PROG, NULL,
T_TN3270_PROG, NULL,
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, NULL,
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Nenhum programa",
T_NO_PROGRAM_SPECIFIED_FOR, "Nenhum programa foi especificado para",
T_MAIL, NULL,
T_TELNET, NULL,
T_MAGNET, NULL,
T_TN3270, NULL,
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, NULL,
T_BAD_TELNET_URL, NULL,
T_BAD_TN3270_URL, NULL,
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Num
T_BAD_STRING, "ªir greºit",
T_EMPTY_STRING_NOT_ALLOWED, "ªir vid neacceptabil",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Eroare de configurare",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Nu pot sã scriu fiºierul de configurere",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Conexiuni",
T_MAX_CONNECTIONS, "Conexiuni maxime",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Conexiuni maxime la un host",
@ -502,20 +503,22 @@ T_MANUAL, "Manualul utilizatorului",
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "Program de e-mail (% este înlocuit cu adresa)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Program de telnet (% este înlocuit cu \"Host\" ori \"Host port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Program de Tn3270 (% este înlocuit cu \"Host\" ori \"Host port\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Programe de e-mail si telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Nici un program",
T_NO_PROGRAM_SPECIFIED_FOR, "Program nespecificat pentru",
T_MAIL, "E-mail",
T_TELNET, "Telnet",
T_MAGNET, NULL,
T_TN3270, "Tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "URL greºit pentru e-mail",
T_BAD_TELNET_URL, "URL greºit pentru telnet",
T_BAD_TN3270_URL, "URL greºit pentru tn3270",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "
T_BAD_STRING, "îÅ×ÅÒÎÁÑ ÓÔÒÏËÁ",
T_EMPTY_STRING_NOT_ALLOWED, "ðÕÓÔÙÅ ÓÔÒÏËÉ ÎÅ ÄÏÐÕÓËÁÀÔÓÑ",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "ïÛÉÂËÁ ÎÁÓÔÒÏÊËÉ",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "îÅ×ÏÚÍÏÖÎÏ ÚÁÐÉÓÁÔØ × ÆÁÊÌ ÎÁÓÔÒÏÅË",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "óÏÅÄÉÎÅÎÉÑ(ÉÊ)",
T_MAX_CONNECTIONS, "íÁËÓ. ÞÉÓÌÏ ÓÏÅÄÉÎÅÎÉÊ",
T_MAX_CONNECTIONS_TO_ONE_HOST, "íÁËÓ. ÞÉÓÌÏ ÓÏÅÄÉÎÅÎÉÊ Ë ÏÄÎÏÍÕ ÓÅÒ×ÅÒÕ",
@ -502,20 +503,22 @@ T_MANUAL, "
T_HOMEPAGE, "äÏÍÁÛÎÑÑ ÓÔÒÁÎÉÞËÁ",
T_CALIBRATION, "ëÁÌÉÂÒÁÃÉÑ",
T_MAILTO_PROG, "ðÒÏÇÒÁÍÍÁ ÏÔÐÒÁ×ËÉ ÐÏÞÔÙ (% ÚÁÍÅÎÑÅÔÓÑ ÎÁ ÁÄÒÅÓ)",
T_SHELL_PROG, "ïÂÏÌÏÞËÁ (shell) ÄÌÑ ×ÎÅÛÎÉÈ ËÏÍÁÎÄ (% ÚÁÍÅÎÑÅÔÓÑ ËÏÍÁÎÄÏÊ)",
T_TELNET_PROG, "ðÒÏÇÒÁÍÍÁ telnet (% ÚÁÍÅÎÑÅÔÓÑ ÎÁ 'host' ÉÌÉ 'host port')",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "ðÒÏÇÒÁÍÍÁ tn3270 (% ÚÁÍÅÎÑÅÔÓÑ ÎÁ 'host' ÉÌÉ 'host port')",
T_MMS_PROG, "ðÒÏÇÒÁÍÍÁ ÄÌÑ MMS-ÐÒÏÔÏËÏÌÁ (% ÚÁÍÅÎÑÅÔÓÑ ÎÁ URL)",
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "ïÂÏÌÏÞËÁ (shell) ÄÌÑ ×ÎÅÛÎÉÈ ËÏÍÁÎÄ (% ÚÁÍÅÎÑÅÔÓÑ ËÏÍÁÎÄÏÊ)",
T_MAIL_AND_TELNET_PROGRAMS, "ðÒÏÇÒÁÍÍÙ ÄÌÑ ÐÏÞÔÙ É telnet'Á",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "ðÒÏÇÒÁÍÍÙ ÐÏÞÔÙ, telnet É ÏÂÏÌÏÞËÉ",
T_NO_PROGRAM, "îÅÔ ÐÒÏÇÒÁÍÍÙ",
T_NO_PROGRAM_SPECIFIED_FOR, "îÅ ÕËÁÚÁÎÁ ÐÒÏÇÒÁÍÍÁ ÄÌÑ",
T_MAIL, "ÐÏÞÔÙ",
T_TELNET, NULL,
T_MAGNET, NULL,
T_TN3270, NULL,
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "îÅ×ÅÒÎÙÊ ÁÄÒÅÓ mailto:",
T_BAD_TELNET_URL, "îÅ×ÅÒÎÙÊ ÁÄÒÅÓ telnet",
T_BAD_TN3270_URL, "îÅ×ÅÒÎÙÊ ÁÄÒÅÓ tn3270",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "
T_BAD_STRING, "»ÞèÐ ÝØáÚÐ",
T_EMPTY_STRING_NOT_ALLOWED, "¿àÐ×ÝÐ ÝØáÚÐ ÝØøÕ ÔÞ×ÒÞùÕÝÐ",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "³àÕèÚÐ ã ßÞÔÕèÐÒÐúØÜÐ",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "½Õ ÜÞÓã ÔÐ ãßØèÕÜ ÔÐâÞâÕÚã áÐ ßÞÔÕèÐÒÐúØÜÐ",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "¿ÞÒÕ×ØÒÐúÐ",
T_MAX_CONNECTIONS, "½ÐøÒØèÕ ßÞÒÕ×ØÒÐúÐ",
T_MAX_CONNECTIONS_TO_ONE_HOST, "½ÐøÒØèÕ ßÞÒÕ×ØÒÐúÐ áÐ øÕÔÝØÜ ÔÞÜÐûØÝÞÜ",
@ -502,20 +503,22 @@ T_MANUAL, "
T_HOMEPAGE, "´ÞÜÐûÐ áâàÐÝØæÐ",
T_CALIBRATION, "ºÐÛØÑàØáÐúÕ",
T_MAILTO_PROG, "¿àÞÓàÐÜ ×Ð ßÞèâã (% áÕ ×ÐÜÕúãøÕ ÐÔàÕáÞÜ)",
T_SHELL_PROG, "©ãáÚÐ ×Ð Ø×ÒàèÐÒÐúÕ áßÞùÐèúØå ÝÐàÕÔÑØ (×ÝÐÚ % ûÕ ÑØâØ ×ÐÜÕúÕÝ ÝÐàÕÔÑÞÜ)",
T_TELNET_PROG, "¿àÞÓàÐÜ ×Ð âÕÛÝÕâ (% áÕ ×ÐÜÕúãøÕ ÝØáÚÞÜ \"ÔÞÜÐûØÝ\" ØÛØ \"ÔÞÜÐûØÝ ßÞàâ\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "¿àÞÓàÐÜ ×Ð tn3270 (% áÕ ×ÐÜÕúãøÕ ÝØáÚÞÜ \"ÔÞÜÐûØÝ\" ØÛØ \"ÔÞÜÐûØÝ ßÞàâ\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "©ãáÚÐ ×Ð Ø×ÒàèÐÒÐúÕ áßÞùÐèúØå ÝÐàÕÔÑØ (×ÝÐÚ % ûÕ ÑØâØ ×ÐÜÕúÕÝ ÝÐàÕÔÑÞÜ)",
T_MAIL_AND_TELNET_PROGRAMS, "¿àÞÓàÐÜØ ×Ð ßÞèâã Ø âÕÛÝÕâ",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "¿àÞÓàÐÜØ ×Ð ßÞèâã, âÕÛÝÕâ Ø ùãáÚã",
T_NO_PROGRAM, "½ÕÜÐ ßàÞÓàÐÜÐ",
T_NO_PROGRAM_SPECIFIED_FOR, "½ØøÕ ×ÐÔÐâ ßàÞÓàÐÜ ×Ð",
T_MAIL, "ßÞèâã",
T_TELNET, "âÕÛÝÕâ",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "»Þè mailto ÃÀ»",
T_BAD_TELNET_URL, "»Þè telnet ÃÀ»",
T_BAD_TN3270_URL, "»Þè tn3270 ÃÀ»",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "
T_BAD_STRING, "Chybný re»azec",
T_EMPTY_STRING_NOT_ALLOWED, "Prázdny re»azec nie je dovolený!",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Chyba v konfigurácii",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Nemô¾em zapisova» do konfig. súboru",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Spojenie",
T_MAX_CONNECTIONS, "Maximálny poèet spojení",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Maximálny poèet spojení na jeden poèítaè",
@ -502,20 +503,22 @@ T_MANUAL, "Manu
T_HOMEPAGE, "Domovská stránka",
T_CALIBRATION, "Kalibrácia",
T_MAILTO_PROG, "Program pre mail (% je nahradene adresou)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Program pre telnet (% je nahradene menom stroje a prípadne portom)",
T_MAGNET_PROG, "Program pre magnet (% je nahradene URL)",
T_TN3270_PROG, "Program pre tn3270 (% je je nahradene menom stroje a prípadne portom)",
T_MMS_PROG, "Program pre mms (% je nahradene URL)",,
T_MAGNET_PROG, "Program pre magnet (% je nahradene URL)",
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Programy pre mail a telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Programy pre mail a telnet a shell",
T_NO_PROGRAM, "®iadny program",
T_NO_PROGRAM_SPECIFIED_FOR, "Nie je nastavený ¾iadny program pre",
T_MAIL, "mail",
T_TELNET, "telnet",
T_MAGNET, "magnet",
T_TN3270, "tn3270",
T_MMS, "mms",
T_MAGNET, "magnet",
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Chybné mailové URL",
T_BAD_TELNET_URL, " Chybné terminálove URL (telnet)",
T_BAD_TN3270_URL, " Chybné terminálove URL (tn3270)",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "N
T_BAD_STRING, "Cadena incorrecta",
T_EMPTY_STRING_NOT_ALLOWED, "No se permite cadena vacía",
T_BAD_IP_ADDRESS, "Dirección IP incorrecta",
T_INVALID_IP_ADDRESS_SYNTAX, "Sintáxis de dirección IP no válida",
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, "Imposible usar dirección IP local",
T_CONFIG_ERROR, "Error de configuración",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Imposible escribir en archivo de configuración",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, "Archivo no encontrado",
T_THE_FILE_HAS_INVALID_FORMAT, "Archivo con formato no válido",
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, "Error al inicializar los certificados incorporados",
T_FAILED, "Ha fallado",
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Conexiones",
T_MAX_CONNECTIONS, "Máximo de conexiones",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Máximo de conexiones a una máquina",
@ -502,20 +503,22 @@ T_MANUAL, "Manual de usuario",
T_HOMEPAGE, "Página de inicio",
T_CALIBRATION, "Calibración",
T_MAILTO_PROG, "Programa de correo (% se reemplaza por la dirección)",
T_SHELL_PROG, "Programa shell para ejecutar comandos externos (% se reemplaza por el comando)",
T_TELNET_PROG, "Programa de telnet (% se reemplaza por \"máquina\" o \"máquina puerto\")",
T_MAGNET_PROG, "Programa magnet (% se reemplaza con URL)",
T_TN3270_PROG, "Programa Tn3270 (% se reemplaza con \"máquina\" o \"máquina puerto\")",
T_MMS_PROG, "Programa MMS (% se reemplaza con URL)",
T_MAGNET_PROG, "Programa magnet (% se reemplaza con URL)",
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "Programa shell para ejecutar comandos externos (% se reemplaza por el comando)",
T_MAIL_AND_TELNET_PROGRAMS, "Programas de correo y telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Programas de correo, telnet y shell",
T_NO_PROGRAM, "Sin programa",
T_NO_PROGRAM_SPECIFIED_FOR, "Sin programa especificado para",
T_MAIL, "correo",
T_TELNET, "telnet",
T_MAGNET, "magnet",
T_TN3270, "tn3270",
T_MMS, "mms",
T_MAGNET, "magnet",
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Dirección de correo incorrecta",
T_BAD_TELNET_URL, "URL de telnet incorrecta",
T_BAD_TN3270_URL, "URL de TN3270 incorrecta",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Nummer i felaktigt intervall",
T_BAD_STRING, "Felaktig sträng",
T_EMPTY_STRING_NOT_ALLOWED, "Tom sträng ej tillåten",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Konfigurationsfel",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Kan inte skriva till konfigurationsfilen",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "uppkopplingar",
T_MAX_CONNECTIONS, "Max anslutningar",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Max anslutningar till värd",
@ -502,20 +503,22 @@ T_MANUAL, "Bruksanvisning",
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "Epostprogram (% ersätts med adress)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "Telnetprogram (% ersätts med \"värd\" eller \"värd port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Tn3270-program (% ersätts med \"värd\" eller \"värd port\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "Epost- och telnetprogram",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "Inget program",
T_NO_PROGRAM_SPECIFIED_FOR, "Inget program angett för",
T_MAIL, "epost",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, "tn3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Felaktig mailto-URL",
T_BAD_TELNET_URL, "Felaktig telnet-URL",
T_BAD_TN3270_URL, "Felaktig tn3270-URL",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Ung
T_BAD_STRING, "Falschi Igabe",
T_EMPTY_STRING_NOT_ALLOWED, "Werte Igabe erforderlich",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Konfigurationsfehler",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Cha Konfigurationsdatei nöd schriebe",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "Verbindige",
T_MAX_CONNECTIONS, "Max. Verbindige",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Max. Verbindige zumene Server",
@ -219,7 +220,7 @@ T_FRAME_AT_FULL_SCREEN, "Rahme im Vollbildschirm",
T_SAVE_CLIPBOARD_TO_A_FILE, NULL,
T_LOAD_CLIPBOARD_FROM_A_FILE, NULL,
T_THE_CLIPBOARD_IS_EMPTY, NULL,
T_SAVE_HTML_OPTIONS, "HTML Sicherheit",
T_SAVE_HTML_OPTIONS, "Speichere HTML Optionen",
T_CHARACTER_SET, "Zeichesatz",
T_DEFAULT_CHARSET, NULL,
T_CACHE, "Cache",
@ -502,20 +503,22 @@ T_MANUAL, "Manual",
T_HOMEPAGE, "Homepage",
T_CALIBRATION, "Kalibration",
T_MAILTO_PROG, "Mail-Programm (% wird mit Email-Addresse ersetzt)",
T_SHELL_PROG, "Shell-Programm für externi Ufrüef (% wird mit Kommando ersetzt)",
T_TELNET_PROG, "Telnet-Programm (% wird mit \"host\" oder \"host port\" ersetzt)",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "TN3270-Programm (% wird mit \"host\" oder \"host port\" ersetzt)",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "Shell-Programm für externi Ufrüef (% wird mit Kommando ersetzt)",
T_MAIL_AND_TELNET_PROGRAMS, "Mail-/Telnet-Programme",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Mail-/Telnet-/Shell-Programme",
T_NO_PROGRAM, "Keis Programm",
T_NO_PROGRAM_SPECIFIED_FOR, "Programm nöd definiert für ",
T_MAIL, "Mail",
T_TELNET, "Telnet",
T_MAGNET, NULL,
T_TN3270, "TN3270",
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "fehlerhafti Mailadresse",
T_BAD_TELNET_URL, "fehlerhafti Telnetadresse",
T_BAD_TN3270_URL, "fehlerhafti TN3270-Adresse",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -1,7 +1,7 @@
T__CHAR_SET, "8859-9",
T__LANGUAGE, "Turkish",
T__ACCEPT_LANGUAGE, "tr",
T__LOCALE_CODE, "tr_TR",
T__LOCALE_CODE, "tr_TR,tr_CY",
T__DEFAULT_CHAR_SET, "ISO-8859-9",
T_OK, "Tamam",
T_CANCEL, "Ýptal",
@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Say
T_BAD_STRING, "Hatalý dizi",
T_EMPTY_STRING_NOT_ALLOWED, "Boþ diziye izin verilmiyor",
T_BAD_IP_ADDRESS, "Hatalý IP adresi",
T_INVALID_IP_ADDRESS_SYNTAX, "Geçersiz IP adresi sözdizimi",
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, "Yerel IP adresi kullanýlamýyor",
T_CONFIG_ERROR, "Yapýlandýrma hatasý",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Yapýlandýrma dosyasýna yazýlamýyor",
@ -55,10 +54,10 @@ T_THREADS5, "i
T_CONFIGURATION_DIRECTORY, "Yapýlandýrma dizini",
T_NONE, "Yok",
T_KEYS, "Düðmeler",
T_KEYS_DESC, "ESC menüyü göster\n^C, q çık\np, l yukarı kaydır, aşağı kaydır\n[, ] sağa kaydır, sola kaydır\nyukarı, aşağı bağlantıyı seç\n-> bağlantıyı izle\n<- geri git\ng adrese git\nG şimdiki adresten yola çıkarak yeni bir adrese git\n/ ara\n? geriye doğru ara\nn tekrar ara\nN geriye doğru tekrar ara\n= belge bilgisi\n\\ kaynağını göster\nd indir",
T_KEYS_DESC, "ESC menüyü göster\n^C, q çık\np, l yukarı kaydır, aşağı kaydır\n[, ] sağa kaydır, sola kaydır\nyukarı, aşağı bağlantıyı seç\n-> bağlantıyı izle\n<- geri git\ng adrese git\nG şimdiki adresten yola çıkarak yeni bir adrese git\n/ ara\n? geriye doğru ara\nn yeniden ara\nN geriye doğru yeniden ara\n= belge bilgisi\n\\ kaynağını göster\nd indir",
T_KEYS_BRAILLE_DESC, "a, w imleç durum satýrýna veya baþlýðýna\n{, } imleç satýrýn baþlangýcýna/sonuna\n^Y,^T,y,t,^O git: önceki/sonraki baðlantý/sözcük/form girdisi",
T_COPYING, "Telif hakký",
T_COPYING_DESC, "Bağlantılar " VERSION_STRING "\n\n" LINKS_COPYRIGHT "\n\n Bu özgür bir yazılımdır; GNU Genel Kamu Lisansı altında dağıtılabilir ve/veya geliştirilebilir.",
T_COPYING_DESC, "Bağlantılar " VERSION_STRING "\n\n" LINKS_COPYRIGHT "\n\n Links, özgür bir yazılımdır; GNU Genel Kamu Lisansı altında dağıtılabilir ve/veya geliştirilebilir.",
T_RESOURCES, "Kaynaklar",
T_MEMORY_CACHE, "Önbellek dosyasý",
T_DECOMPRESSED_CACHE, "Çýkartýlmýþ önbellek",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, "Dosya mevcut de
T_THE_FILE_HAS_INVALID_FORMAT, "Dosya biçimi geçersiz",
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, "Gömülü sertifikalar kullanýlýrken hata",
T_FAILED, "baþarýsýz oldu",
T_DNS_OPTIONS, "DNS seçenekleri",
T_DNS_OVER_HTTPS_URL, "HTTPS üzerinden DNS (makine veya url)",
T_CONNECTIONS, "Baðlantýlar",
T_MAX_CONNECTIONS, "En çok baðlantý",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Bir makineye en çok baðlantý",
@ -162,7 +163,7 @@ T_AGGRESSIVE_CACHE, "Agresif
T_HTML_OPTIONS, "HTML seçenekleri",
T_DISPLAY_TABLES, "Tablolarý göster",
T_DISPLAY_FRAMES, "Çerçeveleri göster",
T_BREAK_LONG_LINES, "Uzun satırları kır",
T_BREAK_LONG_LINES, "Uzun satırları kes",
T_DISPLAY_IMAGES, "Görselleri göster",
T_DISPLAY_IMAGE_FILENAMES, "Görsel dosya adlarýný göster",
T_DISPLAY_LINKS_TO_IMAGES, "Görsellere olan baðlantýlarý göster",
@ -171,8 +172,8 @@ T_NUMBERED_LINKS, "Ba
T_AUTO_REFRESH, "Kendiliðinden yenile",
T_TARGET_IN_NEW_WINDOW, "Baðlantýlarýn yeni pencerede açýlmasýna izin ver",
T_TEXT_MARGIN, "Metin boþluðu",
T_DEFAULT_CODEPAGE, "Öntanımlı karakter seti",
T_IGNORE_CHARSET_INFO_SENT_BY_SERVER, "Sunucu tarafından belirlenmiş karakter setini önemseme",
T_DEFAULT_CODEPAGE, "Öntanımlı karakter kümesi",
T_IGNORE_CHARSET_INFO_SENT_BY_SERVER, "Sunucu tarafından belirlenmiş karakter kümesini önemseme",
T_TEXT_COLOR, "Metin",
T_LINK_COLOR, "Baðlantý",
T_BACKGROUND_COLOR, "Arka plan",
@ -213,7 +214,7 @@ T_SEARCH, "Ara",
T_SEARCH_BACK, "Geriye doðru ara",
T_FIND_NEXT, "Sonrakini bul",
T_FIND_PREVIOUS, "Öncekini bul",
T_TOGGLE_HTML_PLAIN, "HTML/düz metin aç/kapa",
T_TOGGLE_HTML_PLAIN, "HTML/düz metin aç/kapat",
T_DOCUMENT_INFO, "Belge bilgisi",
T_FRAME_AT_FULL_SCREEN, "Çerçeve tam ekran",
T_SAVE_CLIPBOARD_TO_A_FILE, "Panoyu bir dosyaya kaydet",
@ -267,7 +268,7 @@ T_DATA_MODIFIED, "Veri d
T_BAD_URL_SYNTAX, "Hatalý adres yazýmý",
T_BAD_PROXY_SYNTAX, "Hatalý vekil sunucu yazýmý",
T_RECEIVE_TIMEOUT, "Zaman aþýmý",
T_REQUEST_MUST_BE_RESTARTED, "İstek tekrar yapılmalı",
T_REQUEST_MUST_BE_RESTARTED, "İstek yeniden yapılmalı",
T_CANT_GET_SOCKET_STATE, "Uç durumu alýnamýyor",
T_CYCLIC_REDIRECT, "Çevrimli yeniden yönlendirme",
T_TOO_LARGE_FILE, "Dosya çok büyük",
@ -345,12 +346,12 @@ T_OPEN, "A
T_OPEN_WITH, "Birlikte aç",
T_DO_YOU_WANT_TO_FOLLOW_REDIRECT_AND_POST_FORM_DATA_TO_URL, "Yönlendirmeyi izlemek ve form bilgisini adrese göndermek istiyor musunuz",
T_DO_YOU_WANT_TO_POST_FORM_DATA_TO_URL, "Form bilgisini adrese göndermek istiyor musunuz",
T_DO_YOU_WANT_TO_REPOST_FORM_DATA_TO_URL, "Form bilgisini adrese tekrar göndermek istiyor musunuz",
T_DO_YOU_WANT_TO_REPOST_FORM_DATA_TO_URL, "Form bilgisini adrese yeniden göndermek istiyor musunuz",
T_WARNING, "Uyarý",
T_ERROR, "Hata",
T_WELCOME, "Hoþ geldiniz",
T_WELCOME_TO_LINKS, "Links'e hoþ geldiniz!",
T_BASIC_HELP, "Menü için ESC ye basın. Kullanıcı kılavuzu için Yardım -> Kılavuz'u seçin.",
T_BASIC_HELP, "Menü için ESC'ye basın. Kullanıcı kılavuzu için Yardım -> Kılavuz'u seçin.",
T_LABEL, "Etiketler",
T_CONTENT_TYPES, "Content-Type(s)",
T_PROGRAM__IS_REPLACED_WITH_FILE_NAME, "Program ('%' dosya adý ile deðiþtirildi)",
@ -371,7 +372,7 @@ T_ERROR_WHILE_POSTING_FORM, "Formu g
T_COULD_NOT_GET_FILE, "Dosya alýnamýyor",
T_READING_FILES_IS_NOT_ALLOWED, "Dosya okumaya izin verilmiyor",
T_NO_PREVIOUS_SEARCH, "Geri arama yok",
T_SEARCH_STRING_NOT_FOUND, "Aranan söz dizimi bulunamadı",
T_SEARCH_STRING_NOT_FOUND, "Aranan sözdizim bulunamadı",
T_SAVE_ERROR, "Kaydetme hatasý",
T_ERROR_WRITING_TO_FILE, "Dosyaya yazarken hata",
T_ERROR_READING_THE_FILE, "Dosya okunurken hata",
@ -453,25 +454,25 @@ T_BOOKMARKS, "Yer imleri",
T_BOOKMARK, "yer imi",
T_ADD_BOOKMARK, "Yer imi ekle",
T_ADD_ASSOCIATION, "Ýliþkilendirme ekle",
T_ADD_EXTENSION, "Genişletme ekle",
T_ADD_EXTENSION, "Uzantı ekle",
T_ADD_FOLDER, "Klasör ekle",
T_BOOKMARK_TITLE, "Yer imi baþlýðý",
T_EDIT_BOOKMARK, "Yer imini düzenle",
T_EDIT_ASSOCIATION, "Ýliþkilendirmeyi düzenle",
T_EDIT_EXTENSION, "Genişletmeyi düzenle",
T_EDIT_EXTENSION, "Uzantıyı düzenle",
T_DELETE_BOOKMARK, "Yer imini sil",
T_EDIT_FOLDER, "Klasörü düzenle",
T_DELETE_FOLDER, "Klasörü sil",
T_NOT_EMPTY_SURE_DELETE, " boş değil. Silmek istediğinizden emin misiniz?",
T_NOT_EMPTY_SURE_DELETE, " boş değil. Silmek istediğinize emin misiniz?",
T_BOOKMARK_MANAGER, "Yer imi Yöneticisi",
T_ASSOCIATIONS_MANAGER, "Ýliþkilendirmeler Yöneticisi",
T_EXTENSIONS_MANAGER, "Genişletmeler Yöneticisi",
T_EXTENSIONS_MANAGER, "Uzantılar Yöneticisi",
T_url, "adres",
T_NNAME, "Ad",
T_EXIT_LINKS, "Links'ten çýk",
T_DO_YOU_REALLY_WANT_TO_CLOSE_WINDOW, "Pencereyi kapatmak istediğinizden emin misiniz?",
T_DO_YOU_REALLY_WANT_TO_CLOSE_WINDOW, "Pencereyi kapatmak istediğinize emin misiniz?",
T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS, "Links'ten çýkmak istediðinize emin misiniz?",
T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS_AND_TERMINATE_ALL_DOWNLOADS, "Links'ten çıkmak (ve indirmeleri durdurmak) istediğinizden emin misiniz?",
T_DO_YOU_REALLY_WANT_TO_EXIT_LINKS_AND_TERMINATE_ALL_DOWNLOADS, "Links'ten çıkmak (ve indirmeleri durdurmak) istediğinize emin misiniz?",
T_HTTP_OPTIONS, "HTTP seçenekleri",
T_FTP_OPTIONS, "FTP seçenekleri",
T_SMB_OPTIONS, "SMB seçenekleri",
@ -484,13 +485,13 @@ T_RETRY_ON_INTERNAL_ERRORS, "
T_HEADER_OPTIONS, "Baþlýk seçenekleri",
T_HTTP_HEADER_OPTIONS, "HTTP baþlýk seçenekleri",
T_FAKE_FIREFOX, "Kendini Firefox olarak göster (gizliliði iyileþtirir)",
T_DO_NOT_TRACK, "\"Beni Takip Etme\" isteği gönder",
T_REFERER_NONE, "Referansçı yok",
T_REFERER_SAME_URL, "İstenen URL'yi referansçı olarak gönder",
T_REFERER_FAKE, "Sabit referansçı",
T_REFERER_REAL_SAME_SERVER, "Gerçek referansçıyı yalnızca aynı sunucuya gönder",
T_REFERER_REAL, "Gerçek referansçıyı gönder (güvensiz işlem!)",
T_FAKE_REFERER, "Sabit HTTP referansçısı",
T_DO_NOT_TRACK, "\"Beni İzleme\" isteği gönder",
T_REFERER_NONE, "Başvurucu yok",
T_REFERER_SAME_URL, "İstenen URL'yi başvurucu olarak gönder",
T_REFERER_FAKE, "Sabit başvurucu",
T_REFERER_REAL_SAME_SERVER, "Gerçek başvurucuyu yalnızca aynı sunucuya gönder",
T_REFERER_REAL, "Gerçek başvurucuyu gönder (güvensiz işlem!)",
T_FAKE_REFERER, "Sabit HTTP başvurucusu",
T_FAKE_USERAGENT, "Kullanýcý kimliðini baþka göster",
T_EXTRA_HEADER, "Ek baþlýk dizisi (\\ yeni satýr demektir)",
T_PASSWORD_FOR_ANONYMOUS_LOGIN, "Adsýz kullanýcý için þifre",
@ -502,27 +503,29 @@ T_MANUAL, "Kullan
T_HOMEPAGE, "Ana sayfa",
T_CALIBRATION, "Kalibrasyon",
T_MAILTO_PROG, "Posta programý (% adres ile deðiþtirilir)",
T_SHELL_PROG, "Dış komutları çalıştırmak için kabuk (% kabuk ile değiştirilir)",
T_TELNET_PROG, "Telnet programý (% \"makine\" veya \"makine kapýsý\" ile deðiþtirilir)",
T_MAGNET_PROG, "Mıknatıs programı (% URL ile değiştirilir)",
T_TN3270_PROG, "Tn3270 programý (% \"makine\" veya \"makine kapýsý\" ile deðiþtirilir)",
T_MMS_PROG, "MMS programý (% URL ile deðiþtirilir)",
T_MAGNET_PROG, "Mıknatıs programı (% URL ile değiştirilir)",
T_GOPHER_PROG, "Gopher programı (% URL ile değiştirilir)",
T_SHELL_PROG, "Dış komutları çalıştırmak için kabuk (% kabuk ile değiştirilir)",
T_MAIL_AND_TELNET_PROGRAMS, "Posta ve Telnet Programlarý",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Posta, Telnet ve kabuk Programlarý",
T_NO_PROGRAM, "Program yok",
T_NO_PROGRAM_SPECIFIED_FOR, "Program belirlenmemiþ:",
T_MAIL, "posta",
T_TELNET, "telnet",
T_MAGNET, "mıknatıs",
T_TN3270, "tn3270",
T_MMS, "mms",
T_MAGNET, "mıknatıs",
T_GOPHER, "gopher",
T_BAD_MAILTO_URL, "Adrese posta gönder",
T_BAD_TELNET_URL, "Hatalý Telnet adresi",
T_BAD_TN3270_URL, "Hatalý tn3270 adresi",
T_MMS_URL_CONTAINS_INACCEPTABLE_CHARACTERS, "MMS URL'si izin verilmeyen karakterler içeriyor",
T_AUTHORIZATION_REQUIRED, "Kimlik doðrulama gerekli",
T_PROXY_AUTHORIZATION_REQUIRED, "Vekil kimlik doðrulamasý gerekli",
T_USERID, "Kullanıcı ID'si",
T_USERID, "Kullanıcı kimliği",
T_PASSWORD, "Parola",
T_ENTER_USERNAME, "Kullanýcý adýný gir: ",
T_AT, "/",
@ -531,12 +534,12 @@ T_DOESNT_HAVE_A_VALID_CERTIFICATE, " ge
T_USES_DOWNGRADED_METHOD, " eskimiþ SSL/TLS yöntemleri kullanýyor. Yine de baðlanmak istiyor musunuz?",
T_USES_INSECURE_CIPHER, " güvensiz þifreleme kullanýyor. Yine de baðlanmak istiyor musunuz?",
T_WAITING_FOR_REDIRECT_CONFIRMATION, "Yönlendirme onayý için bekleniyor",
T_DECOMPRESSION_ERROR, "Sıkıştırma açım hatası",
T_DECOMPRESSION_ERROR, "Sıkıştırma açma hatası",
T_ERROR_DECOMPRESSING_, "Þu sýkýþtýrma açýlýrken: ",
T__wITH_, " ile ",
T_COMPRESSED_ERROR, "Sýkýþtýrýlmýþ veride hata",
T_UNKNOWN_COMPRESSION_METHOD, "Bilinmeyen sýkýþtýrma yöntemi",
T_SURE_DELETE, "Silmek istediğinizden emin misiniz?",
T_SURE_DELETE, "Silmek istediğinize emin misiniz?",
T_BOOKMARKS_ALREADY_IN_USE, "Yer imleri halihazýrda kullanýmda!",
T_ASSOCIATIONS_ALREADY_IN_USE, "Ýliþkilendirmeler halihazýrda kullanýmda!",
T_EXTENSIONS_ALREADY_IN_USE, "Geniþletmeler halihazýrda kullanýmda!",
@ -622,7 +625,7 @@ T_BLOCK_URL, "G
T_BLOCK_LIST, "Engellenmiþ görseller",
T_BLOCKED_IMAGE, "Engellenmiþ görseller",
T_BLOCK_LIST_IN_USE, "Engellenmiþ görseller halihazýrda açýk",
T_BLOCK_LIST_MANAGER, "Görsel engelleme yöneticisi",
T_BLOCK_LIST_MANAGER, "Görsel Engelleme Yöneticisi",
T_BLOCK_ADD, "Engellemek için görsel URL'si girin",
T_BLOCK_EDIT, "Görsel URL'sini düzenle",
T_BLOCK_DELETE, "Kaldýr",
@ -668,9 +671,10 @@ T_HK_CONNECTIONS, "R",
T_HK_IPV6_OPTIONS, "6",
T_HK_PROXIES, "V",
T_HK_SSL_OPTIONS, "S",
T_HK_DNS_OPTIONS, "D",
T_HK_HTTP_OPTIONS, "H",
T_HK_FTP_OPTIONS, "F",
T_HK_SMB_OPTIONS, "S",
T_HK_SMB_OPTIONS, "M",
T_HK_JAVASCRIPT_OPTIONS, "J",
T_HK_MISCELANEOUS_OPTIONS, "S",
T_HK_COOKIES, "Z",
@ -678,7 +682,7 @@ T_HK_FONTS, "Y",
T_HK_CACHE, "N",
T_HK_MAIL_AND_TELNEL, "P",
T_HK_ASSOCIATIONS, "L",
T_HK_FILE_EXTENSIONS, "Z",
T_HK_FILE_EXTENSIONS, "D",
T_HK_BLOCK_LIST, "G",
T_HK_SAVE_OPTIONS, "T",
T_HK_ABOUT, "H",

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "
T_BAD_STRING, "îÅÐÒÁ×ÉÌØÎÉÊ ÒÑÄÏË",
T_EMPTY_STRING_NOT_ALLOWED, "ðÏÒÏÖΦ ÒÑÄËÉ ÎÅÄÏÐÕÓÔÉͦ",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "ðÏÍÉÌËÁ ËÏÎƦÇÕÒÁæ§",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "îÅ ÍÏÖÕ ÚÁÐÉÓÁÔÉ ÆÁÊÌ ËÏÎƦÇÕÒÁæ§",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "ú'¤ÄÎÁÎÎÑ",
T_MAX_CONNECTIONS, "íÁËÓ. ÞÉÓÌÏ Ú'¤ÄÎÁÎØ",
T_MAX_CONNECTIONS_TO_ONE_HOST, "íÁËÓ. ÞÉÓÌÏ Ú'¤ÄÎÁÎØ Ú ÏÄÎÉÍ ÓÅÒ×ÅÒÏÍ",
@ -502,20 +503,22 @@ T_MANUAL, "
T_HOMEPAGE, NULL,
T_CALIBRATION, NULL,
T_MAILTO_PROG, "ðÏÛÔÏ×Á ÐÒÏÇÒÁÍÁ (% ÚÁͦÎÀ¤ÔØÓÑ ÁÄÒÅÓÏÀ)",
T_SHELL_PROG, NULL,
T_TELNET_PROG, "ðÒÏÇÒÁÍÁ telnet (% ÚÁͦÎÀ¤ÔØÓÑ ÎÁ 'host' ÁÂÏ 'host port')",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "ðÒÏÇÒÁÍÁ tn3270 (% ÚÁͦÎÀ¤ÔØÓÑ ÎÁ 'host' ÁÂÏ 'host port')",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, NULL,
T_MAIL_AND_TELNET_PROGRAMS, "ðÒÏÇÒÁÍÉ ÄÌÑ ÐÏÛÔÉ ÔÁ telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, NULL,
T_NO_PROGRAM, "îÅÍÁ¤ ÐÒÏÇÒÁÍÉ",
T_NO_PROGRAM_SPECIFIED_FOR, "îÅ ×ËÁÚÁÎÏ ÐÒÏÇÒÁÍÕ ÄÌÑ",
T_MAIL, "ÐÏÛÔÉ",
T_TELNET, NULL,
T_MAGNET, NULL,
T_TN3270, NULL,
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "îÅÐÒÁ×ÉÌØÎÁ ÁÄÒÅÓÁ mailto:",
T_BAD_TELNET_URL, "îÅÐÒÁ×ÉÌØÎÁ ÁÄÒÅÓÁ telnet",
T_BAD_TN3270_URL, "îÅÐÒÁ×ÉÌØÎÁ ÁÄÒÅÓÁ tn3270",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -11,7 +11,6 @@ T_NUMBER_OUT_OF_RANGE, "Li
T_BAD_STRING, "Njekorektny wuraz",
T_EMPTY_STRING_NOT_ALLOWED, "Nulowy wuraz njedowoleny",
T_BAD_IP_ADDRESS, NULL,
T_INVALID_IP_ADDRESS_SYNTAX, NULL,
T_UNABLE_TO_USE_LOCAL_IP_ADDRESS, NULL,
T_CONFIG_ERROR, "Zmylk konfiguracije",
T_UNABLE_TO_WRITE_TO_CONFIG_FILE, "Njemó¾u do konfiguraciskeje dataje pisaæ",
@ -141,6 +140,8 @@ T_THE_FILE_DOES_NOT_EXIST, NULL,
T_THE_FILE_HAS_INVALID_FORMAT, NULL,
T_ERROR_INITIALIZING_BUILT_IN_CERTIFICATES, NULL,
T_FAILED, NULL,
T_DNS_OPTIONS, NULL,
T_DNS_OVER_HTTPS_URL, NULL,
T_CONNECTIONS, "zwiskow",
T_MAX_CONNECTIONS, "Maksimalna lièba zwiskow",
T_MAX_CONNECTIONS_TO_ONE_HOST, "Maksimalna lièba zwiskow z jednym serwerom",
@ -502,20 +503,22 @@ T_MANUAL, "P
T_HOMEPAGE, "Domjaca strona",
T_CALIBRATION, "Kalibracija",
T_MAILTO_PROG, "Emailowy program (% so z emailowej adresu naruna)",
T_SHELL_PROG, "Programowy interpreter (% so naruna z pøikazom)",
T_TELNET_PROG, "Program za telnet (% naruna so z \"host\" abo \"host port\")",
T_MAGNET_PROG, NULL,
T_TN3270_PROG, "Program za Tn3270 (% naruna so z \"host\" abo \"host port\")",
T_MMS_PROG, NULL,
T_MAGNET_PROG, NULL,
T_GOPHER_PROG, NULL,
T_SHELL_PROG, "Programowy interpreter (% so naruna z pøikazom)",
T_MAIL_AND_TELNET_PROGRAMS, "Elektroniska pó¹ta a telnet",
T_MAIL_TELNET_AND_SHELL_PROGRAMS, "Programy za elektronisku pó¹tu, telnet a komanda",
T_NO_PROGRAM, "®adyn program",
T_NO_PROGRAM_SPECIFIED_FOR, "®adyn program podaty za",
T_MAIL, "email",
T_TELNET, "telnet",
T_MAGNET, NULL,
T_TN3270, NULL,
T_MMS, NULL,
T_MAGNET, NULL,
T_GOPHER, NULL,
T_BAD_MAILTO_URL, "Hubjena emailowa adresa",
T_BAD_TELNET_URL, "Hubjena adresa serwera za telnet",
T_BAD_TN3270_URL, "Hubjena adresa serwera za Tn3270",
@ -668,6 +671,7 @@ T_HK_CONNECTIONS, NULL,
T_HK_IPV6_OPTIONS, NULL,
T_HK_PROXIES, NULL,
T_HK_SSL_OPTIONS, NULL,
T_HK_DNS_OPTIONS, NULL,
T_HK_HTTP_OPTIONS, NULL,
T_HK_FTP_OPTIONS, NULL,
T_HK_SMB_OPTIONS, NULL,

View File

@ -2,6 +2,7 @@
* (c) 2002 Mikulas Patocka
* This file is a part of the Links program, released under GPL.
*/
#include <langinfo.h>
#include "links.h"
@ -130,6 +131,8 @@ int get_default_charset(void)
lang = cast_uchar getenv("LC_CTYPE");
if (!lang)
lang = cast_uchar getenv("LANG");
if (!lang)
lang = cast_uchar nl_langinfo(CODESET);
if (!lang) {
i = 0;
goto ret_i;

1414
language.h

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

16
links.1
View File

@ -141,11 +141,11 @@ Timeout for connection when trying multiple addresses or when resuming a keepali
(default: 3)
.TP
\f3-bind-address \f2<ip address>\f1
\f3-bind-address \f2<ip address or interface name>\f1
Use a specific local IP address.
.TP
\f3-bind-address-ipv6 \f2<ipv6 address>\f1
\f3-bind-address-ipv6 \f2<ipv6 address or interface name>\f1
Use a specific local IPv6 address.
.TP
@ -156,10 +156,6 @@ Don't use libevent library.
\f3-no-openmp\f1
Don't use OpenMP.
.TP
\f3-async-dns \f2<0>/<1>\f1
Asynchronous DNS resolver on(1)/off(0).
.TP
\f3-download-utime \f2<0>/<1>\f1
Set time of downloaded files to last modification time reported by server.
@ -258,6 +254,14 @@ Name of the PEM encoded file with the user certificate for client certificate au
\f3-ssl.client-cert-password \f2<text>\f1
Password for the user private key.
.TP
\f3-async-dns \f2<0>/<1>\f1
Asynchronous DNS resolver on(1)/off(0).
.TP
\f3-dns-over-https \f2<url>\f1
DNS over HTTPS url.
.TP
\f3-http-bugs.http10 \f2<0>/<1>\f1
(default 0) "1" forces using only HTTP/1.0 protocol. (useful for buggy servers

101
links.h
View File

@ -1042,11 +1042,14 @@ void init_os(void);
void init_os_terminal(void);
void get_path_to_exe(void);
int os_get_system_name(unsigned char *buffer);
#ifdef WIN
void translate_win32_to_unix(unsigned char **str);
#endif
unsigned char *os_conv_to_external_path(unsigned char *, unsigned char *);
unsigned char *os_fixup_external_program(unsigned char *);
int exe(unsigned char *, int);
#ifdef WIN
int exe_on_background(unsigned char *, unsigned char *);
int exe_on_background(unsigned char *, unsigned char *, int);
int windows_charset(void);
#define HAVE_EXE_ON_BACKGROUND
#endif
@ -1134,9 +1137,9 @@ void debug_test_free(unsigned char *file, int line);
#define FD_ZERO(p) memset((void *)(p), 0, sizeof(*(p)))
#endif
extern int terminate_loop;
void portable_sleep(unsigned msec);
int can_write(int fd);
int can_read(int fd);
int can_read_timeout(int fd, int sec);
@ -1153,11 +1156,9 @@ void add_event_string(unsigned char **, int *, struct terminal *);
struct timer;
struct timer *install_timer(uttime, void (*)(void *), void *);
void kill_timer(struct timer *);
void portable_sleep(unsigned msec);
int verify_handle(int);
#define H_READ 0
#define H_WRITE 1
void (*get_handler(int, int))(void *);
void *get_handler_data(int);
extern unsigned char *sh_file;
@ -1181,11 +1182,7 @@ void omp_end(void);
/* dns.c */
#ifdef USE_GETADDRINFO
#define MAX_ADDRESSES 64
#else
#define MAX_ADDRESSES 1
#endif
struct host_address {
int af;
@ -1206,6 +1203,22 @@ struct lookup_state {
int target_port;
};
struct dnsquery_doh;
struct dnsquery {
#ifndef THREAD_SAFE_LOOKUP
struct dnsquery *next_in_queue;
#endif
void (*fn)(void *, int);
void *data;
int h;
void **s;
struct dnsquery_doh *doh;
struct lookup_result *addr;
int addr_preference;
unsigned char name[1];
};
#ifdef SUPPORT_IPV6
extern int support_ipv6;
#else
@ -1216,21 +1229,25 @@ int numeric_ip_address(unsigned char *name, unsigned char address[4]);
#ifdef SUPPORT_IPV6
int numeric_ipv6_address(unsigned char *name, unsigned char address[16], unsigned *scope_id);
#endif
void add_address(struct lookup_result *host, int af, unsigned char *address, unsigned scope_id, int preference);
void rotate_addresses(struct lookup_result *);
void do_real_lookup(unsigned char *, int, struct lookup_result *);
int find_host(unsigned char *, struct lookup_result *, void **, void (*)(void *, int), void *);
int find_host_no_cache(unsigned char *, struct lookup_result *, void **, void (*)(void *, int), void *);
void end_dns_lookup(struct dnsquery *, int, uttime);
void find_host_no_cache(unsigned char *, int, struct lookup_result *, void **, void (*)(void *, int), void *);
int find_host_in_cache(unsigned char *, struct lookup_result *, void **, void (*)(void *, int), void *);
void kill_dns_request(void **);
void dns_prefetch(unsigned char *);
#if MAX_ADDRESSES > 1
void dns_set_priority(unsigned char *, struct host_address *, int);
#endif
void dns_clear_host(unsigned char *);
unsigned long dns_info(int type);
unsigned char *print_address(struct host_address *);
int ipv6_full_access(void);
void init_dns(void);
/* doh.c */
void do_doh_lookup(struct dnsquery *);
/* cache.c */
struct cache_entry {
@ -1283,8 +1300,9 @@ int defrag_entry(struct cache_entry *);
void truncate_entry(struct cache_entry *, off_t, int);
void free_entry_to(struct cache_entry *, off_t);
void delete_entry_content(struct cache_entry *);
void delete_cache_entry(struct cache_entry *e);
void trim_cache_entry(struct cache_entry *e);
void delete_cache_entry(struct cache_entry *e);
void finish_cache_entry(struct cache_entry *e);
/* sched.c */
@ -1300,6 +1318,7 @@ typedef struct {
} links_ssl;
#endif
#define PRI_DOH 0
#define PRI_MAIN 0
#define PRI_DOWNLOAD 0
#define PRI_FRAME 1
@ -1350,6 +1369,7 @@ struct connection {
off_t est_length;
int unrestartable;
int no_compress;
int doh;
struct remaining_info prg;
struct timer *timer;
int detached;
@ -1474,6 +1494,7 @@ struct status {
list_entry_last
};
int is_noproxy_host(unsigned char *host);
int is_noproxy_url(unsigned char *url);
unsigned char *get_proxy_string(unsigned char *url);
unsigned char *get_proxy(unsigned char *url);
@ -1493,7 +1514,7 @@ void abort_connection(struct connection *c);
#define ALLOW_SMB 1
#define ALLOW_FILE 2
#define ALLOW_ALL (ALLOW_SMB | ALLOW_FILE)
void load_url(unsigned char *, unsigned char *, struct status *, int, int, int, int, off_t);
void load_url(unsigned char *, unsigned char *, struct status *, int, int, int, int, int, off_t);
void change_connection(struct status *, struct status *, int);
void detach_connection(struct status *, off_t, int, int);
void abort_all_connections(void);
@ -1698,11 +1719,12 @@ void smb_func(struct connection *);
/* mailto.c */
void magnet_func(struct session *, unsigned char *);
void mailto_func(struct session *, unsigned char *);
void telnet_func(struct session *, unsigned char *);
void tn3270_func(struct session *, unsigned char *);
void mms_func(struct session *, unsigned char *);
void magnet_func(struct session *, unsigned char *);
void gopher_func(struct session *, unsigned char *);
/* kbd.c */
@ -2153,9 +2175,11 @@ struct style {
/* ?0 are background, ?1 foreground.
* These are unrounded 8-bit sRGB space
*/
unsigned char flags; /* non-zero means underline */
unsigned char flags; /* FF_ flags */
int height;
long underline_color; /* Valid only if flags are nonzero */
long line_color; /* Valid only if flags includes FF_UNDERLINE or
* FF_STRIKE
*/
int mono_space; /* -1 if the font is not monospaced
* width of the space otherwise
*/
@ -2245,6 +2269,7 @@ int hack_rgb(int rgb);
#define FF_MONOSPACED 2
#define FF_ITALIC 4
#define FF_UNDERLINE 8
#define FF_STRIKE 16
#ifndef USE_ITALIC
#define FF_SHAPES 4
@ -3143,6 +3168,14 @@ struct g_object_tag {
#define IM_SVG 5
#endif /* #ifdef HAVE_SVG */
#ifdef HAVE_WEBP
#define IM_WEBP 6
#endif /* #ifdef HAVE_WEBP */
#ifdef HAVE_AVIF
#define IM_AVIF 7
#endif /* #ifdef HAVE_AVIF */
#define MEANING_DIMS 0
#define MEANING_AUTOSCALE 1
struct cached_image {
@ -4342,6 +4375,32 @@ void add_svg_version(unsigned char **s, int *l);
#endif
/* webp.c */
#if defined(G) && defined(HAVE_WEBP)
void webp_start(struct cached_image *cimg);
void webp_restart(struct cached_image *cimg, unsigned char *data, int length);
void webp_finish(struct cached_image *cimg);
void webp_destroy_decoder(struct cached_image *cimg);
void add_webp_version(unsigned char **s, int *l);
#endif
/* avif.c */
#if defined(G) && defined(HAVE_AVIF)
void avif_start(struct cached_image *cimg);
void avif_restart(struct cached_image *cimg, unsigned char *data, int length);
void avif_finish(struct cached_image *cimg);
void avif_destroy_decoder(struct cached_image *cimg);
void add_avif_version(unsigned char **s, int *l);
#endif
/* img.c */
#ifdef G
@ -4501,6 +4560,7 @@ void init_grview(void);
#define AT_FIXED 8
#define AT_GRAPHICS 16
#define AT_INVERT 32
#define AT_STRIKE 64
#define AL_LEFT 0
#define AL_CENTER 1
@ -4890,7 +4950,6 @@ extern int unrestartable_receive_timeout;
extern int timeout_multiple_addresses;
extern unsigned char bind_ip_address[16];
extern unsigned char bind_ipv6_address[INET6_ADDRSTRLEN];
extern int async_lookup;
extern int download_utime;
extern int max_format_cache_entries;
@ -4943,6 +5002,9 @@ struct ssl_options {
extern struct ssl_options ssl_options;
extern int async_lookup;
extern unsigned char dns_over_https[MAX_STR_LEN];
struct http_header_options {
int fake_firefox;
int do_not_track;
@ -5153,6 +5215,7 @@ extern struct list_head telnet_prog;
extern struct list_head tn3270_prog;
extern struct list_head mms_prog;
extern struct list_head magnet_prog;
extern struct list_head gopher_prog;
unsigned char *get_compress_by_extension(unsigned char *ext, unsigned char *ext_end);
unsigned char *get_content_type_by_extension(unsigned char *url);

View File

@ -88,6 +88,7 @@ File c:\cygwin\bin\cygcroco-0.6-3.dll
File c:\cygwin\bin\cygcrypto-1.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\cygexpat-1.dll
File c:\cygwin\bin\cygffi-6.dll
File c:\cygwin\bin\cygfontconfig-1.dll
@ -181,6 +182,7 @@ Delete "$INSTDIR\cygcroco-0.6-3.dll"
Delete "$INSTDIR\cygcrypto-1.1.dll"
Delete "$INSTDIR\cygdatrie-1.dll"
Delete "$INSTDIR\cygdeflate-0.dll"
Delete "$INSTDIR\cygevent-2-0-5.dll"
Delete "$INSTDIR\cygexpat-1.dll"
Delete "$INSTDIR\cygffi-6.dll"
Delete "$INSTDIR\cygfontconfig-1.dll"

View File

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

View File

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

View File

@ -1238,12 +1238,12 @@ static int list_item_mark(struct dialog_data *dlg, struct dialog_item_data *usel
rd.n = 0;
if (ld->current_pos != ld->list) ld->current_pos->type ^= 4;
rd.n = -1;
if (next_in_tree(ld, ld->current_pos) == ld->list) /* already at the bottom */
{
draw_to_window(dlg->win, redraw_list_line, &rd);
return 0;
}
rd.n = -1;
ld->current_pos = next_in_tree(ld, ld->current_pos);
ld->win_pos++;
if (ld->win_pos > ld->n_items - 1) /* scroll down */

View File

@ -78,13 +78,6 @@ void tn3270_func(struct session *ses, unsigned char *url)
tn_func(ses, url, &tn3270_prog, TEXT_(T_TN3270), TEXT_(T_BAD_TN3270_URL));
}
void magnet_func(struct session *ses, unsigned char *url)
{
unsigned char *escaped_url = escape_path(url);
prog_func(ses->term, &magnet_prog, escaped_url, TEXT_(T_MAGNET));
mem_free(escaped_url);
}
void mms_func(struct session *ses, unsigned char *url)
{
if (check_shell_url(url)) {
@ -93,3 +86,17 @@ void mms_func(struct session *ses, unsigned char *url)
}
prog_func(ses->term, &mms_prog, url, TEXT_(T_MMS));
}
void magnet_func(struct session *ses, unsigned char *url)
{
unsigned char *escaped_url = escape_path(url);
prog_func(ses->term, &magnet_prog, escaped_url, TEXT_(T_MAGNET));
mem_free(escaped_url);
}
void gopher_func(struct session *ses, unsigned char *url)
{
unsigned char *escaped_url = escape_path(url);
prog_func(ses->term, &gopher_prog, escaped_url, TEXT_(T_GOPHER));
mem_free(escaped_url);
}

137
menu.c
View File

@ -217,6 +217,14 @@ static void menu_version(void *term_)
#ifdef HAVE_SVG
add_to_str(&s, &l, cast_uchar ", ");
add_svg_version(&s, &l);
#endif
#ifdef HAVE_WEBP
add_to_str(&s, &l, cast_uchar ", ");
add_webp_version(&s, &l);
#endif
#ifdef HAVE_AVIF
add_to_str(&s, &l, cast_uchar ", ");
add_avif_version(&s, &l);
#endif
add_to_str(&s, &l, cast_uchar "\n");
#endif
@ -1664,7 +1672,7 @@ static void dlg_net_options(struct terminal *term, void *xxx, void *yyy)
snprint(time_str, 5, receive_timeout);
snprint(unrtime_str, 5, unrestartable_receive_timeout);
snprint(addrtime_str, 4, timeout_multiple_addresses);
d = mem_calloc(sizeof(struct dialog) + 12 * sizeof(struct dialog_item));
d = mem_calloc(sizeof(struct dialog) + 11 * sizeof(struct dialog_item));
d->title = TEXT_(T_NETWORK_OPTIONS);
d->fn = group_fn;
d->udata = (void *)net_msg;
@ -1729,12 +1737,6 @@ static void dlg_net_options(struct terminal *term, void *xxx, void *yyy)
d->items[a].dlen = sizeof(bind_ipv6_address);
d->items[a++].fn = check_local_ipv6_address;
}
#endif
#ifndef NO_ASYNC_LOOKUP
net_msg[a] = TEXT_(T_ASYNC_DNS_LOOKUP);
d->items[a].type = D_CHECKBOX;
d->items[a].data = (unsigned char *)&async_lookup;
d->items[a++].dlen = sizeof(int);
#endif
net_msg[a] = TEXT_(T_SET_TIME_OF_DOWNLOADED_FILES);
d->items[a].type = D_CHECKBOX;
@ -2337,6 +2339,105 @@ static void dlg_ssl_options(struct terminal *term, void *xxx, void *yyy)
#endif
static unsigned char * const dns_msg[] = {
#ifndef NO_ASYNC_LOOKUP
TEXT_(T_ASYNC_DNS_LOOKUP),
#endif
TEXT_(T_DNS_OVER_HTTPS_URL),
};
static void dns_options_fn(struct dialog_data *dlg)
{
struct terminal *term = dlg->win->term;
int max = 0, min = 0;
int w, rw;
int i;
int y = 0;
i = 0;
#ifndef NO_ASYNC_LOOKUP
max_group_width(term, dns_msg + i, dlg->items, 1, &max);
min_group_width(term, dns_msg + i, dlg->items, 1, &min);
i++;
#endif
for (; i < dlg->n - 2; i++) {
max_text_width(term, dns_msg[i], &max, AL_LEFT);
min_text_width(term, dns_msg[i], &min, AL_LEFT);
}
max_buttons_width(term, dlg->items + dlg->n - 2, 2, &max);
min_buttons_width(term, dlg->items + dlg->n - 2, 2, &min);
w = dlg->win->term->x * 9 / 10 - 2 * DIALOG_LB;
if (w > max) w = max;
if (w < min) w = min;
if (w > dlg->win->term->x - 2 * DIALOG_LB) w = dlg->win->term->x - 2 * DIALOG_LB;
if (w < 1) w = 1;
rw = 0;
i = 0;
#ifndef NO_ASYNC_LOOKUP
dlg_format_group(dlg, NULL, dns_msg, dlg->items, 1, 0, &y, w, &rw);
y += LL;
i++;
#else
if (!dlg->win->term->spec->braille) y -= LL;
#endif
for (; i < dlg->n - 2; i++) {
dlg_format_text_and_field(dlg, NULL, dns_msg[i], &dlg->items[i], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT);
if (!dlg->win->term->spec->braille) y += LL;
}
dlg_format_buttons(dlg, NULL, dlg->items + dlg->n - 2, 2, 0, &y, w, &rw, AL_CENTER);
w = rw;
dlg->xw = w + 2 * DIALOG_LB;
dlg->yw = y + 2 * DIALOG_TB;
center_dlg(dlg);
draw_dlg(dlg);
y = dlg->y + DIALOG_TB;
y += LL;
i = 0;
#ifndef NO_ASYNC_LOOKUP
dlg_format_group(dlg, term, dns_msg, dlg->items, 1, dlg->x + DIALOG_LB, &y, w, &rw);
y += LL;
i++;
#else
if (!dlg->win->term->spec->braille) y -= LL;
#endif
for (; i < dlg->n - 2; i++) {
dlg_format_text_and_field(dlg, term, dns_msg[i], &dlg->items[i], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT);
y += LL;
}
dlg_format_buttons(dlg, term, &dlg->items[dlg->n - 2], 2, dlg->x + DIALOG_LB, &y, w, NULL, AL_CENTER);
}
static void dlg_dns_options(struct terminal *term, void *xxx, void *yyy)
{
struct dialog *d;
int a = 0;
d = mem_calloc(sizeof(struct dialog) + 5 * sizeof(struct dialog_item));
d->title = TEXT_(T_DNS_OPTIONS);
d->fn = dns_options_fn;
d->refresh = refresh_network;
#ifndef NO_ASYNC_LOOKUP
d->items[a].type = D_CHECKBOX;
d->items[a].dlen = sizeof(int);
d->items[a].data = (unsigned char *)&async_lookup;
a++;
#endif
d->items[a].type = D_FIELD;
d->items[a].dlen = MAX_STR_LEN;
d->items[a].data = dns_over_https;
a++;
d->items[a].type = D_BUTTON;
d->items[a].gid = B_ENTER;
d->items[a].fn = ok_dialog;
d->items[a].text = TEXT_(T_OK);
a++;
d->items[a].type = D_BUTTON;
d->items[a].gid = B_ESC;
d->items[a].fn = cancel_dialog;
d->items[a].text = TEXT_(T_CANCEL);
a++;
d->items[a].type = D_END;
do_dialog(term, d, getml(d, NULL));
}
static unsigned char * const http_labels[] = { TEXT_(T_USE_HTTP_10), TEXT_(T_ALLOW_SERVER_BLACKLIST), TEXT_(T_DO_NOT_SEND_ACCEPT_CHARSET),
#ifdef HAVE_ANY_COMPRESSION
TEXT_(T_DO_NOT_ADVERTISE_COMPRESSION_SUPPORT),
@ -2638,6 +2739,7 @@ static unsigned char * const prg_msg[] = {
TEXT_(T_TN3270_PROG),
TEXT_(T_MMS_PROG),
TEXT_(T_MAGNET_PROG),
TEXT_(T_GOPHER_PROG),
TEXT_(T_SHELL_PROG),
cast_uchar ""
};
@ -2660,6 +2762,8 @@ static void netprog_fn(struct dialog_data *dlg)
min_text_width(term, prg_msg[a++], &min, AL_LEFT);
max_text_width(term, prg_msg[a], &max, AL_LEFT);
min_text_width(term, prg_msg[a++], &min, AL_LEFT);
max_text_width(term, prg_msg[a], &max, AL_LEFT);
min_text_width(term, prg_msg[a++], &min, AL_LEFT);
#ifdef G
if (have_extra_exec()) {
max_text_width(term, prg_msg[a], &max, AL_LEFT);
@ -2691,6 +2795,9 @@ static void netprog_fn(struct dialog_data *dlg)
dlg_format_text_and_field(dlg, NULL, prg_msg[a], &dlg->items[a], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT);
a++;
if (!term->spec->braille) y += LL;
dlg_format_text_and_field(dlg, NULL, prg_msg[a], &dlg->items[a], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT);
a++;
if (!term->spec->braille) y += LL;
#ifdef G
if (have_extra_exec()) {
dlg_format_text_and_field(dlg, NULL, prg_msg[a], &dlg->items[a], 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT);
@ -2723,6 +2830,9 @@ static void netprog_fn(struct dialog_data *dlg)
dlg_format_text_and_field(dlg, term, prg_msg[a], &dlg->items[a], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT);
a++;
if (!term->spec->braille) y += LL;
dlg_format_text_and_field(dlg, term, prg_msg[a], &dlg->items[a], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT);
a++;
if (!term->spec->braille) y += LL;
#ifdef G
if (have_extra_exec()) {
dlg_format_text_and_field(dlg, term, prg_msg[a], &dlg->items[a], dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT);
@ -2738,7 +2848,7 @@ static void net_programs(struct terminal *term, void *xxx, void *yyy)
{
struct dialog *d;
int a;
d = mem_calloc(sizeof(struct dialog) + 8 * sizeof(struct dialog_item));
d = mem_calloc(sizeof(struct dialog) + 9 * sizeof(struct dialog_item));
#ifdef G
if (have_extra_exec()) d->title = TEXT_(T_MAIL_TELNET_AND_SHELL_PROGRAMS);
else
@ -2762,6 +2872,9 @@ static void net_programs(struct terminal *term, void *xxx, void *yyy)
d->items[a].type = D_FIELD;
d->items[a].dlen = MAX_STR_LEN;
d->items[a++].data = get_prog(&magnet_prog);
d->items[a].type = D_FIELD;
d->items[a].dlen = MAX_STR_LEN;
d->items[a++].data = get_prog(&gopher_prog);
#ifdef G
if (have_extra_exec()) {
d->items[a].type = D_FIELD;
@ -3662,6 +3775,7 @@ static void free_fonts(void *fonts_)
static int select_font(struct dialog_data *dlg, struct dialog_item_data *di)
{
unsigned char * decc_volatile empty = cast_uchar "";
struct list_of_fonts *fonts;
int n_fonts;
int i;
@ -3684,11 +3798,11 @@ static int select_font(struct dialog_data *dlg, struct dialog_item_data *di)
mi = new_menu(MENU_FREE_ITEMS | MENU_FONT_LIST | (bold * MENU_FONT_LIST_BOLD) | (monospaced * MENU_FONT_LIST_MONO));
add_to_menu(&mi, TEXT_(T_BUILT_IN_FONT), cast_uchar "", cast_uchar "", font_selected, cast_uchar "", 0, 0);
add_to_menu(&mi, TEXT_(T_BUILT_IN_FONT), empty, empty, font_selected, empty, 0, 0);
for (i = 0; i < n_fonts; i++) {
if (!strcmp(cast_const_char fonts[i].file, cast_const_char di->cdata))
current_font = i + 1;
add_to_menu(&mi, fonts[i].name, cast_uchar "", cast_uchar "", font_selected, fonts[i].file, 0, i + 1);
add_to_menu(&mi, fonts[i].name, empty, empty, font_selected, fonts[i].file, 0, i + 1);
}
do_menu_selected(dlg->win->term, mi, di->cdata, current_font, free_fonts, fonts);
@ -4165,6 +4279,7 @@ static_const struct menu_item net_options_menu[] = {
#ifdef HAVE_SSL_CERTIFICATES
{ TEXT_(T_SSL_OPTIONS), cast_uchar "", TEXT_(T_HK_SSL_OPTIONS), dlg_ssl_options, NULL, 0, 0 },
#endif
{ TEXT_(T_DNS_OPTIONS), cast_uchar "", TEXT_(T_HK_DNS_OPTIONS), dlg_dns_options, NULL, 0, 0 },
{ TEXT_(T_HTTP_OPTIONS), cast_uchar "", TEXT_(T_HK_HTTP_OPTIONS), dlg_http_options, NULL, 0, 0 },
{ TEXT_(T_FTP_OPTIONS), cast_uchar "", TEXT_(T_HK_FTP_OPTIONS), dlg_ftp_options, NULL, 0, 0 },
#ifndef DISABLE_SMB
@ -4181,6 +4296,7 @@ static_const struct menu_item net_options_ipv6_menu[] = {
#ifdef HAVE_SSL_CERTIFICATES
{ TEXT_(T_SSL_OPTIONS), cast_uchar "", TEXT_(T_HK_SSL_OPTIONS), dlg_ssl_options, NULL, 0, 0 },
#endif
{ TEXT_(T_DNS_OPTIONS), cast_uchar "", TEXT_(T_HK_DNS_OPTIONS), dlg_dns_options, NULL, 0, 0 },
{ TEXT_(T_HTTP_OPTIONS), cast_uchar "", TEXT_(T_HK_HTTP_OPTIONS), dlg_http_options, NULL, 0, 0 },
{ TEXT_(T_FTP_OPTIONS), cast_uchar "", TEXT_(T_HK_FTP_OPTIONS), dlg_ftp_options, NULL, 0, 0 },
#ifndef DISABLE_SMB
@ -4598,4 +4714,3 @@ void free_history_lists(void)
free_history(js_get_string_history); /* is in jsint.c */
#endif
}

View File

@ -15,11 +15,11 @@ else
fi
fi
if [ "`uname -m`" != x86_64 ]; then
ARCH_CFLAGS="-O2 -march=pentium4 -mtune=generic"
ARCH_CFLAGS="-O2 -march=pentiumpro -mtune=generic"
else
ARCH_CFLAGS="-O2 -mtune=generic"
fi
CFLAGS="$ARCH_CFLAGS $LTO_ARGS -shared-libgcc -Wall -W -Wno-unused-parameter -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes"
CFLAGS="-DWINDOWS_RELEASE $ARCH_CFLAGS $LTO_ARGS -shared-libgcc -Wall -W -Wno-unused-parameter -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes"
export CFLAGS
windres --preprocessor cat -O coff ../links-current/linkswin.rc linkswin.res
LIBS=../linkswin.res
@ -30,7 +30,7 @@ export LDFLAGS
mkdir -p links-text
cd links-text
if [ ! -f config.h -o ! -f Makefile ]; then
../../links-current/configure --enable-utf8 --disable-graphics --without-x --without-libevent --enable-debuglevel=0
../../links-current/configure --enable-utf8 --disable-graphics --without-x --enable-debuglevel=0
fi
make -j12
cp links.exe ..
@ -43,7 +43,7 @@ cd links-graphics
if [ ! -f config.h -o ! -f Makefile ]; then
CPPFLAGS="-DUSE_WIN32_HEAP"
export CPPFLAGS
../../links-current/configure --disable-utf8 --enable-graphics --without-x --without-libevent --enable-debuglevel=0
../../links-current/configure --disable-utf8 --enable-graphics --without-x --enable-debuglevel=0
fi
make -j12 LDFLAGS="-mwindows"
cp links.exe ../links-g.exe

View File

@ -109,7 +109,7 @@ static int auth_ok(struct dialog_data *dlg, struct dialog_item_data *item)
mem_free(passwd);
rq->hold = 0;
change_connection(&rq->stat, NULL, PRI_CANCEL);
load_url(rq->url, rq->prev_url, &rq->stat, rq->pri, NC_RELOAD, 0, 0, 0);
load_url(rq->url, rq->prev_url, &rq->stat, rq->pri, NC_RELOAD, 0, 0, 0, 0);
}
cancel_dialog(dlg, item);
return 0;
@ -198,7 +198,7 @@ static void cert_action(struct object_request *rq, int yes)
if (yes > 0) {
rq->hold = 0;
change_connection(&rq->stat, NULL, PRI_CANCEL);
load_url(rq->url, rq->prev_url, &rq->stat, rq->pri, NC_CACHE, 0, 0, 0);
load_url(rq->url, rq->prev_url, &rq->stat, rq->pri, NC_CACHE, 0, 0, 0, 0);
} else {
rq->hold = 0;
rq->dont_print_error = 1;
@ -319,7 +319,7 @@ void request_object(struct terminal *term, unsigned char *url, unsigned char *pr
if (rqp) *rqp = rq;
rq->count = obj_req_count++;
add_to_list(requests, rq);
load_url(url, prev_url, &rq->stat, pri, cache, 0, allow_flags, 0);
load_url(url, prev_url, &rq->stat, pri, cache, 0, 0, allow_flags, 0);
}
static void set_ce_internal(struct object_request *rq)
@ -356,7 +356,7 @@ static void objreq_end(struct status *stat, void *data)
if (stat->ce && rq->state == O_WAITING && stat->ce->redirect) {
if (rq->redirect_cnt++ < MAX_REDIRECTS) {
int cache, allow_flags;
unsigned char *u, *pos;
unsigned char *u, *pos, *url_host;
change_connection(stat, NULL, PRI_CANCEL);
u = join_urls(rq->url, stat->ce->redirect);
if ((pos = extract_position(u))) {
@ -364,11 +364,19 @@ static void objreq_end(struct status *stat, void *data)
rq->goto_position = pos;
}
cache = rq->cache;
if (cache < NC_RELOAD && (!strcmp(cast_const_char u, cast_const_char rq->url) || !strcmp(cast_const_char u, cast_const_char rq->orig_url) || rq->redirect_cnt >= MAX_CACHED_REDIRECTS)) cache = NC_RELOAD;
url_host = get_host_name(rq->url);
if (cache < NC_RELOAD &&
(!strcmp(cast_const_char u, cast_const_char rq->url) ||
!strcmp(cast_const_char u, cast_const_char rq->orig_url) ||
(url_host && casestrstr(url_host, cast_uchar "consent.google")) ||
rq->redirect_cnt >= MAX_CACHED_REDIRECTS))
cache = NC_RELOAD;
if (url_host)
mem_free(url_host);
allow_flags = get_allow_flags(rq->url);
mem_free(rq->url);
rq->url = u;
load_url(u, rq->prev_url, &rq->stat, rq->pri, cache, 0, allow_flags, 0);
load_url(u, rq->prev_url, &rq->stat, rq->pri, cache, 0, 0, allow_flags, 0);
return;
} else {
maxrd:
@ -383,7 +391,7 @@ static void objreq_end(struct status *stat, void *data)
mem_free(realm);
if (rq->redirect_cnt++ >= MAX_REDIRECTS) goto maxrd;
change_connection(stat, NULL, PRI_CANCEL);
load_url(rq->url, rq->prev_url, &rq->stat, rq->pri, NC_RELOAD, 0, 0, 0);
load_url(rq->url, rq->prev_url, &rq->stat, rq->pri, NC_RELOAD, 0, 0, 0, 0);
return;
}
user = get_user_name(rq->url);

126
os_dep.c
View File

@ -763,6 +763,9 @@ static int cleanup_fds(void)
#endif
#ifdef EMFILE
if (errno == EMFILE) return abort_background_connections();
#endif
#ifndef EMFILE
if (errno == EIO) return abort_background_connections();
#endif
return 0;
}
@ -777,6 +780,16 @@ int c_pipe(int fd[2])
EINTRLOOP(r, pipe(fd));
if (!r) new_fd_bin(fd[0]), new_fd_bin(fd[1]);
fd_unlock();
if (verify_handle(fd[0]) || verify_handle(fd[1])) {
EINTRLOOP(r, close(fd[0]));
EINTRLOOP(r, close(fd[1]));
r = -1;
#ifdef EMFILE
errno = EMFILE;
#else
errno = EIO;
#endif
}
} while (r == -1 && cleanup_fds());
return r;
}
@ -789,6 +802,16 @@ int c_dup(int oh)
EINTRLOOP(h, dup(oh));
if (h != -1) new_fd_cloexec(h);
fd_unlock();
if (verify_handle(h)) {
int r;
EINTRLOOP(r, close(h));
h = -1;
#ifdef EMFILE
errno = EMFILE;
#else
errno = EIO;
#endif
}
} while (h == -1 && cleanup_fds());
return h;
}
@ -801,6 +824,16 @@ int c_socket(int d, int t, int p)
EINTRLOOP(h, socket(d, t, p));
if (h != -1) new_fd_cloexec(h);
fd_unlock();
if (verify_handle(h)) {
int r;
EINTRLOOP(r, close(h));
h = -1;
#ifdef EMFILE
errno = EMFILE;
#else
errno = EIO;
#endif
}
} while (h == -1 && cleanup_fds());
return h;
}
@ -813,6 +846,16 @@ int c_accept(int sh, struct sockaddr *addr, socklen_t *addrlen)
EINTRLOOP(h, accept(sh, addr, addrlen));
if (h != -1) new_fd_cloexec(h);
fd_unlock();
if (verify_handle(h)) {
int r;
EINTRLOOP(r, close(h));
h = -1;
#ifdef EMFILE
errno = EMFILE;
#else
errno = EIO;
#endif
}
} while (h == -1 && cleanup_fds());
return h;
}
@ -825,6 +868,16 @@ int c_open(unsigned char *path, int flags)
EINTRLOOP(h, open(cast_const_char path, flags));
if (h != -1) new_fd_bin(h);
fd_unlock();
if (verify_handle(h)) {
int r;
EINTRLOOP(r, close(h));
h = -1;
#ifdef EMFILE
errno = EMFILE;
#else
errno = EIO;
#endif
}
} while (h == -1 && cleanup_fds());
return h;
}
@ -837,6 +890,16 @@ int c_open3(unsigned char *path, int flags, int mode)
EINTRLOOP(h, open(cast_const_char path, flags, mode));
if (h != -1) new_fd_bin(h);
fd_unlock();
if (verify_handle(h)) {
int r;
EINTRLOOP(r, close(h));
h = -1;
#ifdef EMFILE
errno = EMFILE;
#else
errno = EIO;
#endif
}
} while (h == -1 && cleanup_fds());
return h;
}
@ -1136,6 +1199,26 @@ void init_os_terminal(void)
#endif
}
#ifdef WIN
void translate_win32_to_unix(unsigned char **str)
{
#ifdef HAVE_CYGWIN_CONV_PATH
unsigned char *new_path;
ssize_t sz = cygwin_conv_path(CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE, *str, NULL, 0);
if (sz < 0 || sz >= MAXINT)
return;
new_path = mem_alloc(sz);
sz = cygwin_conv_path(CCP_WIN_A_TO_POSIX | CCP_ABSOLUTE, *str, new_path, sz);
if (sz < 0) {
mem_free(new_path);
return;
}
mem_free(*str);
*str = new_path;
#endif
}
#endif
#ifdef INTERIX
static inline void cut_program_path(unsigned char *prog, unsigned char **prog_start, unsigned char **prog_end)
@ -1564,7 +1647,7 @@ int exe(unsigned char *path, int fg)
return 0;
}
int exe_on_background(unsigned char *path, unsigned char *del)
int exe_on_background(unsigned char *path, unsigned char *del, int fg)
{
#ifdef __CYGWIN__
unsigned char *x1;
@ -1609,15 +1692,29 @@ int exe_on_background(unsigned char *path, unsigned char *del)
if (use_create_process) {
PROCESS_INFORMATION pi;
STARTUPINFOA si;
unsigned char *cwd;
memset(&pi, 0, sizeof pi);
memset(&si, 0, sizeof si);
si.cb = sizeof si;
cwd = NULL;
if (fg == 2) {
unsigned char *bs;
cwd = stracpy(path_to_exe);
bs = cast_uchar strrchr(cast_const_char cwd, '\\');
if (bs) {
if (cwd[1] == ':' && cwd[2] == '\\' && bs == &cwd[2])
bs++;
*bs = 0;
}
}
fd_lock();
if (CreateProcessA(cast_char x1, cast_char arg, NULL, NULL, FALSE, CREATE_NO_WINDOW | (is_winnt() ? DETACHED_PROCESS : 0), NULL, NULL, &si, &pi)) {
if (CreateProcessA(cast_char x1, cast_char arg, NULL, NULL, FALSE, CREATE_NO_WINDOW | (is_winnt() ? DETACHED_PROCESS : 0), NULL, cast_const_char cwd, &si, &pi)) {
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
fd_unlock();
if (cwd)
mem_free(cwd);
} else {
/* We need to fork here so that we can close handles */
pid_t pid;
@ -2738,7 +2835,8 @@ int get_input_handle(void)
static unsigned char *is_on_linux_console(void)
{
static unsigned char tty_name[MAX_STR_LEN];
int r = readlink("/proc/self/fd/0", cast_char tty_name, sizeof tty_name);
int r;
EINTRLOOP(r, (int)readlink("/proc/self/fd/0", cast_char tty_name, sizeof tty_name));
if (r >= 1 && r < (int)sizeof(tty_name)) {
#define pfx1 "/dev/tty"
#define pfx2 "/dev/vc/"
@ -2922,7 +3020,7 @@ void unhandle_mouse(void *data) { }
#endif /* #ifdef USE_GPM */
#if defined(WIN) || defined(INTERIX)
#if defined(OS2) || defined(WIN) || defined(INTERIX)
static int is_remote_connection(void)
{
@ -3627,16 +3725,20 @@ void restore_terminal(void)
void os_report_error_va(const char *caption, const char *msg, va_list l)
{
#ifdef OS2
char msg_buffer[OS_REPORT_ERROR_BUFFER];
vsnprintf(msg_buffer, sizeof msg_buffer, msg, l);
if (os2_init_pm()) return;
WinMessageBox(HWND_DESKTOP, NULLHANDLE, msg_buffer, caption, 0, MB_CANCEL | MB_ERROR | MB_APPLMODAL | MB_MOVEABLE);
os2_exit_pm();
if (!is_remote_connection()) {
char msg_buffer[OS_REPORT_ERROR_BUFFER];
vsnprintf(msg_buffer, sizeof msg_buffer, msg, l);
if (os2_init_pm()) return;
WinMessageBox(HWND_DESKTOP, NULLHANDLE, msg_buffer, caption, 0, MB_CANCEL | MB_ERROR | MB_APPLMODAL | MB_MOVEABLE);
os2_exit_pm();
}
#endif
#if defined(WIN) && !(defined(_UWIN) && !defined(GRDRV_PMSHELL))
char msg_buffer[OS_REPORT_ERROR_BUFFER];
vsnprintf(msg_buffer, sizeof msg_buffer, msg, l);
MessageBoxA(NULL, msg_buffer, caption, MB_OK | MB_ICONEXCLAMATION);
if (!is_remote_connection()) {
char msg_buffer[OS_REPORT_ERROR_BUFFER];
vsnprintf(msg_buffer, sizeof msg_buffer, msg, l);
MessageBoxA(NULL, msg_buffer, caption, MB_OK | MB_ICONEXCLAMATION);
}
#endif
}

View File

@ -523,8 +523,8 @@ static int win_x(struct pm_window *win)
#ifdef WIN
int x = GET_X_LPARAM(win->lastpos);
#endif
if (x < 0) x = -1;
if (x > win->x) x = win->x;
if (x >= win->x) x = win->x - 1;
if (x < 0) x = 0;
return x;
}
@ -536,8 +536,8 @@ static int win_y(struct pm_window *win)
#ifdef WIN
int y = GET_Y_LPARAM(win->lastpos);
#endif
if (y < 0) y = -1;
if (y > win->y) y = win->y;
if (y >= win->y) y = win->y - 1;
if (y < 0) y = 0;
return y;
}

77
sched.c
View File

@ -127,6 +127,9 @@ void setcstate(struct connection *c, int state)
{
struct status *stat;
struct list_head *lstat;
if (state < 0)
if (c->cache)
finish_cache_entry(c->cache);
if (c->state < 0 && state >= 0) c->prev_error = c->state;
if ((c->state = state) == S_TRANS) {
struct remaining_info *r = &c->prg;
@ -236,11 +239,13 @@ static void free_connection_data(struct connection *c)
c->info = NULL;
}
clear_connection_timeout(c);
if (--active_connections < 0) {
internal_error("active connections underflow");
active_connections = 0;
if (!c->doh) {
if (--active_connections < 0) {
internal_error("active connections underflow");
active_connections = 0;
}
}
if (c->state != S_WAIT) {
if (c->state != S_WAIT && !c->doh) {
if ((h = is_host_on_list(c))) {
if (!--h->conn) {
del_from_list(h);
@ -464,9 +469,8 @@ static int try_to_suspend_connection(struct connection *c, unsigned char *ho)
return -1;
}
int is_noproxy_url(unsigned char *url)
int is_noproxy_host(unsigned char *host)
{
unsigned char *host = get_host_name(url);
if (!proxies.only_proxies) {
unsigned char *np = proxies.no_proxy;
int host_l = (int)strlen(cast_const_char host);
@ -478,7 +482,6 @@ int is_noproxy_url(unsigned char *url)
goto no_match;
if (casecmp(np, host + (host_l - l), l))
goto no_match;
mem_free(host);
return 1;
no_match:
if (!np[l])
@ -486,10 +489,17 @@ no_match:
np += l + 1;
}
}
mem_free(host);
return 0;
}
int is_noproxy_url(unsigned char *url)
{
unsigned char *host = get_host_name(url);
int r = is_noproxy_host(host);
mem_free(host);
return r;
}
static void run_connection(struct connection *c)
{
struct h_conn *hc;
@ -522,17 +532,21 @@ static void run_connection(struct connection *c)
del_connection(c);
return;
}
if (!(hc = is_host_on_list(c))) {
hc = mem_alloc(sizeof(struct h_conn));
if (!(hc->host = get_host_name(c->url))) {
mem_free(hc);
goto s_bad_url;
if (c->doh && func != http_func && func != https_func && func != proxy_func)
goto s_bad_url;
if (!c->doh) {
if (!(hc = is_host_on_list(c))) {
hc = mem_alloc(sizeof(struct h_conn));
if (!(hc->host = get_host_name(c->url))) {
mem_free(hc);
goto s_bad_url;
}
hc->conn = 0;
add_to_list(h_conns, hc);
}
hc->conn = 0;
add_to_list(h_conns, hc);
hc->conn++;
active_connections++;
}
hc->conn++;
active_connections++;
c->keepalive = 0;
c->running = 1;
func(c);
@ -601,17 +615,19 @@ void abort_connection(struct connection *c)
static int try_connection(struct connection *c)
{
struct h_conn *hc = NULL;
if ((hc = is_host_on_list(c))) {
if (hc->conn >= max_connections_to_host) {
if (try_to_suspend_connection(c, hc->host)) return 0;
struct h_conn *hc;
if (!c->doh) {
if ((hc = is_host_on_list(c))) {
if (hc->conn >= max_connections_to_host) {
if (try_to_suspend_connection(c, hc->host)) return 0;
else return -1;
}
}
if (active_connections >= max_connections) {
if (try_to_suspend_connection(c, NULL)) return 0;
else return -1;
}
}
if (active_connections >= max_connections) {
if (try_to_suspend_connection(c, NULL)) return 0;
else return -1;
}
run_connection(c);
return 1;
}
@ -627,7 +643,7 @@ static void check_queue_bugs(void)
cc = 0;
foreach(struct connection, d, ld, queue) {
int q = getpri(d);
cc += d->running;
cc += d->running && !d->doh;
if (q < p) {
if (!ps) {
internal_error("queue is not sorted");
@ -755,7 +771,7 @@ int disallow_url(unsigned char *url, int allow_flags)
/* prev_url is a pointer to previous url or NULL */
/* prev_url will NOT be deallocated */
void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat, int pri, int no_cache, int no_compress, int allow_flags, off_t position)
void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat, int pri, int no_cache, int no_compress, int doh, int allow_flags, off_t position)
{
struct cache_entry *e = NULL;
struct connection *c;
@ -785,7 +801,7 @@ void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat,
}
}
#endif
if (is_url_blocked(url)) {
if (!doh && is_url_blocked(url)) {
if (stat) {
stat->state = S_BLOCKED_URL;
if (stat->end) stat->end(stat, stat->data);
@ -841,6 +857,10 @@ void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat,
u = get_proxy(url);
foreach(struct connection, c, lc, queue) if (!c->detached && !strcmp(cast_const_char c->url, cast_const_char u)) {
if (c->from < position) continue;
if (c->doh != doh) {
must_detach = 1;
break;
}
if (no_compress && !c->no_compress) {
unsigned char *enc;
if ((c->state >= S_WAIT && c->state < S_TRANS) || !c->cache) {
@ -910,6 +930,7 @@ void load_url(unsigned char *url, unsigned char *prev_url, struct status *stat,
#else
c->no_compress = 1;
#endif
c->doh = doh;
c->prg.timer = NULL;
c->timer = NULL;
if (position || must_detach) {

View File

@ -585,6 +585,16 @@ void kill_timer(struct timer *tm)
#endif
}
int verify_handle(int fd)
{
#if defined(USE_POLL) && defined(USE_LIBEVENT)
if (!event_enabled)
#endif
if (fd >= (int)FD_SETSIZE)
return -1;
return 0;
}
void (*get_handler(int fd, int tp))(void *)
{
if (fd < 0)
@ -602,7 +612,7 @@ void (*get_handler(int fd, int tp))(void *)
void *get_handler_data(int fd)
{
if (fd < 0)
internal_error("get_handler: handle %d", fd);
internal_error("get_handler_data: handle %d", fd);
if (fd >= w_max)
return NULL;
return threads[fd].data;

View File

@ -278,7 +278,8 @@ static void x_print_screen_status(struct terminal *term, void *ses_)
{
struct session *ses = (struct session *)ses_;
if (!F) {
unsigned char color = get_session_attribute(ses, proxies.only_proxies);
decc_volatile int p = proxies.only_proxies;
unsigned char color = get_session_attribute(ses, p);
fill_area(term, 0, term->y - 1, term->x, 1, ' ', color);
if (ses->st) print_text(term, 0, term->y - 1, (int)strlen(cast_const_char ses->st), ses->st, COLOR_STATUS);
#ifdef G
@ -294,7 +295,8 @@ static void x_print_screen_title(struct terminal *term, void *ses_)
{
struct session *ses = (struct session *)ses_;
unsigned char *m;
unsigned char color = get_session_attribute(ses, proxies.only_proxies);
decc_volatile int p = proxies.only_proxies;
unsigned char color = get_session_attribute(ses, p);
if (!term->spec->col) color = COLOR_TITLE;
fill_area(term, 0, 0, term->x, 1, ' ', color);
if ((m = print_current_title(ses))) {
@ -827,7 +829,7 @@ static void download_data(struct status *stat, void *down_)
if (!strcmp(cast_const_char down->url, cast_const_char prev_down_url) || down->redirect_cnt >= MAX_CACHED_REDIRECTS) cache = NC_RELOAD;
allow_flags = get_allow_flags(prev_down_url);
mem_free(prev_down_url);
load_url(down->url, NULL, &down->stat, PRI_DOWNLOAD, cache, 1, allow_flags, down->last_pos);
load_url(down->url, NULL, &down->stat, PRI_DOWNLOAD, cache, 1, 0, allow_flags, down->last_pos);
return;
} else {
if (stat->state >= 0) change_connection(&down->stat, NULL, PRI_CANCEL);
@ -1178,7 +1180,7 @@ void start_download(struct session *ses, unsigned char *file, int mode)
down->ses = ses;
down->remotetime = 0;
add_to_list(downloads, down);
load_url(url, NULL, &down->stat, PRI_DOWNLOAD, NC_CACHE, 1, ses->dn_allow_flags, down->last_pos);
load_url(url, NULL, &down->stat, PRI_DOWNLOAD, NC_CACHE, 1, 0, ses->dn_allow_flags, down->last_pos);
display_download(ses->term, down, ses);
}

9
sortix.c Normal file
View File

@ -0,0 +1,9 @@
#include "cfg.h"
#ifdef GRDRV_SORTIX
#include "links.h"
struct graphics_driver sortix_driver;
#endif /* GRDRV_SORTIX */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

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

5
tix.port Normal file
View File

@ -0,0 +1,5 @@
NAME=links
BUILD_LIBRARIES='libssl libbrotli? libevent? liblzma? libz? libzstd? liblzip?'
BUILD_SYSTEM=configure
LOCATION_INDEPENDENT=true
LICENSE=GPL-2.0-or-later

12
types.c
View File

@ -750,6 +750,7 @@ void create_initial_extensions(void)
ext.ext = cast_uchar "xpm", ext.ct=cast_uchar "image/x-xpixmap", update_ext(&ext);
ext.ext = cast_uchar "xls", ext.ct=cast_uchar "application/excel", update_ext(&ext);
ext.ext = cast_uchar "xbm", ext.ct=cast_uchar "image/x-xbitmap", update_ext(&ext);
ext.ext = cast_uchar "webp", ext.ct=cast_uchar "image/webp", update_ext(&ext);
ext.ext = cast_uchar "wav", ext.ct=cast_uchar "audio/x-wav", update_ext(&ext);
ext.ext = cast_uchar "tiff,tif", ext.ct=cast_uchar "image/tiff", update_ext(&ext);
ext.ext = cast_uchar "tga", ext.ct=cast_uchar "image/targa", update_ext(&ext);
@ -784,6 +785,7 @@ void create_initial_extensions(void)
ext.ext = cast_uchar "dvi", ext.ct=cast_uchar "application/x-dvi", update_ext(&ext);
ext.ext = cast_uchar "dl", ext.ct=cast_uchar "video/dl", update_ext(&ext);
ext.ext = cast_uchar "deb", ext.ct=cast_uchar "application/x-debian-package", update_ext(&ext);
ext.ext = cast_uchar "avif", ext.ct=cast_uchar "image/avif", update_ext(&ext);
ext.ext = cast_uchar "avi", ext.ct=cast_uchar "video/x-msvideo", update_ext(&ext);
ext.ext = cast_uchar "au,snd", ext.ct=cast_uchar "audio/basic", update_ext(&ext);
ext.ext = cast_uchar "aif,aiff,aifc", ext.ct=cast_uchar "audio/x-aiff", update_ext(&ext);
@ -797,6 +799,7 @@ struct list_head telnet_prog = { &telnet_prog, &telnet_prog };
struct list_head tn3270_prog = { &tn3270_prog, &tn3270_prog };
struct list_head mms_prog = { &mms_prog, &mms_prog };
struct list_head magnet_prog = { &magnet_prog, &magnet_prog };
struct list_head gopher_prog = { &gopher_prog, &gopher_prog };
static int is_in_list(unsigned char *list, unsigned char *str, int l)
@ -900,6 +903,9 @@ unsigned char *get_content_type_by_extension(unsigned char *url)
if ((extl == 3 && !casecmp(ext, cast_uchar "xbm", 3))) return stracpy(cast_uchar "image/x-xbitmap");
if ((extl == 3 && !casecmp(ext, cast_uchar "tif", 3)) ||
(extl == 4 && !casecmp(ext, cast_uchar "tiff", 4))) return stracpy(cast_uchar "image/tiff");
if ((extl == 3 && !casecmp(ext, cast_uchar "svg", 3))) return stracpy(cast_uchar "image/svg+xml");
if ((extl == 4 && !casecmp(ext, cast_uchar "webp", 4))) return stracpy(cast_uchar "image/webp");
if ((extl == 4 && !casecmp(ext, cast_uchar "avif", 4))) return stracpy(cast_uchar "image/avif");
exxt = init_str(); el = 0;
add_to_str(&exxt, &el, cast_uchar "application/x-");
add_bytes_to_str(&exxt, &el, ext, extl);
@ -960,6 +966,10 @@ static unsigned char *get_extension_by_content_type(unsigned char *ct)
if (!casestrcmp(ct, cast_uchar "image/svg") ||
!casestrcmp(ct, cast_uchar "image/svg+xml"))
return stracpy(cast_uchar "svg");
if (!casestrcmp(ct, cast_uchar "image/webp"))
return stracpy(cast_uchar "webp");
if (!casestrcmp(ct, cast_uchar "image/avif"))
return stracpy(cast_uchar "avif");
if (!cmpbeg(ct, cast_uchar "application/x-")) {
x = ct + strlen("application/x-");
if (casestrcmp(x, cast_uchar "z") &&
@ -1317,8 +1327,8 @@ void free_types(void)
free_prog_list(&tn3270_prog);
free_prog_list(&mms_prog);
free_prog_list(&magnet_prog);
free_prog_list(&gopher_prog);
free_history(ext_search_history);
free_history(assoc_search_history);
}

2
url.c
View File

@ -31,6 +31,7 @@ static_const struct {
{"tn3270", 0, NULL, tn3270_func, 0, 0, 0, 0, 1},
{"mms", 0, NULL, mms_func, 1, 0, 1, 0, 1},
{"magnet", 0, NULL, magnet_func, 1, 0, 0, 0, 1},
{"gopher", 0, NULL, gopher_func, 1, 0, 0, 0, 1},
#ifdef JS
{"javascript", 0, NULL, javascript_func,1, 0, 0, 0, 0},
#endif
@ -266,6 +267,7 @@ static void translate_directories(unsigned char *url)
int lo = !casecmp(url, cast_uchar "file://", 7);
if (!casecmp(url, cast_uchar "javascript:", 11)) return;
if (!casecmp(url, cast_uchar "magnet:", 7)) return;
if (!casecmp(url, cast_uchar "gopher:", 7)) return;
if (!dd || dd == url /*|| *--dd != '/'*/) return;
if (!dsep(*dd)) {
dd--;

3
view.c
View File

@ -2253,6 +2253,7 @@ unsigned char *get_form_url(struct session *ses, struct f_data_c *f, struct form
else add_to_strn(&go, cast_uchar "?");
add_to_strn(&go, data);
if (pos) {
add_to_strn(&go, cast_uchar "#");
add_to_strn(&go, pos);
mem_free(pos);
}
@ -2271,7 +2272,7 @@ unsigned char *get_form_url(struct session *ses, struct f_data_c *f, struct form
for (i = 0; i < len; i++) {
unsigned char p[3];
sprintf(cast_char p, "%02x", (int)data[i]);
add_to_str(&go, &l, p);
add_bytes_to_str(&go, &l, p, 2);
}
}
x:

83
webp.c Normal file
View File

@ -0,0 +1,83 @@
#include "cfg.h"
#ifdef G
#include "links.h"
#ifdef HAVE_WEBP
#include <webp/decode.h>
struct webp_decoder {
unsigned char *buffer;
int len;
};
static void webp_free(unsigned char *ptr)
{
#ifdef HAVE_WEBPFREE
WebPFree(ptr);
#else
free(ptr);
#endif
}
void webp_start(struct cached_image *cimg)
{
struct webp_decoder *deco;
deco = mem_alloc(sizeof(struct webp_decoder));
deco->buffer = init_str();
deco->len = 0;
cimg->decoder = deco;
}
void webp_restart(struct cached_image *cimg, unsigned char *data, int length)
{
struct webp_decoder *deco = (struct webp_decoder *)cimg->decoder;
add_bytes_to_str(&deco->buffer, &deco->len, data, length);
}
void webp_finish(struct cached_image *cimg)
{
int w, h;
struct webp_decoder *deco = (struct webp_decoder *)cimg->decoder;
unsigned char *pixels;
pixels = WebPDecodeRGBA(deco->buffer, deco->len, &w, &h);
if (!pixels)
goto end;
cimg->width = w;
cimg->height = h;
cimg->buffer_bytes_per_pixel = 4;
cimg->red_gamma = cimg->green_gamma = cimg->blue_gamma = (float)sRGB_gamma;
cimg->strip_optimized = 0;
if (header_dimensions_known(cimg))
goto end_free_pixels;
memcpy(cimg->buffer, pixels, w * h * 4);
end_free_pixels:
webp_free(pixels);
end:
img_end(cimg);
}
void webp_destroy_decoder(struct cached_image *cimg)
{
struct webp_decoder *deco = (struct webp_decoder *)cimg->decoder;
mem_free(deco->buffer);
}
void add_webp_version(unsigned char **s, int *l)
{
int v = WebPGetDecoderVersion();
add_to_str(s, l, cast_uchar "WEBP (");
add_num_to_str(s, l, (v >> 16));
add_chr_to_str(s, l, '.');
add_num_to_str(s, l, (v >> 8) & 0xff);
add_chr_to_str(s, l, '.');
add_num_to_str(s, l, v & 0xff);
add_chr_to_str(s, l, ')');
}
#endif
#endif

2
x.c
View File

@ -2910,7 +2910,7 @@ static unsigned char *x_get_clipboard_text(void)
if (tt > SELECTION_NOTIFY_TIMEOUT)
w = 0;
else
w = (SELECTION_NOTIFY_TIMEOUT - tt + 999) / 1000;
w = (SELECTION_NOTIFY_TIMEOUT - (unsigned)tt + 999) / 1000;
if (!x_wait_for_event(w))
goto no_new_sel;
}