1 Curl on Symbian OS 2 ================== 3 This is a basic port of curl and libcurl to Symbian OS. The port is 4 a straightforward one using Symbian's P.I.P.S. POSIX compatibility 5 layer, which was first available for OS version 9.1. A more complete 6 port would involve writing a Symbian C++ binding, or wrapping libcurl 7 as a Symbian application server with a C++ API to handle requests 8 from client applications as well as creating a GUI application to allow 9 file transfers. The author has no current plans to do so. 10 11 This means that integration with standard Symbian OS programs can be 12 tricky, since libcurl isn't designed with Symbian's native asynchronous 13 message passing idioms in mind. However, it may be possible to use libcurl 14 in an active object-based application through libcurl's multi interface. 15 The port is most easily used when porting POSIX applications to Symbian 16 OS using P.I.P.S. (a.k.a. Open C). 17 18 libcurl is built as a standard Symbian ordinal-linked DLL, and curl is 19 built as a text mode EXE application. They have not been Symbian 20 Signed, which is required in order to install them on most phones. 21 22 Following are some things to keep in mind when using this port. 23 24 25 curl notes 26 ---------- 27 When starting curl in the Windows emulator from the Windows command-line, 28 place a double-dash -- before the first curl command-line option. 29 e.g. \epoc32\release\winscw\udeb\curl -- -v http://localhost/ 30 Failure to do so may mean that some of your options won't be correctly 31 processed. 32 33 Symbian's ESHELL allows for redirecting stdin and stdout to files, but 34 stderr goes to the epocwind.out file (on the emulator). The standard 35 curl options -o, --stderr and --trace-ascii can be used to 36 redirect output to a file (or stdout) instead. 37 38 P.I.P.S. doesn't inherit the current working directory at startup from 39 the shell, so relative path names are always relative to 40 C:\Private\f0206442\. 41 42 P.I.P.S. provides no way to disable echoing of characters as they are 43 entered, so passwords typed in on the console will be visible. It also 44 line buffers keyboard input so interactive telnet sessions are not very 45 feasible. 46 47 All screen output disappears after curl exits, so after a command completes, 48 curl waits by default for Enter to be pressed before exiting. This behaviour 49 is suppressed when the -s option is given. 50 51 curl's "home directory" in Symbian is C:\Private\f0206442\. The .curlrc file 52 is read from this directory on startup. 53 54 55 libcurl notes 56 ------------- 57 libcurl uses writable static data, so the EPOCALLOWDLLDATA option is 58 used in its MMP file, with the corresponding additional memory usage 59 and limitations on the Windows emulator. 60 61 curl_global_init() *must* be called (either explicitly or implicitly through 62 calling certain other libcurl functions) before any libcurl functions 63 that could allocate memory (like curl_getenv()). 64 65 P.I.P.S. doesn't support signals or the alarm() call, so some timeouts 66 (such as the connect timeout) are not honoured. This should not be 67 an issue once support for CURLRES_THREADED is added for Symbian. 68 69 P.I.P.S. causes a USER:87 panic if certain timeouts much longer than 70 half an hour are selected. 71 72 LDAP, SCP or SFTP methods are not supported due to lack of support for 73 the dependent libaries on Symbian. 74 75 gzip and deflate decompression is supported when the appropriate macro 76 is uncommented in the libcurl.mmp file. 77 78 SSL/TLS encryption is not enabled by default, but it is possible to add 79 when the OpenSSL libraries included in the S60 Open C SDK are available. 80 The appropriate macro in the libcurl.mmp file must be uncommented to 81 enable support. 82 83 NTLM authentication may not work on some servers due to the lack of 84 MD4 support in the OpenSSL libraries included with Open C. 85 86 Debug builds are not supported (i.e. --enable-debug) because they cause 87 additional symbol exports in the library which are not frozen in the .def 88 files. 89 90 91 Dan Fandrich 92 dan (a] coneharvesters.com 93 March 2010 94