Name=gLinks
Comment=Graphical links
Comment[pl]=Graficzny links
-Exec=links -g
+Exec=glinks
Terminal=0
-Icon=links.png
+Icon=links2.png
Type=Application
# vi: encoding=utf-8
--- /dev/null
+diff -urN aaa/links-current/configure.in links-current/configure.in
+--- aaa/links-current/configure.in Thu May 16 08:06:43 2002
++++ links-current/configure.in Thu May 23 00:00:43 2002
+@@ -7,10 +7,6 @@
+
+ AM_INIT_AUTOMAKE(links, 2.0pre6)
+
+-ACLOCAL="$missing_dir/missing aclocal"
+-AUTOCONF="$missing_dir/missing autoconf"
+-AUTOMAKE="$missing_dir/missing automake"
+-AUTOHEADER="$missing_dir/missing autoheader"
+ image_formats="GIF PNG XBM"
+
+ AM_CONFIG_HEADER(config.h)
--- /dev/null
+diff -urN aaa/links-current/acconfig.h links-current/acconfig.h
+--- aaa/links-current/acconfig.h Fri May 10 22:16:07 2002
++++ links-current/acconfig.h Thu May 23 20:58:50 2002
+@@ -95,8 +95,8 @@
+ #undef HAVE_JPEG
+
+ /* */
+-#undef AC_BIG_ENDIAN
++#undef HAVE_BIG_ENDIAN
+
+ /* */
+-#undef AC_LITTLE_ENDIAN
++#undef HAVE_LITTLE_ENDIAN
+
+diff -urN aaa/links-current/config.h.in links-current/config.h.in
+--- aaa/links-current/config.h.in Thu May 16 16:20:23 2002
++++ links-current/config.h.in Thu May 23 20:59:05 2002
+@@ -418,8 +418,8 @@
+ #undef HAVE_JPEG
+
+ /* */
+-#undef AC_BIG_ENDIAN
++#undef HAVE_BIG_ENDIAN
+
+ /* */
+-#undef AC_LITTLE_ENDIAN
++#undef HAVE_LITTLE_ENDIAN
+
+diff -urN aaa/links-current/configure.in links-current/configure.in
+--- aaa/links-current/configure.in Thu May 16 08:06:43 2002
++++ links-current/configure.in Thu May 23 20:57:36 2002
+@@ -83,35 +83,8 @@
+ AC_CHECK_SIZEOF(unsigned, "$default_int")
+ AC_CHECK_SIZEOF(long, "$default_int")
+ AC_CHECK_SIZEOF(unsigned long, "$default_int")
+-AC_CACHE_CHECK([for big endian], ac_cv_big_endian,
+- AC_TRY_RUN([
+- long l;
+- char *c = (char *)&l;
+- int main()
+- {
+- l = 0x12345678L;
+- return !(c[[sizeof(long) - 1]] == 0x78 && c[[sizeof(long) - 2]] == 0x56 && c[[sizeof(long) - 3]] == 0x34 && c[[sizeof(long) - 4]] == 0x12);
+- }
+- ], ac_cv_big_endian=yes, ac_cv_big_endian=no, ac_cv_big_endian=no)
+-)
+-AC_CACHE_CHECK([for little endian], ac_cv_little_endian,
+- AC_TRY_RUN([
+- long l;
+- char *c = (char *)&l;
+- int main()
+- {
+- l = 0x12345678L;
+- return !(c[[0]] == 0x78 && c[[1]] == 0x56 && c[[2]] == 0x34 && c[[3]] == 0x12);
+- }
+- ], ac_cv_little_endian=yes, ac_cv_little_endian=no, ac_cv_little_endian="$ac_cv_have_emx")
+-)
+
+-if test "$ac_cv_big_endian" = yes; then
+- AC_DEFINE(AC_BIG_ENDIAN)
+-else if test "$ac_cv_little_endian" = yes; then
+- AC_DEFINE(AC_LITTLE_ENDIAN)
+-fi
+-fi
++AC_C_BIGENDIAN([AC_DEFINE(HAVE_BIG_ENDIAN)], [AC_DEFINE(HAVE_LITTLE_ENDIAN)])
+
+ dnl Checks for library functions.
+ AC_PROG_GCC_TRADITIONAL
+diff -urN aaa/links-current/dither.c links-current/dither.c
+--- aaa/links-current/dither.c Fri May 10 22:16:09 2002
++++ links-current/dither.c Thu May 23 20:59:42 2002
+@@ -464,7 +464,7 @@
+ g=(g*31+127)/255;
+ b=(b*31+127)/255;
+ i=(r<<10)|(g<<5)|b;
+-#ifdef AC_LITTLE_ENDIAN
++#ifdef HAVE_LITTLE_ENDIAN
+ #ifdef t2c
+ ((t2c *)&ret)[0]=i;
+ #else
+@@ -474,7 +474,7 @@
+ #else
+ ((unsigned char *)&ret)[0]=i;
+ ((unsigned char *)&ret)[1]=i>>8;
+-#endif /* #ifdef AC_LITTLE_ENDIAN */
++#endif /* #ifdef HAVE_LITTLE_ENDIAN */
+
+
+ return ret;
+@@ -496,7 +496,7 @@
+ g=(g*63+127)/255;
+ b=(b*31+127)/255;
+ i=(r<<11)|(g<<5)|b;
+-#ifdef AC_LITTLE_ENDIAN
++#ifdef HAVE_LITTLE_ENDIAN
+ #ifdef t2c
+ ((t2c *)&ret)[0]=i;
+ #else
+@@ -506,7 +506,7 @@
+ #else
+ ((unsigned char *)&ret)[0]=i;
+ ((unsigned char *)&ret)[1]=i>>8;
+-#endif /* #ifdef AC_LITTLE_ENDIAN */
++#endif /* #ifdef HAVE_LITTLE_ENDIAN */
+
+ return ret;
+
--- /dev/null
+diff -urN aaa/links-2.1pre2/default.c links-2.1pre2/default.c
+--- aaa/links-2.1pre2/default.c Wed Jun 19 10:42:36 2002
++++ links-2.1pre2/default.c Thu Jul 4 22:38:28 2002
+@@ -260,10 +260,10 @@
+ sleep(3);
+ mem_free(home_links);
+ home_links = stracpy(home);
+- add_to_strn(&home_links, ".links");
++ add_to_strn(&home_links, ".links2");
+ }
+ mem_free(config_dir);
+- } else add_to_strn(&home_links, ".links");
++ } else add_to_strn(&home_links, ".links2");
+ if (stat(home_links, &st)) {
+ if (!mkdir(home_links, 0777)) goto home_creat;
+ if (config_dir) goto failed;
+@@ -273,7 +273,7 @@
+ first_failed:
+ mem_free(home_links);
+ home_links = stracpy(home);
+- add_to_strn(&home_links, "links");
++ add_to_strn(&home_links, "links2");
+ if (stat(home_links, &st)) {
+ if (!mkdir(home_links, 0777)) goto home_creat;
+ goto failed;
+@@ -329,7 +329,7 @@
+
+ void load_config()
+ {
+- load_config_file("/etc/", "links.cfg");
++ load_config_file("/etc/", "links2/links.cfg");
+ load_config_file(links_home, "links.cfg");
+ load_config_file(links_home, "html.cfg");
+ load_config_file(links_home, "user.cfg");
+diff -urN aaa/links-2.1pre2/links.1 links-2.1pre2/links.1
+--- aaa/links-2.1pre2/links.1 Sun May 19 18:48:00 2002
++++ links-2.1pre2/links.1 Thu Jul 4 22:44:59 2002
+@@ -306,7 +306,7 @@
+
+ .SH FILES
+ .TP
+-.IP "~/.links/.links.cfg"
++.IP "~/.links2/.links.cfg"
+ Per-user configfile, automatically created by
+ .B links.
+ .SH PLATFORMS
--- /dev/null
+--- links-2.0pre1/bookmarks.c.pix 2002-05-20 09:58:06.000000000 +0200
++++ links-2.0pre1/bookmarks.c 2002-05-22 14:29:30.000000000 +0200
+@@ -643,6 +643,18 @@
+ if (!*bookmarks_file)
+ snprintf(bookmarks_file,MAX_STR_LEN,"%sbookmarks.html",links_home);
+
++ /* try to create bookmarks.html based on old bookmarks (from links <= 0.97) */
++ if (access(bookmarks_file, R_OK) != 0) {
++ char *prev;
++ if ((prev = get_current_dir_name()) && chdir(links_home) == 0) {
++ if (access("bookmarks", R_OK) == 0 && access("/usr/bin/perl", X_OK) == 0) {
++ system("/usr/bin/perl -lne '@l = split(q(\\|)); print qq(<dt><a href=\"$l[1]\">$l[0]</a>)' bookmarks > bookmarks.html");
++ }
++ chdir(prev);
++ free(prev);
++ }
++ }
++
+ bookmark_ld.codepage=get_cp_index("utf-8");
+ load_bookmarks();
+ }
--- /dev/null
+--- links-0.96/cookies.c.pix Wed Jun 6 18:32:50 2001
++++ links-0.96/cookies.c Thu Sep 6 14:49:37 2001
+@@ -78,7 +79,7 @@
+ struct c_server *cs;
+ unsigned char *p, *q, *s, *server, *document;
+ if (accept_cookies == ACCEPT_NONE) return 0;
+- for (p = str; *p != ';' && *p; p++) if (WHITECHAR(*p)) return 0;
++ for (p = str; *p != ';' && *p && !(WHITECHAR(*p)); p++);
+ for (q = str; *q != '='; q++) if (!*q || q >= p) return 0;
+ if (str == q || q + 1 == p) return 0;
+ if (!(cookie = mem_alloc(sizeof(struct cookie)))) return 0;
--- /dev/null
+diff -ru links-0.96/cookies.c links-0.96+cookies-save/cookies.c
+--- links-0.96/cookies.c Mon Sep 3 07:19:37 2001
++++ links-0.96+cookies-save/cookies.c Mon Sep 3 07:18:42 2001
+@@ -276,15 +276,99 @@
+
+ void init_cookies()
+ {
+- /* !!! FIXME: read cookies */
++ unsigned char in_buffer[MAX_STR_LEN];
++ unsigned char *cookfile, *p, *q;
++ FILE *fp;
++
++ /* must be called after init_home */
++ if (! links_home) return;
++
++ cookfile = stracpy(links_home);
++ if (! cookfile) return;
++ add_to_strn(&cookfile, "cookies");
++
++ fp = fopen(cookfile, "r");
++ mem_free(cookfile);
++ if (fp == NULL) return;
++
++ while (fgets(in_buffer, MAX_STR_LEN, fp)) {
++ struct cookie *cookie;
++
++ if (!(cookie = mem_alloc(sizeof(struct cookie)))) return;
++ memset(cookie, 0, sizeof(struct cookie));
++
++ q = in_buffer; p = strchr(in_buffer, ' ');
++ if (p == NULL) goto inv;
++ *p++ = '\0';
++ cookie->name = stracpy(q);
++
++ q = p; p = strchr(p, ' ');
++ if (p == NULL) goto inv;
++ *p++ = '\0';
++ cookie->value = stracpy(q);
++
++ q = p; p = strchr(p, ' ');
++ if (p == NULL) goto inv;
++ *p++ = '\0';
++ cookie->server = stracpy(q);
++
++ q = p; p = strchr(p, ' ');
++ if (p == NULL) goto inv;
++ *p++ = '\0';
++ cookie->path = stracpy(q);
++
++ q = p; p = strchr(p, ' ');
++ if (p == NULL) goto inv;
++ *p++ = '\0';
++ cookie->domain = stracpy(q);
++
++ q = p; p = strchr(p, ' ');
++ if (p == NULL) goto inv;
++ *p++ = '\0';
++ cookie->expires = atoi(q);
++
++ cookie->secure = atoi(p);
++
++ cookie->id = cookie_id++;
++
++ accept_cookie(cookie);
++
++ continue;
++
++inv:
++ free_cookie(cookie);
++ free(cookie);
++ }
++ fclose(fp);
+ }
+
+ void cleanup_cookies()
+ {
+ struct cookie *c;
++ unsigned char *cookfile;
++ FILE *fp;
++
+ free_list(c_domains);
+- /* !!! FIXME: save cookies */
+- foreach (c, cookies) free_cookie(c);
++
++ cookfile = stracpy(links_home);
++ if (! cookfile) return;
++ add_to_strn(&cookfile, "cookies");
++
++ fp = fopen(cookfile, "w");
++ mem_free(cookfile);
++ if (fp == NULL) return;
++
++ foreach (c, cookies) {
++ if (c->expires && ! cookie_expired(c))
++ fprintf(fp, "%s %s %s %s %s %d %d\n", c->name, c->value,
++ c->server?c->server:(unsigned char *)"", c->path?c->path:(unsigned char *)"",
++ c->domain?c->domain:(unsigned char *)"", c->expires, c->secure);
++
++ free_cookie(c);
++ }
++
++ fclose(fp);
++
+ free_list(cookies);
+ }
+
--- /dev/null
+diff -urN aaa/links-2.0pre6/html.c links-2.0pre6/html.c
+--- aaa/links-2.0pre6/html.c Mon May 20 00:32:57 2002
++++ links-2.0pre6/html.c Sun Jun 16 12:02:57 2002
+@@ -838,7 +838,54 @@
+ if (!d_opt->images && !format.link) goto ret;
+ if (usemap) al = stracpy("[USEMAP]");
+ else if (ismap) al = stracpy("[ISMAP]");
+- else al = stracpy("[IMG]");
++ else{
++ unsigned char *str = get_attr_val(a, "src");
++ unsigned char *s;
++ int r, i;
++ /* How images will be displayed:
++ * fake_alt = 0 -- do not truncate long names,
++ * fake_alt = 30 -- truncate long names to 30% of term width,
++ * fake_alt = 100 -- truncate long names to 100% of term width.
++ */
++ int fake_alt = 20;
++ int max_len;
++ int name_len;
++ /* substitute string for hidden characters */
++ unsigned char *fake_str = stracpy("*");
++ if(str && fake_alt){
++ /* FIXME: replace following '80' with screen width */
++ max_len = (int)80*((float)fake_alt/100);
++ r = strcspn(str, "?");
++ if (!(s = mem_alloc((r + 1) * sizeof(char)))) return;
++ strncpy(s, str, r);
++ s[r] = '\0';
++ for(r = strlen(s) - 1; r >= 0; --r)
++ if(dir_sep(s[r])) break;
++ r++;
++ if(strlen(s + r) > max_len){
++ for(i = strlen(s) -1; i>=0; --i)
++ if(s[i] == '.') break;
++ if(max_len < strlen(s + i)) al = stracpy("[IMG]");
++ else{
++ if(!(al = mem_alloc((max_len + strlen(fake_str) + 3) * sizeof(char)))) return;
++ name_len = max_len - strlen(s + i);
++ strcpy(al, "[\0");
++ strncat(al, s + r, name_len/2);
++ strcat(al, fake_str);
++ strcat(al, s + r + (strlen(s + r) - max_len + name_len/2));
++ strcat(al, "]");
++ }
++ }
++ else{
++ if(!(al = mem_alloc((strlen(s + r) + 3) * sizeof(char)))) return;
++ sprintf(al, "[%s]", s + r);
++ }
++ mem_free(s);
++ mem_free(str);
++ mem_free(fake_str);
++ }
++ else al = stracpy("[IMG]");
++ }
+ }
+ if (al) {
+ if (ismap) {
--- /dev/null
+diff -urN aaa/links-current/main.c links-current/main.c
+--- aaa/links-current/main.c Thu May 16 08:07:43 2002
++++ links-current/main.c Sun May 19 19:04:06 2002
+@@ -273,6 +273,7 @@
+ goto ttt;
+ }
+ if (!(u = parse_options(g_argc - 1, g_argv + 1))) goto ttt;
++ if (strncmp (basename(path_to_exe), "glinks", 6) == 0) ggr = 1;
+ if (ggr_drv[0] || ggr_mode[0]) ggr = 1;
+ if (dmp) ggr = 0;
+ if (!ggr && !no_connect && (uh = bind_to_af_unix()) != -1) {
--- /dev/null
+--- links-current/view.c.orig Fri May 10 22:16:20 2002
++++ links-current/view.c Sun May 26 12:16:53 2002
+@@ -2492,7 +2492,7 @@
+ goto x;
+ }
+ if ((upcase(ev->x) == 'Q' && !ev->y) || ev->x == KBD_CTRL_C) {
+- exit_prog(ses->term, (void *)(ev->x == KBD_CTRL_C), ses);
++ exit_prog(ses->term, (void *)(ev->x == KBD_CTRL_C || ev->x == 'Q'), ses);
+ goto x;
+ }
+ if (ev->x == KBD_CLOSE){
--- /dev/null
+.\" Process this file with groff -man -Tascii links.1
+.TH LINKS 1 "9 grudnia 1999"
+.SH NAZWA
+links \- Tekstowa przegl±darka WWW w stylu Lynx'a
+.SH SK£ADNIA
+.B links
+.RI [ opcje ]
+.I URL
+.SH OPIS
+.B links
+to tekstowa przegl±darka www oparta na ncurses. Posiada kolorowy interfejs,
+renderuje tabele, pobiera pliki w tle, posiada menu oraz prosty i zwarty kod.
+.P
+W tej chwili jeszcze nie w pe³ni obs³uguje wy¶wietlanie ramek, ale to
+nied³ugo siê zmieni.
+.P
+.B links
+rozpoznaje lokalne (file://) oraz zdalne (http:// lub ftp://) typy URL-i.
+.SH KLAWISZE
+Mo¿na u¿ywaæ nastêpuj±cych kombinacji klawiszy:
+.TP
+.B ESC
+wywo³uje menu
+.TP
+.B ^P, ^N
+przewiñ ekran w górê, dó³
+.TP
+.B [, ]
+przewiñ ekran w lewo, prawo
+.TP
+.B góra, dó³
+zaznacz odno¶nik
+.TP
+.B ->
+wybierz odno¶nik
+.TP
+.B <-
+powrót
+.TP
+.B g
+przejd¼ do URL
+.TP
+.B /
+szukaj
+.TP
+.B ?
+szukaj wstecz
+.TP
+.B n
+znajd¼ nastêpne
+.TP
+.B N
+znajd¼ poprzednie
+.TP
+.B =
+informacje o dokumencie
+.TP
+.B \e
+¼ród³o dokumentu
+.TP
+.B d
+pobierz
+.TP
+.B ^C
+wyj¶cie
+.SH OPCJE
+Wiêkszo¶æ opcji mo¿e by¶ ustawionych bezpo¶rednio w przegl±darce lub w pliku
+konfiguracyjnym, wiêc nie musisz przejmowaæ siê zbytnio poni¿szymi:
+.TP
+\f3-async-dns \f2<0>/<1>\f1
+Asyncronous DNS resolver on(1)/off(0).
+.TP
+\f3-max-connections \f2<maks>\f1
+Maksymalna liczba jednoczesnych po³±czeñ.
+(domy¶lnie: 10)
+.TP
+\f3-max-connections-to-host \f2<maks>\f1
+Maksymalna liczba jednoczesnych po³±czeñ z jednym serwerem.
+(domy¶lnie: 2)
+.TP
+\f3-retries \f2<próby>\f1
+Liczba prób nawi±zania po³±czenia.
+(domy¶lnie: 3)
+.TP
+\f3-receive-timeout \f2<sek>\f1
+Maksymalny czas na nawiazanie po³±czenia.
+(domy¶lnie: 120)
+.TP
+\f3-unrestartable-receive-timeout \f2<sek>\f1
+Maksymalny czas na nawiazanie niewznawialnego po³±czenia.
+(domy¶lnie: 600)
+.TP
+\f3-format-cache-size \f2<liczba>\f1
+Liczba stron sformatowanych dokumentów w pamiêci podrêcznej.
+(domy¶lnie: 5)
+.TP
+\f3-memory-cache-size \f2<Kbajty>\f1
+Pamiêæ podrêczna w kilobajtach.
+(default: 1024)
+.TP
+\f3-http-proxy \f2<host:port>\f1
+Nazwa i numer portu serwera HTTP proxy.
+(domy¶lnie: nic)
+.TP
+\f3-ftp-proxy \f2<host:port>\f1
+Nazwa i numer portu serwera FTP proxy.
+(domy¶lnie: nic)
+.TP
+\f3-download-dir \f2<¶cie¿ka>\f1
+Domy¶lny katalog na pobierane pliki
+(domy¶lnie: aktualny katalog)
+.TP
+\f3-assume-codepage \f2<strona kodowa>\f1
+Strona kodowa u¿ywana gdy nie jest okre¶lona ¿adna inna.
+(domy¶lnie: ISO 8859-1)
+.TP
+\f3-version\f1
+Wy¶wietla numer wersji
+.BR links .
+.SH PLIKI
+.TP
+.IP "\fI~/.links2/.links.cfg\fR"
+Plik konfiguracyjny tworzony automatycznie przez
+.BR links .
+.SH PLATFORMY
+.B links
+na pewno dzia³a na nastêpuj±cych systemach Linux, FreeBSD, Solaris, IRIX,
+HPUX, Digital Unix oraz OS/2. Port dla Win32 jest nadal w fazie beta-testów.
+.SH B£ÊDY
+Nie mo¿na ustanowiæ po³±czenia z niektórymi serwerami FTP (Novell, NT).
+Po³±czenie zawiesza siê na "Wysy³am ¿±danie".
+.PP
+OS/2: gdy nie powiedzie siê po³±czenie zwracany jest b³±d "Niew³a¶ciwy
+argument".
+.PP
+OS/2: gdy jest uruchomiony w trybie pe³noekranowym, myszka pozostawia cienie.
+.PP
+Proszê wysy³aæ informacje o wszelkich znalezionych b³êdach pod adres Mikulas
+Patocka <mikulas@artax.karlin.mff.cuni.cz>
+.SH LICENCJA
+.B links
+jest oprogramowaniem wolnodostêpnym; mo¿esz go rozprowadzaæ dalej i/lub
+modyfikowaæ na warunkach Powszechnej Licencji Publicznej GNU, wydanej przez
+Fundacjê Wolnodostêpnego Oprogramowania - wed³ug wersji 2-giej tej Licencji
+lub której¶ z pó¼niejszych wersji.
+.SH AUTOR
+Autorem
+.B links
+jest
+.B Mikulas Patocka
+.BI <mikulas@artax.karlin.mff.cuni.cz>
+.P
+Ta strona manuala zosta³a napisana przez Grin <grin@tolna.net>,
+wielkiego zwolennika
+.BR links ,
+który u¿ywa tej przegl±darki na systemie Debian GNU/Linux.
+.P
+T³umaczenia dokona³ Arkadiusz 'Jo Joro' Sochala <jojoro@poczta.onet.pl>
+.SH "ZOBACZ TAK¯E"
+.BR lynx (1),
+.BR w3m (1)
--- /dev/null
+[Desktop Entry]
+Name=Links
+Comment=Links is a browser very similar to lynx
+Comment[es]=El links es un browser para modo texto, similar a lynx
+Comment[pl]=Links jest przeglądarką podobną do lynksa
+Comment[pt]=O links é um browser para modo texto, similar ao lynx
+Comment[pt_BR]=O links é um browser para modo texto, similar ao lynx
+Exec=links2
+Terminal=1
+Icon=links2.png
+Type=Application
+# vi: encoding=utf-8