This makes url_normalize take care of whitespace in a fairly useful way,
consistent with other browsers:
- Leading and trailing whitespace is trimmed
- Internal whitespace is urlescaped
For example,
" http://www.google.co.uk/search?q=hello world "
becomes
"http://www.google.co.uk/search?q=hello%20world"
Explicit trailing whitespace, e.g. "...hello world%20", is left alone.
The upshot is that if you sloppily copy-paste a URL from IRC or whatnot
into the address bar, NetSurf no longer silently ignores you if you
caught some adjacent whitespace.
svn path=/trunk/netsurf/; revision=4198
Do not change the locale globally, else things will break in weird and
wonderful ways.
Introduce utils/locale.[ch], which provide locale-specific wrappers for various
functions (currently just the <ctype.h> ones).
Fix up the few places I can see that actually require that the underlying
locale is paid attention to.
Some notes:
1) The GTK frontend code has not been touched. It is possible that reading of
numeric values (e.g. from the preferences dialogue) may break with this
change, particularly in locales that use something other than '.' as their
decimal separator.
2) The search code is left unchanged (i.e. assuming a locale of "C").
This may break case insensitive matching of non-ASCII characters.
I doubt that ever actually worked, anyway. In future, it should use
Unicode case conversion to achieve the same effect.
3) The text input handling in the core makes use of isspace() to detect
word boundaries. This is fine for western languages (even in the C locale,
which it's currently assuming). It will, however, break for CJK et. al.
(this has always been the case, rather than being a new issue)
4) text-transform uses locale-specific variants of to{lower,upper}. In future
this should probably be performing Unicode case conversion. This is the
only part of the core code that makes use of locale information.
In future, if you require locale-specific behaviour, do the following:
setlocale(LC_<whatever>, "");
<your operation(s) here>
setlocale(LC_<whatever>, "C");
The first setlocale will change the current locale to the native environment.
The second setlocale will reset the current locale to "C".
Any value other than "" or "C" is probably a bug, unless there's a really
good reason for it.
In the long term, it is expected that all locale-dependent code will reside in
platform frontends -- the core being wholly locale agnostic (though assuming
"C" for things like decimal separators).
svn path=/trunk/netsurf/; revision=4153
- utils/{url.c,url.h}(url_escape):
* added parameter 'toskip' to specify number of input characters which need to be skipped in the escape process. This avoids extra malloc buffer juggling.
* added parameter 'escexceptions' to specify the characters which need to be excluded from the escape process.
Solves SF tracker ID 1910169.
Note that when discname in path contains '/' characters (case: "file:///Sunfish#192.168.0.50::/home/joty.$/jo.html") or there is no discname specified at all (case "file:///HostFS:$/jo.htm"), you
need an UnixLib fix as in http://www.riscos.info/websvn/listing.php?repname=gccsdk&path=%2Ftrunk%2Fgcc4%2F&rev=3395&sc=1
svn path=/trunk/netsurf/; revision=4069
Aside from a number of instances of const being cast away (mostly relating to the urldb, which is correct to only export const data) this now builds warning-free with GCC 4 on x86, which is nice.
svn path=/trunk/netsurf/; revision=3868
Optionally allow url_compare to ignore fragments in comparison
Fix handling of url_compare result in a few places
Fix redirects which contain fragments in the Location header
svn path=/trunk/netsurf/; revision=3826
Make url_path() return the full path (including the leafname).
Defaulted cookie path attributes have the leafname and trailing slash stripped.
Add testcase for defaulted path.
Fix testcase conditions for paths with leafnames.
svn path=/trunk/netsurf/; revision=3693
* Tested on Solaris Express: Developer Edition,
which is between Solaris 10 and 11.
* Used gcc, libmng etc packages using pkg-get and blastwave's resources.
* Had to build lemon and re2c manually.
svn path=/trunk/netsurf/; revision=3350
* Remove usage of d_ino from utils/filename.c (it was checking
for the inode being 0, and I cannot spot anywhere in UnixLib
where it would explicitly do this anyway)
* Add -D_XOPEN_SOURCE=600 to gcc command line, and replace old
-D_POSIX_C_SOURCE to include =200112L (as that's the standard
we use).
svn path=/trunk/netsurf/; revision=3347
NetSurf includes are now done with ""s and other system includes with <>s as C intended.
The scandeps tool has been updated to only look for ""ed includes, and to verify that the
files exist in the tree before adding them to the dependency lines. The depend rule has
therefore been augmented to make sure the autogenerated files are built before it is run.
This is untested under self-hosted RISC OS builds. All else tested and works.
svn path=/trunk/netsurf/; revision=3307
1) Make hash_* more robust in the face of bad parameters
2) Make messages_* more robust in the face of bad parameters
3) Tidy up gui_init such that localised messages are loaded at the
earliest opportunity
svn path=/trunk/netsurf/; revision=2998
Constify return of filename_request
Make bitmap save code check for filename_request failure
Update ro_gui_view_source to take account of constification
svn path=/trunk/netsurf/; revision=2639
Handle invalid SSL certificates better - UI still needs work.
Modify fetch callback data parameter type to remove compiler warnings.
Constify things.
Lose global ssl_verify_certificates option.
Fix issue when closing a dialog without input focus.
svn path=/import/netsurf/; revision=2092
Rewrite and simplify url_nice() to improve suggested filenames. Add option to keep extensions (no UI currently).
svn path=/import/netsurf/; revision=1814
- Convert Messages files to UTF-8 encoding.
- Replace local_encoding_name() with platform specific
utf8_[to,from]_local_encoding() functions - this allows mapping of 8bit
characters 0x80->0x9f (inclusive).
- All text that is rendered by the RISC OS Wimp is now converted to the system
local encoding prior to display.
- Lose the horrendous hack that was messages_get_key()
- Menu text is now translated to system local encoding on the fly (if necessary)
rather than at menu creation time. This allows the system alphabet to change
under us and our menus remain usable.
- The Languages menu now lists all languages that are present in the LangNames
file. In the case of selecting the UI language, those languages which are not
available are shaded.
svn path=/import/netsurf/; revision=1796
Improve clarity of use of utf8_to_enc.
Remove use of curl_escape - url_escape does similar things, just better.
svn path=/import/netsurf/; revision=1766
Lose cnv_str_local_enc and friends.
UTF-8 conversion functions now return an enumerated type allowing for fallbacks, if appropriate.
svn path=/import/netsurf/; revision=1744