curl/docs/examples
Viktor Szakats fb711b5098
build: fix clang-cl builds, add CI job
- appveyor: add build-only job for clang-cl.

- cmake: `-pedantic-errors` enables `-Werror,-Wlanguage-extension-token`
  automatically, which makes `__int64` detection fail.
  Explictly disable this compiler warning for clang-cl to make the
  feature detection work and to accept `__int64` in the source code.

- cmake: disable `-Wlanguage-extension-token` warning for clang-cl
  to fix these when encountering `__int64`:
  ```
  lib/formdata.c(797,29): error : extension used [-Werror,-Wlanguage-extension-token]
  lib/warnless.c(117,33): error : extension used [-Werror,-Wlanguage-extension-token]
  lib/warnless.c(60,28): message : expanded from macro 'CURL_MASK_SCOFFT'
  lib/warnless.c(59,38): message : expanded from macro 'CURL_MASK_UCOFFT'
  include\curl/system.h(352,40): message : expanded from macro 'CURL_TYPEOF_CURL_OFF_T'
  ```

- make `__GNUC__` warning suppressions apply to `__clang__` too.
  Necessary for clang-cl, which defines the latter, but not the former.
  (Regular clang defines both.)

- examples: fix clang-cl compiler warning in `http2-upload.c`.
  ```
  docs\examples\http2-upload.c(56,5): error : no previous prototype for function 'my_gettimeofday' [-Werror,-Wmissing-prototypes]
  docs\examples\http2-upload.c(56,1): message : declare 'static' if the function is not intended to be used outside of this translation unit
  ```

- unit2604: add missing `#pragma GCC diagnostic pop`.
  Follow-up to e53523fef0 #14859

- unit1652: limit compiler warning suppression to GCC.
  They do not affect clang builds.
  Follow-up to 71cf0d1fca #14772

Closes #15449
2024-10-30 23:15:32 +01:00
..
.checksrc
.gitignore
10-at-a-time.c
adddocsref.pl
address-scope.c
altsvc.c
anyauthput.c
cacertinmem.c
certinfo.c
chkspeed.c
CMakeLists.txt
connect-to.c
cookie_interface.c
crawler.c
debug.c
default-scheme.c
ephiperfifo.c
evhiperfifo.c
externalsocket.c
fileupload.c
ftp-wildcard.c
ftpget.c
ftpgetinfo.c
ftpgetresp.c
ftpsget.c
ftpupload.c
ftpuploadfrommem.c
ftpuploadresume.c
getinfo.c
getinmemory.c
getredirect.c
getreferrer.c
ghiper.c
headerapi.c
hiperfifo.c
href_extractor.c
hsts-preload.c
htmltidy.c
htmltitle.cpp
http2-download.c
http2-pushinmemory.c
http2-serverpush.c
http2-upload.c
http3-present.c
http3.c
http-options.c
http-post.c
httpcustomheader.c
httpput-postfields.c
httpput.c
https.c
imap-append.c
imap-authzid.c
imap-copy.c
imap-create.c
imap-delete.c
imap-examine.c
imap-fetch.c
imap-list.c
imap-lsub.c
imap-multi.c
imap-noop.c
imap-search.c
imap-ssl.c
imap-store.c
imap-tls.c
interface.c
ipv6.c
keepalive.c
localport.c
Makefile.am
Makefile.example
Makefile.inc
Makefile.mk
maxconnects.c
multi-app.c
multi-debugcallback.c
multi-double.c
multi-event.c
multi-formadd.c
multi-legacy.c
multi-post.c
multi-single.c
multi-uv.c
multithread.c
netrc.c
parseurl.c
persistent.c
pop3-authzid.c
pop3-dele.c
pop3-list.c
pop3-multi.c
pop3-noop.c
pop3-retr.c
pop3-ssl.c
pop3-stat.c
pop3-tls.c
pop3-top.c
pop3-uidl.c
post-callback.c
postinmemory.c
postit2-formadd.c
postit2.c
progressfunc.c
protofeats.c
range.c
README.md
resolve.c
rtsp-options.c
sendrecv.c
sepheaders.c
sessioninfo.c
sftpget.c
sftpuploadresume.c
shared-connection-cache.c
simple.c
simplepost.c
simplessl.c
smooth-gtk-thread.c
smtp-authzid.c
smtp-expn.c
smtp-mail.c
smtp-mime.c
smtp-multi.c
smtp-ssl.c
smtp-tls.c
smtp-vrfy.c
sslbackend.c
synctime.c
threaded-ssl.c
unixsocket.c
url2file.c
urlapi.c
usercertinmem.c
version-check.pl
websocket-cb.c
websocket.c
xmlstream.c

libcurl examples

This directory is for libcurl programming examples. They are meant to show some simple steps on how you can build your own application to take full advantage of libcurl.

If you end up with other small but still useful example sources, please mail them for submission in future packages and on the website.

Building

The Makefile.example is an example Makefile that could be used to build these examples. Just edit the file according to your system and requirements first.

Most examples should build fine using a command line like this:

`curl-config --cc --cflags --libs` -o example-my example.c

Some compilers do not like having the arguments in this order but instead want you do reorganize them like:

`curl-config --cc` -o example-my example.c `curl-config --cflags --libs`

Please do not use the curl.se site as a test target for your libcurl applications/experiments. Even if some of the examples use that site as a URL at some places, it does not mean that the URLs work or that we expect you to actually torture our website with your tests. Thanks.

Examples

Each example source code file is designed to be and work stand-alone and rather self-explanatory. The examples may at times lack the level of error checks you need in a real world, but that is then only for the sake of readability: to make the code smaller and easier to follow.