123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- Curl on Symbian OS
- ==================
- This is a basic port of curl and libcurl to Symbian OS. The port is
- a straightforward one using Symbian's P.I.P.S. POSIX compatibility
- layer, which was first available for OS version 9.1. A more complete
- port would involve writing a Symbian C++ binding, or wrapping libcurl
- as a Symbian application server with a C++ API to handle requests
- from client applications as well as creating a GUI application to allow
- file transfers. The author has no current plans to do so.
- This means that integration with standard Symbian OS programs can be
- tricky, since libcurl isn't designed with Symbian's native asynchronous
- message passing idioms in mind. However, it may be possible to use libcurl
- in an active object-based application through libcurl's multi interface.
- The port is most easily used when porting POSIX applications to Symbian
- OS using P.I.P.S. (a.k.a. Open C).
- libcurl is built as a standard Symbian ordinal-linked DLL, and curl is
- built as a text mode EXE application. They have not been Symbian
- Signed, which is required in order to install them on most phones.
- Following are some things to keep in mind when using this port.
- curl notes
- ----------
- When starting curl in the Windows emulator from the Windows command-line,
- place a double-dash -- before the first curl command-line option.
- e.g. \epoc32\release\winscw\udeb\curl -- -v http://localhost/
- Failure to do so may mean that some of your options won't be correctly
- processed.
- Symbian's ESHELL allows for redirecting stdin and stdout to files, but
- stderr goes to the epocwind.out file (on the emulator). The standard
- curl options -o, --stderr and --trace-ascii can be used to
- redirect output to a file (or stdout) instead.
- P.I.P.S. doesn't inherit the current working directory at startup from
- the shell, so relative path names are always relative to
- C:\Private\f0206442\.
- P.I.P.S. provides no way to disable echoing of characters as they are
- entered, so passwords typed in on the console will be visible. It also
- line buffers keyboard input so interactive telnet sessions are not very
- feasible.
- All screen output disappears after curl exits, so after a command completes,
- curl waits by default for Enter to be pressed before exiting. This behaviour
- is suppressed when the -s option is given.
- curl's "home directory" in Symbian is C:\Private\f0206442\. The .curlrc file
- is read from this directory on startup.
- libcurl notes
- -------------
- libcurl uses writable static data, so the EPOCALLOWDLLDATA option is
- used in its MMP file, with the corresponding additional memory usage
- and limitations on the Windows emulator.
- curl_global_init() *must* be called (either explicitly or implicitly through
- calling certain other libcurl functions) before any libcurl functions
- that could allocate memory (like curl_getenv()).
- P.I.P.S. doesn't support signals or the alarm() call, so some timeouts
- (such as the connect timeout) are not honoured. This should not be
- an issue once support for CURLRES_THREADED is added for Symbian.
- P.I.P.S. causes a USER:87 panic if certain timeouts much longer than
- half an hour are selected.
- LDAP, SCP or SFTP methods are not supported due to lack of support for
- the dependent libraries on Symbian.
- gzip and deflate decompression is supported when the appropriate macro
- is uncommented in the libcurl.mmp file.
- SSL/TLS encryption is not enabled by default, but it is possible to add
- when the OpenSSL libraries included in the S60 Open C SDK are available.
- The appropriate macro in the libcurl.mmp file must be uncommented to
- enable support.
- NTLM authentication may not work on some servers due to the lack of
- MD4 support in the OpenSSL libraries included with Open C.
- Debug builds are not supported (i.e. --enable-debug) because they cause
- additional symbol exports in the library which are not frozen in the .def
- files.
- Dan Fandrich
- dan@coneharvesters.com
- March 2010
|