Add curl example (#42)

make -j8 o//examples/curl.com
    o//examples/curl.com http://justine.lol/ape.html
This commit is contained in:
Justine Tunney 2021-02-18 19:20:41 -08:00
parent 667ab245fe
commit 2c15efc249
29 changed files with 208 additions and 153 deletions

View file

@ -1,15 +1,34 @@
#ifndef COSMOPOLITAN_LIBC_DNS_DNS_H_
#define COSMOPOLITAN_LIBC_DNS_DNS_H_
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_
#include "libc/dns/resolvconf.h"
#include "libc/sock/sock.h"
#define DNS_PORT 53
#define DNS_NAME_MAX 253
#define DNS_PORT 53
#define DNS_NAME_MAX 253
#define DNS_LABEL_MAX 63
struct sockaddr;
struct sockaddr_in;
struct ResolvConf;
#define EAI_SUCCESS 0
#define EAI_BADFLAGS -1
#define EAI_NONAME -2
#define EAI_AGAIN -3
#define EAI_FAIL -4
#define EAI_NODATA -5
#define EAI_FAMILY -6
#define EAI_SOCKTYPE -7
#define EAI_SERVICE -8
#define EAI_ADDRFAMILY -9
#define EAI_MEMORY -10
#define EAI_OVERFLOW -12
#define EAI_SYSTEM -11
#define EAI_ALLDONE -103
#define EAI_CANCELED -101
#define EAI_IDN_ENCODE -105
#define EAI_INPROGRESS -100
#define EAI_INTR -104
#define EAI_NOTCANCELED -102
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_
struct addrinfo {
int32_t ai_flags; /* AI_XXX */

View file

@ -17,30 +17,51 @@
PERFORMANCE OF THIS SOFTWARE.
*/
#include "libc/dns/dns.h"
#include "libc/sysv/consts/eai.h"
/**
* Turns getaddrinfo() return code into string.
*/
const char *eai2str(int code) {
if (code == EAI_ADDRFAMILY) return "ADDRFAMILY";
if (code == EAI_AGAIN) return "AGAIN";
if (code == EAI_ALLDONE) return "ALLDONE";
if (code == EAI_BADFLAGS) return "BADFLAGS";
if (code == EAI_CANCELED) return "CANCELED";
if (code == EAI_FAIL) return "FAIL";
if (code == EAI_FAMILY) return "FAMILY";
if (code == EAI_IDN_ENCODE) return "ENCODE";
if (code == EAI_INPROGRESS) return "INPROGRESS";
if (code == EAI_INTR) return "INTR";
if (code == EAI_MEMORY) return "MEMORY";
if (code == EAI_NODATA) return "NODATA";
if (code == EAI_NONAME) return "NONAME";
if (code == EAI_NOTCANCELED) return "NOTCANCELED";
if (code == EAI_OVERFLOW) return "OVERFLOW";
if (code == EAI_SERVICE) return "SERVICE";
if (code == EAI_SOCKTYPE) return "SOCKTYPE";
if (code == EAI_SUCCESS) return "SUCCESS";
if (code == EAI_SYSTEM) return "SYSTEM";
return "???";
switch (code) {
case EAI_ADDRFAMILY:
return "ADDRFAMILY";
case EAI_AGAIN:
return "AGAIN";
case EAI_ALLDONE:
return "ALLDONE";
case EAI_BADFLAGS:
return "BADFLAGS";
case EAI_CANCELED:
return "CANCELED";
case EAI_FAIL:
return "FAIL";
case EAI_FAMILY:
return "FAMILY";
case EAI_IDN_ENCODE:
return "ENCODE";
case EAI_INPROGRESS:
return "INPROGRESS";
case EAI_INTR:
return "INTR";
case EAI_MEMORY:
return "MEMORY";
case EAI_NODATA:
return "NODATA";
case EAI_NONAME:
return "NONAME";
case EAI_NOTCANCELED:
return "NOTCANCELED";
case EAI_OVERFLOW:
return "OVERFLOW";
case EAI_SERVICE:
return "SERVICE";
case EAI_SOCKTYPE:
return "SOCKTYPE";
case EAI_SUCCESS:
return "SUCCESS";
case EAI_SYSTEM:
return "SYSTEM";
default:
return "???";
}
}

View file

@ -27,7 +27,6 @@
#include "libc/str/str.h"
#include "libc/sysv/consts/af.h"
#include "libc/sysv/consts/ai.h"
#include "libc/sysv/consts/eai.h"
#include "libc/sysv/consts/inaddr.h"
#include "libc/sysv/errfuns.h"

View file

@ -1,11 +1,10 @@
#ifndef COSMOPOLITAN_LIBC_DNS_RESOLVCONF_H_
#define COSMOPOLITAN_LIBC_DNS_RESOLVCONF_H_
#include "libc/sock/sock.h"
#include "libc/stdio/stdio.h"
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_
struct FILE;
struct sockaddr_in;
struct Nameservers {
size_t i, n;
struct sockaddr_in *p;