1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-09-26 02:46:13 -04:00

Merge with /srv/git/elinks.git

This commit is contained in:
Petr Baudis 2005-09-26 16:09:29 +02:00 committed by Petr Baudis
commit d8bc3f7b15
21 changed files with 8605 additions and 80 deletions

View File

@ -512,6 +512,9 @@ Stephane Chazelas <stephane.chazelas@free.fr>
Suzanne Britton <trillinks@ironphoenix.org>
Support for default URI rewrite template
Strahinya Radich <vilinkamen@mail.ru>
Serbian translation
Suveg Gabor <gsuveg@sgmobil2000.hu>
Hungarian translation

View File

@ -26,9 +26,10 @@ includedir = @includedir@
DESTDIR =
# Unset for now; keep for future support for rebuilding configure and
# Makefile.config
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
@ -42,7 +43,7 @@ BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
COMMIT_ID = @COMMIT_ID@
CG_COMMIT_ID = @CG_COMMIT_ID@
CONFDIR = @CONFDIR@
CONFIG_NLS = @CONFIG_NLS@
DATADIRNAME = @DATADIRNAME@
@ -64,7 +65,7 @@ LIBGNUTLS_CONFIG = @LIBGNUTLS_CONFIG@
LOCALEDIR = @LOCALEDIR@
LUA_CFLAGS = @LUA_CFLAGS@
LUA_LIBS = @LUA_LIBS@
MKINSTALLDIRS = @MKINSTALLDIRS@
MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
MSGFMT = @MSGFMT@
OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
PACKAGE = @PACKAGE@

View File

@ -35,7 +35,7 @@ AC_PATH_PROGS(AWK, "$AWK")
AC_PROG_RANLIB
AC_PROG_INSTALL
AC_PATH_PROGS(COMMIT_ID, "commit-id")
AC_PATH_PROGS(CG_COMMIT_ID, "cg-commit-id")
CONFIG_ASCIIDOC="no"
CONFIG_POD2HTML="no"
@ -994,7 +994,7 @@ dnl ===================================================================
dnl Gettext grey zone. Beware.
dnl ===================================================================
ALL_LINGUAS="be bg ca cs da de el es et fi fr gl hr hu id is it lt nl nb pl pt pt_BR ro ru sk sv tr uk"
ALL_LINGUAS="be bg ca cs da de el es et fi fr gl hr hu id is it lt nl nb pl pt pt_BR ro ru sk sr sv tr uk"
AM_GNU_GETTEXT

28
contrib/grafthistory.sh Executable file
View File

@ -0,0 +1,28 @@
#!/bin/sh
#
# Graft the ELinks development history to the current tree.
#
# Note that this will download about 80M.
if [ -z "`which wget 2>/dev/null`" ]; then
echo "Error: You need to have wget installed so that I can fetch the history." >&2
exit 1
fi
[ -d .git ] && cd .git
echo "[grafthistory] Downloading the history"
cd objects/pack
wget -c http://elinks.or.cz/elinks-history.git/objects/pack/pack-0d6c5c67aab3b9d5d9b245da5929c15d79124a48.idx
wget -c http://elinks.or.cz/elinks-history.git/objects/pack/pack-0d6c5c67aab3b9d5d9b245da5929c15d79124a48.pack
echo "[grafthistory] Setting up the grafts"
cd ../..
# master
echo 0f6d4310ad37550be3323fab80456e4953698bf0 06135dc2b8bb7ed2e441305bdaa82048396de633 >>info/grafts
# REL_0_10
echo 43a9a406737fd22a8558c47c74b4ad04d4c92a2b 730242dcf2cdeed13eae7e8b0c5f47bb03326792 >>info/grafts
echo "[grafthistory] Refreshing the dumb server info wrt. new packs"
cd ..
git-update-server-info

5
doc/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
html
pdf
txt
web
*.tmp

View File

@ -130,7 +130,7 @@ doc-dirs:
# $(MAN_DIR) intentionally left out
clean-local:
$(RM) -r $(HTML_DIR) $(XML_DIR) $(TXT_DIR) $(PDF_DIR)
$(RM) -r $(HTML_DIR) $(XML_DIR) $(TXT_DIR) $(PDF_DIR) *.tmp
# Autogenerated asciidoc files.

View File

@ -7,60 +7,60 @@ while on the mailing list.
[[instances]]
I rebuilt/upgraded/reconfigured my ELinks, restarted it, but it looks nothing has changed!
I rebuilt/upgraded/reconfigured ELinks and restarted it, but it looks like nothing has changed!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ELinks instances connect together so that they share the cache, bookmarks,
cookies, configuration, etc. Only the "master" ELinks instance does any real
work and any other ELinkses you run will only connect to this instance. So
when you want to restart ELinks, make sure you have no other ELinks instances
running at the time.
cookies, configuration, etc. Only the "master" ELinks instance does any real
work and any other ELinkses you run will only connect to this instance. So when
you want to restart ELinks, make sure you have no other ELinks instances
running.
Alternatively, you can use the `-no-connect` parameter to make the ELinks
always run standalone, or create a parallel group of ELinks instances by the
`-session-ring N` parameter (where `N` is a number larger than zero); however,
be aware of the fact that in those cases ELinks won't touch any configuration,
bookmark, cookies, etc files - you can force that by the `-touch-files`
parameter, however beware - this can result in a data loss! (E.g., when two
master ELinks instances will try to save their bookmarks and you add a
bookmark to each of those, only one of the bookmarks survives.)
Alternatively, you can use the `-no-connect` parameter to make ELinks always run
standalone, or create a parallel group of ELinks instances with the
`-session-ring N` parameter (where `N` is a number larger than zero). Be aware
of that in those cases ELinks won't touch any configuration, bookmark, cookies,
etc. files. You can force that with the `-touch-files` parameter, but beware
that this can result in data loss! (For example, when two master ELinks
instances try to save the bookmarks, and you add a bookmark to each of those,
only one of the bookmarks survives.)
[[cutnpaste]]
How does cutting and pasting work?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The reason why normal cut and pasting does not work is that ELinks requests to
receive any mouse event info even if it is compiled without GPM. Therefore it
is necessary to also hold down the Shift key when cutting or pasting text. If
you do not need to use the mouse for navigation you can disable mouse support
by passing `--disable-mouse` to configure.
The reason why normal cut and paste does not work is that ELinks requests all
mouse event info even if it is compiled without GPM. Therefore it is necessary
to hold down the Shift key when cutting or pasting text. If you do not need to
use the mouse for navigation you can disable mouse support by passing
`--disable-mouse` to configure.
[[move]]
How does the "Move" button on the bookmark manager work?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First you need to mark all the bookmarks (or even folders) you want to move.
This can be done with the Insert key if you're using the default keybindings.
Asterisk will appear near of all marked bookmarks. Next move to where you want
to have the stuff moved to, and press the "Move" button.
First you need to mark all the bookmarks (or folders) you want to move. This
can be done with the Insert key if you're using the default key-bindings. An
asterisk will appear near all marked bookmarks. Now move to where you want to
have the stuff moved to, and press the "Move" button.
[[navigation]]
What's up with the navigation in the various managers?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The managers use list boxes. To navigate (assuming you're using a default
keybinding configuration) use Space to open and close the folders.
The managers use list boxes. To navigate (assuming you're using a default
key-binding configuration) use Space to open and close the folders.
[[flavours]]
[[flavors]]
Why are there so many Links flavors?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Please refer to the link:http://elinks.or.cz/history.html[history page] to
read about the various flavors and the differences between them.
Please refer to the link:http://elinks.or.cz/history.html[history page] to read
about the various flavors and the differences between them.
[[which-one]]
@ -68,9 +68,9 @@ Which one to use?
~~~~~~~~~~~~~~~~~
If you want a fast, stable, and feature-thin text browser, use
link:http://artax.karlin.mff.cuni.cz/~mikulas/links[Links-0.99]. Main
drawbacks include: No HTTP-auth support and no persistent cookies (i.e. they
die when all instances of Links are closed).
link:http://artax.karlin.mff.cuni.cz/~mikulas/links[Links-0.99]. Main drawbacks
include: No HTTP-auth support and no persistent cookies (i.e. they die when all
instances of Links are closed).
If you want additional features, including HTTP-auth, persistent cookies, and
on-the-fly compression, try ELinks. (Note: links-0.9x and ELinks versions >
@ -79,10 +79,10 @@ these on the same machine.)
If you want the option of graphics mode, use
link:http://links.twibright.com[Links2] or
link:http://xray.sai.msu.ru/~karpov/links-hacked/[Hacked Links]. Be aware
that some people have reported the latter as hard to configure/compile. You
cannot run either of these with Links-0.9x on the same system without hacking
the compile-time configuration.
link:http://xray.sai.msu.ru/~karpov/links-hacked/[Hacked Links]. Be aware that
some people have reported the latter as hard to configure/compile. You cannot
run either of these with Links-0.9x on the same system without hacking the
compile-time configuration.
[[kibi-and-mebi]]
@ -101,16 +101,16 @@ One mebibyte 1 MiB = 2^20 B = 1 048 576 B
-------------------------------------------------------------------------------
[[christmas]]
Why are stable releases made at christmas?
[[Christmas]]
Why are stable releases made at Christmas?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This yearly present has become a tradition suspectedly because pasky worships
the christmas spirit. ;-)
It is suspected that this yearly present has become a tradition because pasky
worships the Christmas spirit. ;-)
[[get-256-colours]]
How can I get 256 colours?
How can I get 256 colors?
~~~~~~~~~~~~~~~~~~~~~~~~~~
First, you must enable it in the `feature.conf` file before compiling.
@ -129,9 +129,9 @@ before running ELinks.
[NOTE]
.Only 16 colors on The Linux console
===============================================================================
Altho the Linux framebuffer supports 256 (or more) colours, the Linux console
Although the Linux frame-buffer supports 256 (or more) colors, the Linux console
driver does not; therefore, console applications are still limited to 16
colours on the Linux console, framebuffer or not.
colors on the Linux console, frame-buffer or not.
===============================================================================
@ -148,7 +148,7 @@ The new ELinks versions (from 0.9.0 on) send:
ELinks/$version (textmode; $osinfo; $textmode_dimensions)
You should therefore check against something like /^ELinks[\/ ]/, since more
fields can be added inside the parenthesis in the next versions. Note that
fields can be added inside the parenthesis in subsequent versions. Note that
users can change their User-Agent through the options system.

View File

@ -2,7 +2,7 @@ path_to_top=../../..
include $(path_to_top)/Makefile.config
install-l:
$(INSTALL_DATA) $(srcdir)/elinks.conf.5 $(DESTDIR)$(mandir)/man5
$(INSTALL_DATA) $(srcdir)/elinkskeys.5 $(DESTDIR)$(mandir)/man5
$(INSTALL_DATA) elinks.conf.5 $(DESTDIR)$(mandir)/man5
$(INSTALL_DATA) elinkskeys.5 $(DESTDIR)$(mandir)/man5
include $(path_to_top)/Makefile.lib

View File

@ -109,13 +109,13 @@ check-po:
install-l: install-l-$(CONFIG_NLS)
install-l-no:
install-l-yes:
$(mkinstalldirs) $(DESTDIR)$(localedir)
$(MKINSTALLDIRS) $(DESTDIR)$(localedir)
@catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\.gmo$$//'`; \
dir=$(localedir)/$$lang/LC_MESSAGES; \
$(mkinstalldirs) $(DESTDIR)$$dir; \
$(MKINSTALLDIRS) $(DESTDIR)$$dir; \
if test -r $(srcdir)/$$cat; then \
$(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \

8374
po/sr.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -84,8 +84,8 @@ ELINKSLIBS = \
util/libutil.a
# Get the GIT HEAD ID if possible
ifdef COMMIT_ID
BUILD_ID=$(shell $(COMMIT_ID) 2> /dev/null)
ifdef CG_COMMIT_ID
BUILD_ID=$(shell $(CG_COMMIT_ID) 2> /dev/null)
endif
INCLUDES += -DBUILD_ID="\"$(BUILD_ID)\""
@ -97,7 +97,7 @@ all-l: elinks
elinks: $(OBJS) $(ELINKSLIBS)
$(call cmd,link)
install-local:
$(INSTALL_PROGRAM) $(srcdir)/elinks $(DESTDIR)$(bindir)
install:
$(INSTALL_PROGRAM) elinks $(DESTDIR)$(bindir)
include $(path_to_top)/Makefile.lib

View File

@ -131,6 +131,10 @@ download_dialog_layouter(struct dialog_data *dlg_data)
unsigned char *msg = get_download_msg(download, term, 1, 1, "\n");
int show_meter = (download_is_progressing(download)
&& download->progress->size >= 0);
#if CONFIG_BITTORRENT
int bittorrent = (file_download->uri->protocol == PROTOCOL_BITTORRENT
&& (show_meter || download->state == S_RESUME));
#endif
redraw_below_window(dlg_data->win);
file_download->dlg_data = dlg_data;
@ -156,9 +160,7 @@ download_dialog_layouter(struct dialog_data *dlg_data)
if (show_meter) y += 2;
#if CONFIG_BITTORRENT
if (file_download->uri->protocol == PROTOCOL_BITTORRENT
&& (show_meter || download->state == S_RESUME))
y += 2;
if (bittorrent) y += 2;
#endif
dlg_format_text_do(NULL, msg, 0, &y, w, &rw,
dialog_text_color, ALIGN_LEFT);
@ -194,8 +196,7 @@ download_dialog_layouter(struct dialog_data *dlg_data)
}
#if CONFIG_BITTORRENT
if (file_download->uri->protocol == PROTOCOL_BITTORRENT
&& (show_meter || download->state == S_RESUME)) {
if (bittorrent) {
y++;
draw_bittorrent_piece_progress(download, term, x, y, w, NULL, NULL);
y++;

View File

@ -61,6 +61,28 @@ css_apply_background_color(struct html_context *html_context,
element->attr.style.bg = prop->value.color;
}
static void
css_apply_display(struct html_context *html_context, struct html_element *element,
struct css_property *prop)
{
assert(prop->value_type == CSS_VT_DISPLAY);
switch (prop->value.display) {
case CSS_DISP_INLINE:
element->linebreak = 0;
break;
case CSS_DISP_BLOCK:
/* 1 or 2, that is the question. I went for 2 since it
* gives a more "blocky" feel and it's more common.
* YMMV. */
element->linebreak = 2;
break;
default:
INTERNAL("Bad prop->value.display %d", prop->value.display);
break;
}
}
static void
css_apply_font_attribute(struct html_context *html_context,
struct html_element *element, struct css_property *prop)
@ -86,6 +108,7 @@ static css_applier_T css_appliers[CSS_PT_LAST] = {
/* CSS_PT_BACKGROUND */ css_apply_background_color,
/* CSS_PT_BACKGROUND_COLOR */ css_apply_background_color,
/* CSS_PT_COLOR */ css_apply_color,
/* CSS_PT_DISPLAY */ css_apply_display,
/* CSS_PT_FONT_STYLE */ css_apply_font_attribute,
/* CSS_PT_FONT_WEIGHT */ css_apply_font_attribute,
/* CSS_PT_TEXT_ALIGN */ css_apply_text_align,

View File

@ -19,6 +19,7 @@ struct css_property_info css_property_info[CSS_PT_LAST] = {
{ "background", CSS_PT_BACKGROUND, CSS_VT_COLOR, css_parse_background_value },
{ "background-color", CSS_PT_BACKGROUND_COLOR, CSS_VT_COLOR, css_parse_color_value },
{ "color", CSS_PT_COLOR, CSS_VT_COLOR, css_parse_color_value },
{ "display", CSS_PT_DISPLAY, CSS_VT_DISPLAY, css_parse_display_value },
{ "font-style", CSS_PT_FONT_STYLE, CSS_VT_FONT_ATTRIBUTE, css_parse_font_style_value },
{ "font-weight", CSS_PT_FONT_WEIGHT, CSS_VT_FONT_ATTRIBUTE, css_parse_font_weight_value },
{ "text-align", CSS_PT_TEXT_ALIGN, CSS_VT_TEXT_ALIGN, css_parse_text_align_value },

View File

@ -22,6 +22,7 @@ struct css_property {
CSS_PT_BACKGROUND,
CSS_PT_BACKGROUND_COLOR,
CSS_PT_COLOR,
CSS_PT_DISPLAY,
CSS_PT_FONT_STYLE,
CSS_PT_FONT_WEIGHT,
CSS_PT_TEXT_ALIGN,
@ -36,6 +37,7 @@ struct css_property {
enum css_property_value_type {
CSS_VT_NONE,
CSS_VT_COLOR,
CSS_VT_DISPLAY,
CSS_VT_FONT_ATTRIBUTE,
CSS_VT_TEXT_ALIGN,
CSS_VT_LAST,
@ -43,6 +45,10 @@ struct css_property {
union css_property_value {
void *none;
color_T color;
enum css_display {
CSS_DISP_INLINE,
CSS_DISP_BLOCK,
} display;
struct {
enum format_attr add, rem;
} font_attribute;

View File

@ -283,6 +283,32 @@ css_parse_white_space_value(struct css_property_info *propinfo,
return 1;
}
int
css_parse_display_value(struct css_property_info *propinfo,
union css_property_value *value,
struct scanner *scanner)
{
struct scanner_token *token = get_scanner_token(scanner);
assert(propinfo->value_type == CSS_VT_DISPLAY);
if (token->type != CSS_TOKEN_IDENT) return 0;
/* FIXME: This is _very_ simplistic */
if (scanner_token_contains(token, "inline")) {
value->display = CSS_DISP_INLINE;
} else if (scanner_token_contains(token, "inline-block")) {
value->display = CSS_DISP_INLINE; /* XXX */
} else if (scanner_token_contains(token, "block")) {
value->display = CSS_DISP_BLOCK;
} else {
return 0;
}
skip_css_tokens(scanner, CSS_TOKEN_IDENT);
return 1;
}
int
css_parse_value(struct css_property_info *propinfo,

View File

@ -30,6 +30,11 @@ int css_parse_color_value(struct css_property_info *propinfo,
union css_property_value *value,
struct scanner *scanner);
/* Takes no parser_data. */
int css_parse_display_value(struct css_property_info *propinfo,
union css_property_value *value,
struct scanner *scanner);
/* Takes no parser_data. */
int css_parse_text_decoration_value(struct css_property_info *propinfo,
union css_property_value *value,

View File

@ -131,6 +131,8 @@ struct html_element {
unsigned char *name;
int namelen;
unsigned char *options;
/* See document/html/parser/parse.c's element_info.linebreak
* description. */
int linebreak;
struct frameset_desc *frameset;
@ -140,6 +142,8 @@ struct html_element {
ELEMENT_VISITED = 2,
} pseudo_class;
};
#define is_inline_element(e) (e->linebreak == 0)
#define is_block_element(e) (e->linebreak > 0)
enum html_special_type {
SP_TAG,

View File

@ -404,10 +404,16 @@ struct element_info {
* in start_element() (which is also where we call these handlers). */
element_handler_T *func;
/* Basically something like how many line-breaks to put before
* (and sometimes after) an element. Also, for various element closing
* precedence heuristics, a value of zero signifies an inline element
* and a non-zero value indicates a block element. */
/* How many line-breaks to ensure we have before and after an element.
* Value of 1 means the element will be on a line on its own, value
* of 2 means that it will also have empty lines before and after.
* Note that this does not add up - it just ensures that there is
* at least so many linebreaks, but does not add more if that is the
* case. Therefore, something like e.g. </pre></p> will add only two
* linebreaks, not four. */
/* In some stack killing logic, we use some weird heuristic based on
* whether an element is block or inline. That is determined from
* whether this attribute is zero on non-zero. */
int linebreak;
enum element_type type;
@ -747,6 +753,14 @@ start_element(struct element_info *ei,
unsigned char *eof, unsigned char *attr,
struct html_context *html_context)
{
#define ELEMENT_RENDER_PROLOGUE \
ln_break(html_context, ei->linebreak); \
a = get_attr_val(attr, "id", html_context->options); \
if (a) { \
html_context->special_f(html_context, SP_TAG, a); \
mem_free(a); \
}
unsigned char *a;
struct par_attrib old_format;
int restore_format;
@ -754,15 +768,6 @@ start_element(struct element_info *ei,
struct css_selector *selector = NULL;
#endif
ln_break(html_context, ei->linebreak);
a = get_attr_val(attr, "id", html_context->options);
if (a) {
html_context->special_f(html_context, SP_TAG, a);
mem_free(a);
}
if (html_top.type == ELEMENT_WEAK) {
kill_html_stack_item(html_context, &html_top);
}
@ -771,6 +776,7 @@ start_element(struct element_info *ei,
* one. */
if (html_top.invisible
&& (ei->func != html_script || html_top.invisible < 2)) {
ELEMENT_RENDER_PROLOGUE
return html;
}
@ -779,15 +785,18 @@ start_element(struct element_info *ei,
if (ei->func == html_table && html_context->options->tables
&& html_context->table_level < HTML_MAX_TABLE_LEVEL) {
ELEMENT_RENDER_PROLOGUE
format_table(attr, html, eof, &html, html_context);
ln_break(html_context, 2);
return html;
}
if (ei->func == html_select) {
ELEMENT_RENDER_PROLOGUE
if (!do_html_select(attr, html, eof, &html, html_context))
return html;
}
if (ei->func == html_textarea) {
ELEMENT_RENDER_PROLOGUE
do_html_textarea(attr, html, eof, &html, html_context);
return html;
}
@ -812,10 +821,10 @@ start_element(struct element_info *ei,
if (ei->type == ELEMENT_TYPE_NON_NESTABLE) {
foreach (e, html_context->stack) {
if (e->type < ELEMENT_KILLABLE) break;
if (e->linebreak || !ei->linebreak) break;
if (is_block_element(e) || is_inline_element(ei)) break;
}
} else foreach (e, html_context->stack) {
if (e->linebreak && !ei->linebreak) break;
if (is_block_element(e) && is_inline_element(ei)) break;
if (e->type < ELEMENT_KILLABLE) break;
if (!strlcasecmp(e->name, e->namelen, name, namelen)) break;
}
@ -854,6 +863,7 @@ start_element(struct element_info *ei,
/* We need to have own element in the stack, that's why we waited for
* so long. */
if (ei->func == html_script) {
ELEMENT_RENDER_PROLOGUE
if (!do_html_script(html_context, attr, html, eof, &html))
return html;
}
@ -881,7 +891,11 @@ start_element(struct element_info *ei,
done_css_selector(selector);
}
}
/* Now this was the reason for this whole funny ELEMENT_RENDER_PROLOGUE
* bussiness. Only now we have the definitive linebreak value, since
* that's what the display: property plays with. */
#endif
ELEMENT_RENDER_PROLOGUE
if (ei->func) ei->func(html_context, attr);
#ifdef CONFIG_CSS
if (selector && html_top.options) {
@ -902,6 +916,7 @@ start_element(struct element_info *ei,
if (restore_format) par_format = old_format;
return html;
#undef ELEMENT_RENDER_PROLOGUE
}
static unsigned char *
@ -930,7 +945,7 @@ end_element(struct element_info *ei,
/* dump_html_stack(html_context); */
foreach (e, html_context->stack) {
if (e->linebreak && !ei->linebreak) kill = 1;
if (is_block_element(e) && is_inline_element(ei)) kill = 1;
if (strlcasecmp(e->name, e->namelen, name, namelen)) {
if (e->type < ELEMENT_KILLABLE)
break;

View File

@ -4,6 +4,9 @@ include $(path_to_top)/Makefile.config
localedir = $(datadir)/locale
builddir = $(top_builddir)/src/intl/gettext
# FIXME: Makefile.config gets this wrong
srcdir = $(top_srcdir)/src/intl/gettext
OBJS = \
bindtextdom.o \
dcgettext.o \
@ -28,8 +31,10 @@ all-l: libintl.a
libintl.a: $(OBJS)
# $(builddir)/charset.alias: $(srcdir)/config.charset
$(builddir)/charset.alias: $(srcdir)/config.charset
$(SHELL) $(srcdir)/config.charset '@host@' > $@.new
mv $@.new $@
# FIXME: Building plural.c from plural.y on the fly doesn't work
@ -52,14 +57,14 @@ install-l: $(builddir)/charset.alias all
rm -f $$temp; \
else \
if test @GLIBC21@ = no; then \
$(mkinstalldirs) $(DESTDIR)$(libdir); \
$(MKINSTALLDIRS) $(DESTDIR)$(libdir); \
orig=charset.alias; \
sed -f ref-add.sed $$orig > $$temp; \
$(INSTALL_DATA) $$temp $$dest; \
rm -f $$temp; \
fi; \
fi; \
$(mkinstalldirs) $(DESTDIR)$(localedir); \
$(MKINSTALLDIRS) $(DESTDIR)$(localedir); \
test -f $(DESTDIR)$(localedir)/locale.alias \
&& orig=$(DESTDIR)$(localedir)/locale.alias \
|| orig=$(srcdir)/locale.alias; \
@ -71,6 +76,33 @@ install-l: $(builddir)/charset.alias all
else \
: ; \
fi
mv $@.new $@
uninstall-l:
@if test '@USE_INCLUDED_LIBINTL@' = yes; then \
if test -f $(DESTDIR)$(libdir)/charset.alias; then \
temp=$(DESTDIR)$(libdir)/t-charset.alias; \
dest=$(DESTDIR)$(libdir)/charset.alias; \
sed -f ref-del.sed $$dest > $$temp; \
if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
rm -f $$dest; \
else \
$(INSTALL_DATA) $$temp $$dest; \
fi; \
rm -f $$temp; \
fi; \
if test -f $(DESTDIR)$(localedir)/locale.alias; then \
temp=$(DESTDIR)$(localedir)/t-locale.alias; \
dest=$(DESTDIR)$(localedir)/locale.alias; \
sed -f ref-del.sed $$dest > $$temp; \
if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
rm -f $$dest; \
else \
$(INSTALL_DATA) $$temp $$dest; \
fi; \
rm -f $$temp; \
fi; \
else \
: ; \
fi
include $(path_to_top)/Makefile.lib

View File

@ -52,6 +52,7 @@ struct language languages[] = {
{N_("Portuguese"), "pt"},
{N_("Romanian"), "ro"},
{N_("Russian"), "ru"},
{N_("Serbian"), "sr"},
{N_("Slovak"), "sk"},
{N_("Spanish"), "es"},
{N_("Swedish"), "sv"},