Build of rtmpdump with android toolchain

The build took 00h 00m 54s and was NOT successful.

The program in this build is written in the following languages, according to sloccount:

SLOCLanguage
12,659 ansic
261 sh
166 makefile
13,086 total

The process tree of the build process is here.

Several sub-process invocations were improper; see the process tree for details. Summary:

List of Errors

Log

To avoid scrolling, you may jump to the last line of the invocation of makepkg that was used to build this package.

Removed vanilla repositories from pacman.conf and added:
# [tuscan]
# Server = file:///var/cache/pacman/pkg/

CMD: pacman -Syy --noconfirm
# :: Synchronizing package databases...
# downloading tuscan.db...

Copied permanent toolchain into container-local sysroot
# /toolchain_root/arm-linux-androideabi --> /sysroot/arm-linux-androideabi
# /toolchain_root/COPYING3.LIB --> /sysroot/COPYING3.LIB
# /toolchain_root/sysroot --> /sysroot/sysroot
# /toolchain_root/COPYING.RUNTIME --> /sysroot/COPYING.RUNTIME
# /toolchain_root/lib --> /sysroot/lib
# /toolchain_root/SOURCES --> /sysroot/SOURCES
# /toolchain_root/lib64 --> /sysroot/lib64
# /toolchain_root/share --> /sysroot/share
# /toolchain_root/bin --> /sysroot/bin
# /toolchain_root/COPYING --> /sysroot/COPYING
# /toolchain_root/COPYING3 --> /sysroot/COPYING3
# /toolchain_root/COPYING.LIB --> /sysroot/COPYING.LIB
# /toolchain_root/include --> /sysroot/include
# /toolchain_root/libexec --> /sysroot/libexec

CMD: sudo -u tuscan PATH=/sysroot/bin:/sysroot/libexec/gcc/arm-linux-androideabi/4.8:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin CC=arm-linux-androideabi-gcc CXX=arm-linux-androideabi-g++ red makepkg --noextract --syncdeps --skipinteg --skippgpcheck --skipchecksums --noconfirm --nocolor --log --noprogressbar --nocheck
# ==> Making package: rtmpdump 1:2.4.r96.fa8646d-2 (Tue Apr 4 21:59:12 UTC 2017)
# ==> Checking runtime dependencies...
# ==> Checking buildtime dependencies...
# ==> WARNING: Using existing $srcdir/ tree
# ==> Starting pkgver()...
# ==> Starting build()...
# make[1]: Entering directory '/tmp/rtmpdump/src/rtmpdump/librtmp'
# gcc -Wall -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL -fPIC -c -o rtmp.o rtmp.c
# cc1: error: no include path in which to search for stdc-predef.h
# rtmp.c:26:20: error: no include path in which to search for stdint.h
# #include
# ^
# rtmp.c:27:20: error: no include path in which to search for stdlib.h
# #include
# ^
# rtmp.c:28:20: error: no include path in which to search for string.h
# #include
# ^
# rtmp.c:29:20: error: no include path in which to search for assert.h
# #include
# ^
# rtmp.c:30:18: error: no include path in which to search for time.h
# #include
# ^
# In file included from rtmp.c:32:0:
# rtmp_sys.h:45:23: error: no include path in which to search for sys/types.h
# #include
# ^
# rtmp_sys.h:46:24: error: no include path in which to search for sys/socket.h
# #include
# ^
# rtmp_sys.h:47:23: error: no include path in which to search for sys/times.h
# #include
# ^
# rtmp_sys.h:48:19: error: no include path in which to search for netdb.h
# #include
# ^
# rtmp_sys.h:49:20: error: no include path in which to search for unistd.h
# #include
# ^
# rtmp_sys.h:50:24: error: no include path in which to search for netinet/in.h
# #include
# ^
# rtmp_sys.h:51:25: error: no include path in which to search for netinet/tcp.h
# #include
# ^
# rtmp_sys.h:52:23: error: no include path in which to search for arpa/inet.h
# #include
# ^
# In file included from rtmp_sys.h:61:0,
# from rtmp.c:32:
# rtmp.h:32:19: error: no include path in which to search for errno.h
# #include
# ^
# rtmp.h:33:20: error: no include path in which to search for stdint.h
# #include
# ^
# rtmp.h:34:20: error: no include path in which to search for stddef.h
# #include
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:28:20: error: no include path in which to search for stdint.h
# #include
# ^
# amf.h:83:5: error: unknown type name 'int16_t'
# int16_t p_UTCoffset;
# ^
# In file included from rtmp_sys.h:61:0,
# from rtmp.c:32:
# rtmp.h:72:3: error: unknown type name 'uint32_t'
# uint32_t RTMP_GetTime(void);
# ^
# rtmp.h:115:5: error: unknown type name 'uint8_t'
# uint8_t m_headerType;
# ^
# rtmp.h:116:5: error: unknown type name 'uint8_t'
# uint8_t m_packetType;
# ^
# rtmp.h:117:5: error: unknown type name 'uint8_t'
# uint8_t m_hasAbsTimestamp; /* timestamp absolute or relative? */
# ^
# rtmp.h:119:5: error: unknown type name 'uint32_t'
# uint32_t m_nTimeStamp; /* timestamp */
# ^
# rtmp.h:120:5: error: unknown type name 'int32_t'
# int32_t m_nInfoField2; /* last 4 bytes in a long header */
# ^
# rtmp.h:121:5: error: unknown type name 'uint32_t'
# uint32_t m_nBodySize;
# ^
# rtmp.h:122:5: error: unknown type name 'uint32_t'
# uint32_t m_nBytesRead;
# ^
# rtmp.h:139:39: error: unknown type name 'uint32_t'
# int RTMPPacket_Alloc(RTMPPacket *p, uint32_t nSize);
# ^
# rtmp.h:193:5: error: unknown type name 'uint32_t'
# uint32_t SWFSize;
# ^
# rtmp.h:194:5: error: unknown type name 'uint8_t'
# uint8_t SWFHash[RTMP_SWF_HASHLEN];
# ^
# rtmp.h:205:5: error: unknown type name 'uint32_t'
# uint32_t timestamp;
# ^
# rtmp.h:206:5: error: unknown type name 'uint8_t'
# uint8_t dataType;
# ^
# rtmp.h:207:5: error: unknown type name 'uint8_t'
# uint8_t flags;
# ^
# rtmp.h:214:5: error: unknown type name 'int8_t'
# int8_t status;
# ^
# rtmp.h:221:5: error: unknown type name 'uint8_t'
# uint8_t initialFrameType;
# ^
# rtmp.h:222:5: error: unknown type name 'uint32_t'
# uint32_t nResumeTS;
# ^
# rtmp.h:225:5: error: unknown type name 'uint32_t'
# uint32_t nMetaHeaderSize;
# ^
# rtmp.h:226:5: error: unknown type name 'uint32_t'
# uint32_t nInitialFrameSize;
# ^
# rtmp.h:227:5: error: unknown type name 'uint32_t'
# uint32_t nIgnoredFrameCounter;
# ^
# rtmp.h:228:5: error: unknown type name 'uint32_t'
# uint32_t nIgnoredFlvFrameCounter;
# ^
# rtmp.h:247:5: error: unknown type name 'uint32_t'
# uint32_t m_mediaStamp;
# ^
# rtmp.h:248:5: error: unknown type name 'uint32_t'
# uint32_t m_pauseStamp;
# ^
# rtmp.h:252:5: error: unknown type name 'uint8_t'
# uint8_t m_nClientBW2;
# ^
# rtmp.h:253:5: error: unknown type name 'uint8_t'
# uint8_t m_bPlaying;
# ^
# rtmp.h:254:5: error: unknown type name 'uint8_t'
# uint8_t m_bSendEncoding;
# ^
# rtmp.h:255:5: error: unknown type name 'uint8_t'
# uint8_t m_bSendCounter;
# ^
# rtmp.h:305:4: error: unknown type name 'uint32_t'
# uint32_t swfSize,
# ^
# In file included from rtmp.c:33:0:
# log.h:27:19: error: no include path in which to search for stdio.h
# #include
# ^
# log.h:28:20: error: no include path in which to search for stdarg.h
# #include
# ^
# log.h:29:20: error: no include path in which to search for stdint.h
# #include
# ^
# log.h:48:61: error: unknown type name 'va_list'
# typedef void (RTMP_LogCallback)(int level, const char *fmt, va_list);
# ^
# log.h:49:26: error: unknown type name 'RTMP_LogCallback'
# void RTMP_LogSetCallback(RTMP_LogCallback *cb);
# ^
# log.h:50:24: error: unknown type name 'FILE'
# void RTMP_LogSetOutput(FILE *file);
# ^
# log.h:60:1: error: unknown type name 'uint8_t'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# log.h:61:1: error: unknown type name 'uint8_t'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:60:25: error: no include path in which to search for openssl/ssl.h
# #include
# ^
# rtmp.c:61:25: error: no include path in which to search for openssl/rc4.h
# #include
# ^
# rtmp.c:62:25: error: no include path in which to search for openssl/md5.h
# #include
# ^
# rtmp.c:63:25: error: no include path in which to search for openssl/bio.h
# #include
# ^
# rtmp.c:64:28: error: no include path in which to search for openssl/buffer.h
# #include
# ^
# In file included from rtmp.c:32:0:
# rtmp_sys.h:127:17: error: unknown type name 'SSL_CTX'
# #define TLS_CTX SSL_CTX *
# ^
# rtmp.c:66:1: note: in expansion of macro 'TLS_CTX'
# TLS_CTX RTMP_TLS_ctx;
# ^
# In file included from rtmp.c:152:0:
# handshake.h:66:25: error: no include path in which to search for openssl/sha.h
# #include
# ^
# handshake.h:67:26: error: no include path in which to search for openssl/hmac.h
# #include
# ^
# handshake.h:68:25: error: no include path in which to search for openssl/rc4.h
# #include
# ^
# handshake.h:70:2: error: #error Your OpenSSL is too old, need 0.9.8 or newer with SHA256
# #error Your OpenSSL is too old, need 0.9.8 or newer with SHA256
# ^
# handshake.h:76:1: error: unknown type name 'RC4_KEY'
# typedef RC4_KEY * RC4_handle;
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:24:20: error: no include path in which to search for stdint.h
# #include
# ^
# dh.h:25:20: error: no include path in which to search for stdlib.h
# #include
# ^
# dh.h:26:20: error: no include path in which to search for string.h
# #include
# ^
# dh.h:27:20: error: no include path in which to search for assert.h
# #include
# ^
# dh.h:28:20: error: no include path in which to search for limits.h
# #include
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:167:24: error: no include path in which to search for openssl/bn.h
# #include
# ^
# dh.h:168:24: error: no include path in which to search for openssl/dh.h
# #include
# ^
# dh.h:170:1: error: unknown type name 'BIGNUM'
# typedef BIGNUM * MP_t;
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h: In function 'isValidPublicKey':
# dh.h:201:3: warning: implicit declaration of function 'assert' [-Wimplicit-function-declaration]
# assert(y);
# ^
# dh.h:203:3: warning: implicit declaration of function 'BN_new' [-Wimplicit-function-declaration]
# MP_new(bn);
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:171:21: warning: assignment makes pointer from integer without a cast [enabled by default]
# #define MP_new(m) m = BN_new()
# ^
# dh.h:203:3: note: in expansion of macro 'MP_new'
# MP_new(bn);
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:207:3: warning: implicit declaration of function 'BN_set_word' [-Wimplicit-function-declaration]
# MP_set_w(bn, 1);
# ^
# dh.h:208:3: warning: implicit declaration of function 'BN_cmp' [-Wimplicit-function-declaration]
# if (MP_cmp(y, bn) < 0)
# ^
# dh.h:216:3: warning: implicit declaration of function 'BN_copy' [-Wimplicit-function-declaration]
# MP_set(bn, p);
# ^
# dh.h:217:3: warning: implicit declaration of function 'BN_sub_word' [-Wimplicit-function-declaration]
# MP_sub_w(bn, 1);
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:177:35: error: unknown type name 'BN_CTX'
# #define MP_modexp(r, y, q, p) do {BN_CTX *ctx = BN_CTX_new(); BN_mod_exp(r, y, q, p, ctx); BN_CTX_free(ctx);} while(0)
# ^
# dh.h:234:7: note: in expansion of macro 'MP_modexp'
# MP_modexp(bn, y, q, p);
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:234:7: warning: implicit declaration of function 'BN_CTX_new' [-Wimplicit-function-declaration]
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:177:49: warning: initialization makes pointer from integer without a cast [enabled by default]
# #define MP_modexp(r, y, q, p) do {BN_CTX *ctx = BN_CTX_new(); BN_mod_exp(r, y, q, p, ctx); BN_CTX_free(ctx);} while(0)
# ^
# dh.h:234:7: note: in expansion of macro 'MP_modexp'
# MP_modexp(bn, y, q, p);
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:234:7: warning: implicit declaration of function 'BN_mod_exp' [-Wimplicit-function-declaration]
# dh.h:234:7: warning: implicit declaration of function 'BN_CTX_free' [-Wimplicit-function-declaration]
# dh.h:236:7: warning: implicit declaration of function 'BN_value_one' [-Wimplicit-function-declaration]
# if (MP_cmp_1(bn) != 0)
# ^
# dh.h:243:3: warning: implicit declaration of function 'BN_free' [-Wimplicit-function-declaration]
# MP_free(bn);
# ^
# dh.h: At top level:
# dh.h:247:1: error: unknown type name 'DH'
# static MDH *
# ^
# dh.h: In function 'DHInit':
# dh.h:250:3: error: unknown type name 'size_t'
# size_t res;
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:184:13: error: unknown type name 'DH'
# #define MDH DH
# ^
# dh.h:251:3: note: in expansion of macro 'MDH'
# MDH *dh = MDH_new();
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:251:3: warning: implicit declaration of function 'DH_new' [-Wimplicit-function-declaration]
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:185:19: warning: initialization makes pointer from integer without a cast [enabled by default]
# #define MDH_new() DH_new()
# ^
# dh.h:251:13: note: in expansion of macro 'MDH_new'
# MDH *dh = MDH_new();
# ^
# dh.h:256:12: error: request for member 'g' in something not a structure or union
# MP_new(dh->g);
# ^
# dh.h:171:19: note: in definition of macro 'MP_new'
# #define MP_new(m) m = BN_new()
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:258:10: error: request for member 'g' in something not a structure or union
# if (!dh->g)
# ^
# dh.h:261:3: warning: implicit declaration of function 'BN_hex2bn' [-Wimplicit-function-declaration]
# MP_gethex(dh->p, P1024, res); /* prime P1024, see dhgroups.h */
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:261:15: error: request for member 'p' in something not a structure or union
# MP_gethex(dh->p, P1024, res); /* prime P1024, see dhgroups.h */
# ^
# dh.h:179:49: note: in definition of macro 'MP_gethex'
# #define MP_gethex(u, hex, res) res = BN_hex2bn(&u, hex)
# ^
# dh.h:267:14: error: request for member 'g' in something not a structure or union
# MP_set_w(dh->g, 2); /* base 2 */
# ^
# dh.h:172:38: note: in definition of macro 'MP_set_w'
# #define MP_set_w(mpi, w) BN_set_word(mpi, w)
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:269:5: error: request for member 'length' in something not a structure or union
# dh->length = nKeyBits;
# ^
# dh.h:274:5: warning: implicit declaration of function 'DH_free' [-Wimplicit-function-declaration]
# MDH_free(dh);
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h: At top level:
# dh.h:184:13: error: unknown type name 'DH'
# #define MDH DH
# ^
# dh.h:280:15: note: in expansion of macro 'MDH'
# DHGenerateKey(MDH *dh)
# ^
# dh.h:184:13: error: unknown type name 'DH'
# #define MDH DH
# ^
# dh.h:314:16: note: in expansion of macro 'MDH'
# DHGetPublicKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen)
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:314:25: error: unknown type name 'uint8_t'
# DHGetPublicKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen)
# ^
# dh.h:314:42: error: unknown type name 'size_t'
# DHGetPublicKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen)
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:184:13: error: unknown type name 'DH'
# #define MDH DH
# ^
# dh.h:350:26: note: in expansion of macro 'MDH'
# DHComputeSharedSecretKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen,
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# dh.h:350:35: error: unknown type name 'uint8_t'
# DHComputeSharedSecretKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen,
# ^
# dh.h:350:52: error: unknown type name 'size_t'
# DHComputeSharedSecretKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen,
# ^
# dh.h:351:5: error: unknown type name 'uint8_t'
# uint8_t *secret)
# ^
# In file included from rtmp.c:152:0:
# handshake.h:88:1: error: unknown type name 'uint8_t'
# static const uint8_t GenuineFMSKey[] = {
# ^
# handshake.h:101:1: error: unknown type name 'uint8_t'
# static const uint8_t GenuineFPKey[] = {
# ^
# handshake.h:114:4: error: unknown type name 'uint8_t'
# (uint8_t * secretKey,
# ^
# handshake.h:115:4: error: unknown type name 'uint8_t'
# uint8_t * pubKeyIn,
# ^
# handshake.h:116:4: error: unknown type name 'uint8_t'
# uint8_t * pubKeyOut, RC4_handle *rc4keyIn, RC4_handle *rc4keyOut)
# ^
# handshake.h:144:31: error: unknown type name 'uint8_t'
# typedef unsigned int (getoff)(uint8_t *buf, unsigned int len);
# ^
# handshake.h:147:14: error: unknown type name 'uint8_t'
# GetDHOffset2(uint8_t *handshake, unsigned int len)
# ^
# handshake.h:176:18: error: unknown type name 'uint8_t'
# GetDigestOffset2(uint8_t *handshake, unsigned int len)
# ^
# handshake.h:203:14: error: unknown type name 'uint8_t'
# GetDHOffset1(uint8_t *handshake, unsigned int len)
# ^
# handshake.h:232:18: error: unknown type name 'uint8_t'
# GetDigestOffset1(uint8_t *handshake, unsigned int len)
# ^
# handshake.h:261:1: error: unknown type name 'getoff'
# static getoff *digoff[] = {GetDigestOffset1, GetDigestOffset2};
# ^
# handshake.h:261:28: error: 'GetDigestOffset1' undeclared here (not in a function)
# static getoff *digoff[] = {GetDigestOffset1, GetDigestOffset2};
# ^
# handshake.h:261:46: error: 'GetDigestOffset2' undeclared here (not in a function)
# static getoff *digoff[] = {GetDigestOffset1, GetDigestOffset2};
# ^
# handshake.h:262:1: error: unknown type name 'getoff'
# static getoff *dhoff[] = {GetDHOffset1, GetDHOffset2};
# ^
# handshake.h:262:27: error: 'GetDHOffset1' undeclared here (not in a function)
# static getoff *dhoff[] = {GetDHOffset1, GetDHOffset2};
# ^
# handshake.h:262:1: error: initializer element is not constant
# static getoff *dhoff[] = {GetDHOffset1, GetDHOffset2};
# ^
# handshake.h:262:1: error: (near initialization for 'dhoff[0]')
# handshake.h:262:41: error: 'GetDHOffset2' undeclared here (not in a function)
# static getoff *dhoff[] = {GetDHOffset1, GetDHOffset2};
# ^
# handshake.h:262:1: error: initializer element is not constant
# static getoff *dhoff[] = {GetDHOffset1, GetDHOffset2};
# ^
# handshake.h:262:1: error: (near initialization for 'dhoff[1]')
# handshake.h:265:1: error: unknown type name 'uint8_t'
# HMACsha256(const uint8_t *message, size_t messageLen, const uint8_t *key,
# ^
# handshake.h:265:36: error: unknown type name 'size_t'
# HMACsha256(const uint8_t *message, size_t messageLen, const uint8_t *key,
# ^
# handshake.h:265:36: error: unknown type name 'uint8_t'
# handshake.h:266:5: error: unknown type name 'size_t'
# size_t keylen, uint8_t *digest)
# ^
# handshake.h:266:20: error: unknown type name 'uint8_t'
# size_t keylen, uint8_t *digest)
# ^
# handshake.h:279:41: error: unknown type name 'uint8_t'
# CalculateDigest(unsigned int digestPos, uint8_t *handshakeMessage,
# ^
# handshake.h:280:3: error: unknown type name 'uint8_t'
# const uint8_t *key, size_t keyLen, uint8_t *digest)
# ^
# handshake.h:280:23: error: unknown type name 'size_t'
# const uint8_t *key, size_t keyLen, uint8_t *digest)
# ^
# handshake.h:280:38: error: unknown type name 'uint8_t'
# const uint8_t *key, size_t keyLen, uint8_t *digest)
# ^
# handshake.h:294:38: error: unknown type name 'uint8_t'
# VerifyDigest(unsigned int digestPos, uint8_t *handshakeMessage, const uint8_t *key,
# ^
# handshake.h:294:38: error: unknown type name 'uint8_t'
# handshake.h:295:7: error: unknown type name 'size_t'
# size_t keyLen)
# ^
# handshake.h:315:1: error: unknown type name 'uint32_t'
# static const uint32_t rtmpe8_keys[16][4] = {
# ^
# handshake.h:337:24: error: unknown type name 'uint8_t'
# static void rtmpe8_sig(uint8_t *in, uint8_t *out, int keyid)
# ^
# handshake.h:337:37: error: unknown type name 'uint8_t'
# static void rtmpe8_sig(uint8_t *in, uint8_t *out, int keyid)
# ^
# handshake.h:369:2: error: unknown type name 'uint32_t'
# uint32_t s[4][256];
# ^
# handshake.h:370:2: error: unknown type name 'uint32_t'
# uint32_t p[BF_ROUNDS+2];
# ^
# handshake.h:373:1: error: unknown type name 'uint32_t'
# static const uint32_t bf_sinit[][256] = {
# ^
# handshake.h:556:1: error: unknown type name 'uint32_t'
# static const uint32_t bf_pinit[] = {
# ^
# handshake.h:603:20: error: unknown type name 'uint32_t'
# static void bf_enc(uint32_t *x, bf_key *key)
# ^
# handshake.h: In function 'bf_setkey':
# handshake.h:634:3: error: unknown type name 'uint32_t'
# uint32_t data;
# ^
# handshake.h:635:3: error: unknown type name 'uint32_t'
# uint32_t d[2];
# ^
# handshake.h:637:3: warning: implicit declaration of function 'memcpy' [-Wimplicit-function-declaration]
# memcpy(key->p, bf_pinit, sizeof(key->p));
# ^
# handshake.h:637:3: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# handshake.h:657:5: warning: implicit declaration of function 'bf_enc' [-Wimplicit-function-declaration]
# bf_enc(d, key);
# ^
# handshake.h: At top level:
# handshake.h:674:24: error: unknown type name 'uint8_t'
# static void rtmpe9_sig(uint8_t *in, uint8_t *out, int keyid)
# ^
# handshake.h:674:37: error: unknown type name 'uint8_t'
# static void rtmpe9_sig(uint8_t *in, uint8_t *out, int keyid)
# ^
# handshake.h: In function 'HandShake':
# handshake.h:706:3: error: unknown type name 'int32_t'
# int32_t *ip;
# ^
# handshake.h:707:3: error: unknown type name 'uint32_t'
# uint32_t uptime;
# ^
# handshake.h:709:3: error: unknown type name 'uint8_t'
# uint8_t clientbuf[RTMP_SIG_SIZE + 4], *clientsig=clientbuf+4;
# ^
# handshake.h:710:3: error: unknown type name 'uint8_t'
# uint8_t serversig[RTMP_SIG_SIZE], client2[RTMP_SIG_SIZE], *reply;
# ^
# handshake.h:711:3: error: unknown type name 'uint8_t'
# uint8_t type;
# ^
# handshake.h:712:3: error: unknown type name 'getoff'
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:712:19: error: 'NULL' undeclared (first use in this function)
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:712:19: note: each undeclared identifier is reported only once for each function it appears in
# handshake.h:712:19: warning: initialization from incompatible pointer type [enabled by default]
# handshake.h:712:35: warning: initialization from incompatible pointer type [enabled by default]
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:729:3: warning: implicit declaration of function 'htonl' [-Wimplicit-function-declaration]
# uptime = htonl(RTMP_GetTime());
# ^
# handshake.h:730:3: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(clientsig, &uptime, 4);
# ^
# handshake.h:754:7: warning: implicit declaration of function 'memset' [-Wimplicit-function-declaration]
# memset(&clientsig[4], 0, 4);
# ^
# handshake.h:754:7: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
# handshake.h:761:9: error: 'int32_t' undeclared (first use in this function)
# ip = (int32_t *)(clientsig+8);
# ^
# handshake.h:761:18: error: expected expression before ')' token
# ip = (int32_t *)(clientsig+8);
# ^
# handshake.h:761:17: error: invalid operands to binary * (have 'int **' and 'int **')
# ip = (int32_t *)(clientsig+8);
# ^
# handshake.h:761:19: error: called object is not a function or function pointer
# ip = (int32_t *)(clientsig+8);
# ^
# handshake.h:761:6: warning: assignment from incompatible pointer type [enabled by default]
# ip = (int32_t *)(clientsig+8);
# ^
# handshake.h:763:5: warning: implicit declaration of function 'rand' [-Wimplicit-function-declaration]
# *ip++ = rand();
# ^
# handshake.h:780:23: error: called object 'getdh' is not a function or function pointer
# dhposClient = getdh(clientsig, RTMP_SIG_SIZE);
# ^
# handshake.h:712:11: note: declared here
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:780:16: warning: assignment makes integer from pointer without a cast [enabled by default]
# dhposClient = getdh(clientsig, RTMP_SIG_SIZE);
# ^
# handshake.h:783:4: warning: implicit declaration of function 'DHGenerateKey' [-Wimplicit-function-declaration]
# if (!DHGenerateKey(r->Link.dh))
# ^
# handshake.h:790:4: warning: implicit declaration of function 'DHGetPublicKey' [-Wimplicit-function-declaration]
# if (!DHGetPublicKey(r->Link.dh, &clientsig[dhposClient], 128))
# ^
# handshake.h:797:31: error: called object 'getdig' is not a function or function pointer
# digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); /* reuse this value in verification */
# ^
# handshake.h:712:26: note: declared here
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:797:23: warning: assignment makes integer from pointer without a cast [enabled by default]
# digestPosClient = getdig(clientsig, RTMP_SIG_SIZE); /* reuse this value in verification */
# ^
# handshake.h:801:7: warning: implicit declaration of function 'CalculateDigest' [-Wimplicit-function-declaration]
# CalculateDigest(digestPosClient, clientsig, GenuineFPKey, 30,
# ^
# handshake.h:806:7: error: 'SHA256_DIGEST_LENGTH' undeclared (first use in this function)
# SHA256_DIGEST_LENGTH);
# ^
# handshake.h:806:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:831:3: warning: implicit declaration of function 'ntohl' [-Wimplicit-function-declaration]
# uptime = ntohl(uptime);
# ^
# handshake.h:847:7: error: unknown type name 'uint8_t'
# uint8_t digestResp[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:848:7: error: unknown type name 'uint8_t'
# uint8_t *signatureResp = NULL;
# ^
# handshake.h:848:32: warning: initialization from incompatible pointer type [enabled by default]
# uint8_t *signatureResp = NULL;
# ^
# handshake.h:851:35: error: called object 'getdig' is not a function or function pointer
# int digestPosServer = getdig(serversig, RTMP_SIG_SIZE);
# ^
# handshake.h:712:26: note: declared here
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:851:29: warning: initialization makes integer from pointer without a cast [enabled by default]
# int digestPosServer = getdig(serversig, RTMP_SIG_SIZE);
# ^
# handshake.h:853:7: warning: implicit declaration of function 'VerifyDigest' [-Wimplicit-function-declaration]
# if (!VerifyDigest(digestPosServer, serversig, GenuineFMSKey, 36))
# ^
# handshake.h:859:28: error: called object 'getdig' is not a function or function pointer
# digestPosServer = getdig(serversig, RTMP_SIG_SIZE);
# ^
# handshake.h:712:26: note: declared here
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:859:20: warning: assignment makes integer from pointer without a cast [enabled by default]
# digestPosServer = getdig(serversig, RTMP_SIG_SIZE);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:877:4: warning: implicit declaration of function 'HMACsha256' [-Wimplicit-function-declaration]
# HMACsha256(r->Link.SWFHash, SHA256_DIGEST_LENGTH,
# ^
# handshake.h:878:33: error: invalid operands to binary - (have 'int' and 'int **')
# &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:878:18: error: array subscript is not an integer
# &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:880:9: error: 'uint8_t' undeclared (first use in this function)
# (uint8_t *)&r->Link.SWFVerificationResponse[10]);
# ^
# handshake.h:880:18: error: expected expression before ')' token
# (uint8_t *)&r->Link.SWFVerificationResponse[10]);
# ^
# handshake.h:880:17: error: invalid operands to binary * (have 'int **' and 'int **')
# (uint8_t *)&r->Link.SWFVerificationResponse[10]);
# ^
# handshake.h:887:4: warning: statement with no effect [-Wunused-value]
# uint8_t secretKey[128] = { 0 };
# ^
# handshake.h:887:12: error: expected ';' before 'secretKey'
# uint8_t secretKey[128] = { 0 };
# ^
# handshake.h:890:23: error: called object 'getdh' is not a function or function pointer
# dhposServer = getdh(serversig, RTMP_SIG_SIZE);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:712:11: note: declared here
# getoff *getdh = NULL, *getdig = NULL;
# ^
# In file included from rtmp.c:152:0:
# handshake.h:890:16: warning: assignment makes integer from pointer without a cast [enabled by default]
# dhposServer = getdh(serversig, RTMP_SIG_SIZE);
# ^
# handshake.h:893:4: warning: implicit declaration of function 'DHComputeSharedSecretKey' [-Wimplicit-function-declaration]
# len = DHComputeSharedSecretKey(r->Link.dh, &serversig[dhposServer],
# ^
# handshake.h:894:13: error: 'secretKey' undeclared (first use in this function)
# 128, secretKey);
# ^
# handshake.h:902:4: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, secretKey, 128);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:904:4: warning: implicit declaration of function 'InitRC4Encryption' [-Wimplicit-function-declaration]
# InitRC4Encryption(secretKey,
# ^
# handshake.h:905:18: error: expected expression before ')' token
# (uint8_t *) & serversig[dhposServer],
# ^
# handshake.h:905:17: error: invalid operands to binary * (have 'int **' and 'int **')
# (uint8_t *) & serversig[dhposServer],
# ^
# handshake.h:915:22: error: expected expression before ')' token
# ip = (int32_t *)reply;
# ^
# handshake.h:915:21: error: invalid operands to binary * (have 'int **' and 'int **')
# ip = (int32_t *)reply;
# ^
# handshake.h:915:10: warning: assignment from incompatible pointer type [enabled by default]
# ip = (int32_t *)reply;
# ^
# handshake.h:920:42: error: invalid operands to binary - (have 'int *' and 'int **')
# signatureResp = reply+RTMP_SIG_SIZE-SHA256_DIGEST_LENGTH;
# ^
# handshake.h:920:21: warning: assignment from incompatible pointer type [enabled by default]
# signatureResp = reply+RTMP_SIG_SIZE-SHA256_DIGEST_LENGTH;
# ^
# handshake.h:924:39: error: invalid operands to binary - (have 'int' and 'int **')
# HMACsha256(reply, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digestResp,
# ^
# handshake.h:931:7: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, digestResp, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:931:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, digestResp, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:936:13: error: 'dptr' undeclared (first use in this function)
# uint8_t *dptr = digestResp;
# ^
# handshake.h:936:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *dptr = digestResp;
# ^
# handshake.h:936:4: warning: statement with no effect [-Wunused-value]
# uint8_t *dptr = digestResp;
# ^
# handshake.h:937:13: error: 'sig' undeclared (first use in this function)
# uint8_t *sig = signatureResp;
# ^
# handshake.h:937:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *sig = signatureResp;
# ^
# handshake.h:937:4: warning: statement with no effect [-Wunused-value]
# uint8_t *sig = signatureResp;
# ^
# handshake.h:939:22: warning: comparison between pointer and integer [enabled by default]
# for (i=0; i
# ^
# handshake.h:940:6: warning: implicit declaration of function 'rtmpe8_sig' [-Wimplicit-function-declaration]
# rtmpe8_sig(sig+i, sig+i, dptr[i] % 15);
# ^
# handshake.h:940:39: error: invalid operands to binary % (have 'int *' and 'int')
# rtmpe8_sig(sig+i, sig+i, dptr[i] % 15);
# ^
# handshake.h:944:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *dptr = digestResp;
# ^
# handshake.h:944:4: warning: statement with no effect [-Wunused-value]
# uint8_t *dptr = digestResp;
# ^
# handshake.h:945:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *sig = signatureResp;
# ^
# handshake.h:945:4: warning: statement with no effect [-Wunused-value]
# uint8_t *sig = signatureResp;
# ^
# handshake.h:947:22: warning: comparison between pointer and integer [enabled by default]
# for (i=0; i
# ^
# handshake.h:948:13: warning: implicit declaration of function 'rtmpe9_sig' [-Wimplicit-function-declaration]
# rtmpe9_sig(sig+i, sig+i, dptr[i] % 15);
# ^
# handshake.h:948:46: error: invalid operands to binary % (have 'int *' and 'int')
# rtmpe9_sig(sig+i, sig+i, dptr[i] % 15);
# ^
# handshake.h:952:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, signatureResp, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:847:15: warning: unused variable 'digestResp' [-Wunused-variable]
# uint8_t digestResp[SHA256_DIGEST_LENGTH];
# ^
# In file included from rtmp.c:152:0:
# handshake.h:982:7: warning: statement with no effect [-Wunused-value]
# uint8_t signature[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:982:15: error: expected ';' before 'signature'
# uint8_t signature[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:983:7: warning: statement with no effect [-Wunused-value]
# uint8_t digest[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:983:15: error: expected ';' before 'digest'
# uint8_t digest[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:993:59: error: invalid operands to binary - (have 'int' and 'int **')
# RTMP_LogHex(RTMP_LOGDEBUG, &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:993:44: error: array subscript is not an integer
# RTMP_LogHex(RTMP_LOGDEBUG, &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:994:7: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int * (*)[1]'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:994:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:998:42: error: 'digest' undeclared (first use in this function)
# GenuineFMSKey, sizeof(GenuineFMSKey), digest);
# ^
# handshake.h:999:43: error: invalid operands to binary - (have 'int' and 'int **')
# HMACsha256(serversig, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digest,
# ^
# handshake.h:1000:26: error: 'signature' undeclared (first use in this function)
# SHA256_DIGEST_LENGTH, signature);
# ^
# handshake.h:1004:7: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, digest, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1004:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, digest, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1009:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *dptr = digest;
# ^
# handshake.h:1009:4: warning: statement with no effect [-Wunused-value]
# uint8_t *dptr = digest;
# ^
# handshake.h:1010:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *sig = signature;
# ^
# handshake.h:1010:4: warning: statement with no effect [-Wunused-value]
# uint8_t *sig = signature;
# ^
# handshake.h:1012:22: warning: comparison between pointer and integer [enabled by default]
# for (i=0; i
# ^
# handshake.h:1013:39: error: invalid operands to binary % (have 'int *' and 'int')
# rtmpe8_sig(sig+i, sig+i, dptr[i] % 15);
# ^
# handshake.h:1017:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *dptr = digest;
# ^
# handshake.h:1017:4: warning: statement with no effect [-Wunused-value]
# uint8_t *dptr = digest;
# ^
# handshake.h:1018:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *sig = signature;
# ^
# handshake.h:1018:4: warning: statement with no effect [-Wunused-value]
# uint8_t *sig = signature;
# ^
# handshake.h:1020:22: warning: comparison between pointer and integer [enabled by default]
# for (i=0; i
# ^
# handshake.h:1021:46: error: invalid operands to binary % (have 'int *' and 'int')
# rtmpe9_sig(sig+i, sig+i, dptr[i] % 15);
# ^
# handshake.h:1025:7: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, signature, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1025:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, signature, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1027:4: warning: implicit declaration of function 'memcmp' [-Wimplicit-function-declaration]
# (signature, &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:1027:41: error: invalid operands to binary - (have 'int' and 'int **')
# (signature, &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:1027:26: error: array subscript is not an integer
# (signature, &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:1049:8: warning: implicit declaration of function 'RC4' [-Wimplicit-function-declaration]
# RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:79:46: error: expected expression before ')' token
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1049:8: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:45: error: invalid operands to binary * (have 'int **' and 'int **')
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1049:8: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:1049:53: error: called object is not a function or function pointer
# RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:47: note: in definition of macro 'RC4_encrypt'
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1049:65: error: expected ')' before 'buff'
# RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:47: note: in definition of macro 'RC4_encrypt'
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:79:46: error: expected expression before ')' token
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1054:8: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:45: error: invalid operands to binary * (have 'int **' and 'int **')
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1054:8: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:1054:54: error: called object is not a function or function pointer
# RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:47: note: in definition of macro 'RC4_encrypt'
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1054:66: error: expected ')' before 'buff'
# RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:47: note: in definition of macro 'RC4_encrypt'
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1040:9: warning: unused variable 'buff' [-Wunused-variable]
# char buff[RTMP_SIG_SIZE];
# ^
# handshake.h: In function 'SHandShake':
# handshake.h:1081:3: error: unknown type name 'int32_t'
# int32_t *ip;
# ^
# handshake.h:1083:3: error: unknown type name 'uint8_t'
# uint8_t clientsig[RTMP_SIG_SIZE];
# ^
# handshake.h:1084:3: error: unknown type name 'uint8_t'
# uint8_t serverbuf[RTMP_SIG_SIZE + 4], *serversig = serverbuf+4;
# ^
# handshake.h:1085:3: error: unknown type name 'uint8_t'
# uint8_t type;
# ^
# handshake.h:1086:3: error: unknown type name 'uint32_t'
# uint32_t uptime;
# ^
# handshake.h:1087:3: error: unknown type name 'getoff'
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:1087:19: error: 'NULL' undeclared (first use in this function)
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:1087:19: warning: initialization from incompatible pointer type [enabled by default]
# handshake.h:1087:35: warning: initialization from incompatible pointer type [enabled by default]
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:1127:3: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(serversig, &uptime, 4);
# ^
# handshake.h:1142:7: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
# memset(&serversig[4], 0, 4);
# ^
# handshake.h:1149:9: error: 'int32_t' undeclared (first use in this function)
# ip = (int32_t *)(serversig+8);
# ^
# handshake.h:1149:18: error: expected expression before ')' token
# ip = (int32_t *)(serversig+8);
# ^
# handshake.h:1149:17: error: invalid operands to binary * (have 'int **' and 'int **')
# ip = (int32_t *)(serversig+8);
# ^
# handshake.h:1149:19: error: called object is not a function or function pointer
# ip = (int32_t *)(serversig+8);
# ^
# handshake.h:1149:6: warning: assignment from incompatible pointer type [enabled by default]
# ip = (int32_t *)(serversig+8);
# ^
# handshake.h:1168:23: error: called object 'getdh' is not a function or function pointer
# dhposServer = getdh(serversig, RTMP_SIG_SIZE);
# ^
# handshake.h:1087:11: note: declared here
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:1168:16: warning: assignment makes integer from pointer without a cast [enabled by default]
# dhposServer = getdh(serversig, RTMP_SIG_SIZE);
# ^
# handshake.h:1179:22: error: 'uint8_t' undeclared (first use in this function)
# (r->Link.dh, (uint8_t *) &serversig[dhposServer], 128))
# ^
# handshake.h:1179:31: error: expected expression before ')' token
# (r->Link.dh, (uint8_t *) &serversig[dhposServer], 128))
# ^
# handshake.h:1179:30: error: invalid operands to binary * (have 'int **' and 'int **')
# (r->Link.dh, (uint8_t *) &serversig[dhposServer], 128))
# ^
# handshake.h:1186:31: error: called object 'getdig' is not a function or function pointer
# digestPosServer = getdig(serversig, RTMP_SIG_SIZE); /* reuse this value in verification */
# ^
# handshake.h:1087:26: note: declared here
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:1186:23: warning: assignment makes integer from pointer without a cast [enabled by default]
# digestPosServer = getdig(serversig, RTMP_SIG_SIZE); /* reuse this value in verification */
# ^
# handshake.h:1195:7: error: 'SHA256_DIGEST_LENGTH' undeclared (first use in this function)
# SHA256_DIGEST_LENGTH);
# ^
# handshake.h:1195:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1214:7: warning: statement with no effect [-Wunused-value]
# uint8_t digestResp[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:1214:15: error: expected ';' before 'digestResp'
# uint8_t digestResp[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:1215:16: error: 'signatureResp' undeclared (first use in this function)
# uint8_t *signatureResp = NULL;
# ^
# handshake.h:1215:15: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *signatureResp = NULL;
# ^
# handshake.h:1215:7: warning: statement with no effect [-Wunused-value]
# uint8_t *signatureResp = NULL;
# ^
# handshake.h:1218:35: error: called object 'getdig' is not a function or function pointer
# int digestPosClient = getdig(clientsig, RTMP_SIG_SIZE);
# ^
# handshake.h:1087:26: note: declared here
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:1218:29: warning: initialization makes integer from pointer without a cast [enabled by default]
# int digestPosClient = getdig(clientsig, RTMP_SIG_SIZE);
# ^
# handshake.h:1227:28: error: called object 'getdig' is not a function or function pointer
# digestPosClient = getdig(clientsig, RTMP_SIG_SIZE);
# ^
# handshake.h:1087:26: note: declared here
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:1227:20: warning: assignment makes integer from pointer without a cast [enabled by default]
# digestPosClient = getdig(clientsig, RTMP_SIG_SIZE);
# ^
# handshake.h:1246:33: error: invalid operands to binary - (have 'int' and 'int **')
# &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:1246:18: error: array subscript is not an integer
# &serversig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:1248:18: error: expected expression before ')' token
# (uint8_t *)&r->Link.SWFVerificationResponse[10]);
# ^
# handshake.h:1248:17: error: invalid operands to binary * (have 'int **' and 'int **')
# (uint8_t *)&r->Link.SWFVerificationResponse[10]);
# ^
# handshake.h:1256:4: warning: statement with no effect [-Wunused-value]
# uint8_t secretKey[128] = { 0 };
# ^
# handshake.h:1256:12: error: expected ';' before 'secretKey'
# uint8_t secretKey[128] = { 0 };
# ^
# handshake.h:1258:23: error: called object 'getdh' is not a function or function pointer
# dhposClient = getdh(clientsig, RTMP_SIG_SIZE);
# ^
# handshake.h:1087:11: note: declared here
# getoff *getdh = NULL, *getdig = NULL;
# ^
# handshake.h:1258:16: warning: assignment makes integer from pointer without a cast [enabled by default]
# dhposClient = getdh(clientsig, RTMP_SIG_SIZE);
# ^
# handshake.h:1263:20: error: expected expression before ')' token
# (uint8_t *) &clientsig[dhposClient], 128,
# ^
# handshake.h:1263:19: error: invalid operands to binary * (have 'int **' and 'int **')
# (uint8_t *) &clientsig[dhposClient], 128,
# ^
# handshake.h:1272:31: error: 'secretKey' undeclared (first use in this function)
# RTMP_LogHex(RTMP_LOGDEBUG, secretKey, 128);
# ^
# handshake.h:1272:4: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, secretKey, 128);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1275:18: error: expected expression before ')' token
# (uint8_t *) &clientsig[dhposClient],
# ^
# handshake.h:1275:17: error: invalid operands to binary * (have 'int **' and 'int **')
# (uint8_t *) &clientsig[dhposClient],
# ^
# handshake.h:1282:46: error: invalid operands to binary - (have 'int *' and 'int **')
# signatureResp = clientsig+RTMP_SIG_SIZE-SHA256_DIGEST_LENGTH;
# ^
# handshake.h:1282:7: warning: statement with no effect [-Wunused-value]
# signatureResp = clientsig+RTMP_SIG_SIZE-SHA256_DIGEST_LENGTH;
# ^
# handshake.h:1285:42: error: 'digestResp' undeclared (first use in this function)
# GenuineFMSKey, sizeof(GenuineFMSKey), digestResp);
# ^
# handshake.h:1286:43: error: invalid operands to binary - (have 'int' and 'int **')
# HMACsha256(clientsig, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digestResp,
# ^
# handshake.h:1291:13: error: 'dptr' undeclared (first use in this function)
# uint8_t *dptr = digestResp;
# ^
# handshake.h:1291:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *dptr = digestResp;
# ^
# handshake.h:1291:4: warning: statement with no effect [-Wunused-value]
# uint8_t *dptr = digestResp;
# ^
# handshake.h:1292:13: error: 'sig' undeclared (first use in this function)
# uint8_t *sig = signatureResp;
# ^
# handshake.h:1292:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *sig = signatureResp;
# ^
# handshake.h:1292:4: warning: statement with no effect [-Wunused-value]
# uint8_t *sig = signatureResp;
# ^
# handshake.h:1294:22: warning: comparison between pointer and integer [enabled by default]
# for (i=0; i
# ^
# handshake.h:1295:39: error: invalid operands to binary % (have 'int *' and 'int')
# rtmpe8_sig(sig+i, sig+i, dptr[i] % 15);
# ^
# handshake.h:1299:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *dptr = digestResp;
# ^
# handshake.h:1299:4: warning: statement with no effect [-Wunused-value]
# uint8_t *dptr = digestResp;
# ^
# handshake.h:1300:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *sig = signatureResp;
# ^
# handshake.h:1300:4: warning: statement with no effect [-Wunused-value]
# uint8_t *sig = signatureResp;
# ^
# handshake.h:1302:22: warning: comparison between pointer and integer [enabled by default]
# for (i=0; i
# ^
# handshake.h:1303:46: error: invalid operands to binary % (have 'int *' and 'int')
# rtmpe9_sig(sig+i, sig+i, dptr[i] % 15);
# ^
# handshake.h:1311:7: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, digestResp, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1311:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, digestResp, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1314:7: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, signatureResp, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1314:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, signatureResp, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1340:7: warning: statement with no effect [-Wunused-value]
# uint8_t signature[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:1340:15: error: expected ';' before 'signature'
# uint8_t signature[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:1341:7: warning: statement with no effect [-Wunused-value]
# uint8_t digest[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:1341:15: error: expected ';' before 'digest'
# uint8_t digest[SHA256_DIGEST_LENGTH];
# ^
# handshake.h:1344:59: error: invalid operands to binary - (have 'int' and 'int **')
# RTMP_LogHex(RTMP_LOGDEBUG, &clientsig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:1344:44: error: array subscript is not an integer
# RTMP_LogHex(RTMP_LOGDEBUG, &clientsig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:1345:7: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int * (*)[1]'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1345:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1349:40: error: 'digest' undeclared (first use in this function)
# GenuineFPKey, sizeof(GenuineFPKey), digest);
# ^
# handshake.h:1350:43: error: invalid operands to binary - (have 'int' and 'int **')
# HMACsha256(clientsig, RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH, digest,
# ^
# handshake.h:1351:26: error: 'signature' undeclared (first use in this function)
# SHA256_DIGEST_LENGTH, signature);
# ^
# handshake.h:1355:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *dptr = digest;
# ^
# handshake.h:1355:4: warning: statement with no effect [-Wunused-value]
# uint8_t *dptr = digest;
# ^
# handshake.h:1356:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *sig = signature;
# ^
# handshake.h:1356:4: warning: statement with no effect [-Wunused-value]
# uint8_t *sig = signature;
# ^
# handshake.h:1358:22: warning: comparison between pointer and integer [enabled by default]
# for (i=0; i
# ^
# handshake.h:1359:39: error: invalid operands to binary % (have 'int *' and 'int')
# rtmpe8_sig(sig+i, sig+i, dptr[i] % 15);
# ^
# handshake.h:1363:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *dptr = digest;
# ^
# handshake.h:1363:4: warning: statement with no effect [-Wunused-value]
# uint8_t *dptr = digest;
# ^
# handshake.h:1364:12: error: invalid operands to binary * (have 'int **' and 'int **')
# uint8_t *sig = signature;
# ^
# handshake.h:1364:4: warning: statement with no effect [-Wunused-value]
# uint8_t *sig = signature;
# ^
# handshake.h:1366:22: warning: comparison between pointer and integer [enabled by default]
# for (i=0; i
# ^
# handshake.h:1367:46: error: invalid operands to binary % (have 'int *' and 'int')
# rtmpe9_sig(sig+i, sig+i, dptr[i] % 15);
# ^
# handshake.h:1373:7: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, digest, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1373:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, digest, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1376:7: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, signature, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1376:7: warning: passing argument 3 of 'RTMP_LogHex' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, signature, SHA256_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'long unsigned int' but argument is of type 'int **'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1378:41: error: invalid operands to binary - (have 'int' and 'int **')
# (signature, &clientsig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# handshake.h:1378:26: error: array subscript is not an integer
# (signature, &clientsig[RTMP_SIG_SIZE - SHA256_DIGEST_LENGTH],
# ^
# In file included from rtmp.c:152:0:
# handshake.h:79:46: error: expected expression before ')' token
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1399:8: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:45: error: invalid operands to binary * (have 'int **' and 'int **')
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1399:8: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:1399:53: error: called object is not a function or function pointer
# RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:47: note: in definition of macro 'RC4_encrypt'
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1399:65: error: expected ')' before 'buff'
# RC4_encrypt(r->Link.rc4keyIn, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:47: note: in definition of macro 'RC4_encrypt'
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:79:46: error: expected expression before ')' token
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1404:8: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:45: error: invalid operands to binary * (have 'int **' and 'int **')
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1404:8: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:1404:54: error: called object is not a function or function pointer
# RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:47: note: in definition of macro 'RC4_encrypt'
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# handshake.h:1404:66: error: expected ')' before 'buff'
# RC4_encrypt(r->Link.rc4keyOut, RTMP_SIG_SIZE, (uint8_t *) buff);
# ^
# handshake.h:79:47: note: in definition of macro 'RC4_encrypt'
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# In file included from rtmp.c:152:0:
# handshake.h:1391:9: warning: unused variable 'buff' [-Wunused-variable]
# char buff[RTMP_SIG_SIZE];
# ^
# rtmp.c: At top level:
# rtmp.c:155:1: error: unknown type name 'uint32_t'
# uint32_t
# ^
# rtmp.c: In function 'RTMP_GetTime':
# rtmp.c:163:14: error: storage size of 't' isn't known
# struct tms t;
# ^
# rtmp.c:164:3: warning: implicit declaration of function 'sysconf' [-Wimplicit-function-declaration]
# if (!clk_tck) clk_tck = sysconf(_SC_CLK_TCK);
# ^
# rtmp.c:164:35: error: '_SC_CLK_TCK' undeclared (first use in this function)
# if (!clk_tck) clk_tck = sysconf(_SC_CLK_TCK);
# ^
# rtmp.c:165:3: warning: implicit declaration of function 'times' [-Wimplicit-function-declaration]
# return times(&t) * 1000 / clk_tck;
# ^
# rtmp.c:163:14: warning: unused variable 't' [-Wunused-variable]
# struct tms t;
# ^
# rtmp.c: At top level:
# rtmp.c:189:33: error: unknown type name 'uint32_t'
# RTMPPacket_Alloc(RTMPPacket *p, uint32_t nSize)
# ^
# rtmp.c: In function 'RTMPPacket_Free':
# rtmp.c:207:7: warning: implicit declaration of function 'free' [-Wimplicit-function-declaration]
# free(p->m_body - RTMP_MAX_HEADER_SIZE);
# ^
# rtmp.c:207:7: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# rtmp.c:208:19: error: 'NULL' undeclared (first use in this function)
# p->m_body = NULL;
# ^
# rtmp.c:208:17: warning: assignment from incompatible pointer type [enabled by default]
# p->m_body = NULL;
# ^
# rtmp.c: In function 'RTMP_TLS_Init':
# rtmp.c:248:3: warning: implicit declaration of function 'SSL_load_error_strings' [-Wimplicit-function-declaration]
# SSL_load_error_strings();
# ^
# rtmp.c:249:3: warning: implicit declaration of function 'SSL_library_init' [-Wimplicit-function-declaration]
# SSL_library_init();
# ^
# rtmp.c:250:3: warning: implicit declaration of function 'OpenSSL_add_all_digests' [-Wimplicit-function-declaration]
# OpenSSL_add_all_digests();
# ^
# rtmp.c:251:3: warning: implicit declaration of function 'SSL_CTX_new' [-Wimplicit-function-declaration]
# RTMP_TLS_ctx = SSL_CTX_new(SSLv23_method());
# ^
# rtmp.c:251:3: warning: implicit declaration of function 'SSLv23_method' [-Wimplicit-function-declaration]
# rtmp.c:251:16: warning: assignment makes pointer from integer without a cast [enabled by default]
# RTMP_TLS_ctx = SSL_CTX_new(SSLv23_method());
# ^
# rtmp.c:252:3: warning: implicit declaration of function 'SSL_CTX_set_options' [-Wimplicit-function-declaration]
# SSL_CTX_set_options(RTMP_TLS_ctx, SSL_OP_ALL);
# ^
# rtmp.c:252:37: error: 'SSL_OP_ALL' undeclared (first use in this function)
# SSL_CTX_set_options(RTMP_TLS_ctx, SSL_OP_ALL);
# ^
# rtmp.c:253:3: warning: implicit declaration of function 'SSL_CTX_set_default_verify_paths' [-Wimplicit-function-declaration]
# SSL_CTX_set_default_verify_paths(RTMP_TLS_ctx);
# ^
# rtmp.c: In function 'RTMP_TLS_AllocServerContext':
# rtmp.c:261:15: error: 'NULL' undeclared (first use in this function)
# void *ctx = NULL;
# ^
# rtmp.c:286:3: warning: implicit declaration of function 'SSLv23_server_method' [-Wimplicit-function-declaration]
# ctx = SSL_CTX_new(SSLv23_server_method());
# ^
# rtmp.c:286:7: warning: assignment makes pointer from integer without a cast [enabled by default]
# ctx = SSL_CTX_new(SSLv23_server_method());
# ^
# rtmp.c:287:3: warning: implicit declaration of function 'SSL_CTX_use_certificate_chain_file' [-Wimplicit-function-declaration]
# if (!SSL_CTX_use_certificate_chain_file(ctx, cert)) {
# ^
# rtmp.c:288:7: warning: implicit declaration of function 'SSL_CTX_free' [-Wimplicit-function-declaration]
# SSL_CTX_free(ctx);
# ^
# rtmp.c:291:3: warning: implicit declaration of function 'SSL_CTX_use_PrivateKey_file' [-Wimplicit-function-declaration]
# if (!SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) {
# ^
# rtmp.c:291:46: error: 'SSL_FILETYPE_PEM' undeclared (first use in this function)
# if (!SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) {
# ^
# rtmp.c: In function 'RTMP_Alloc':
# rtmp.c:319:3: warning: implicit declaration of function 'calloc' [-Wimplicit-function-declaration]
# return calloc(1, sizeof(RTMP));
# ^
# rtmp.c:319:10: warning: incompatible implicit declaration of built-in function 'calloc' [enabled by default]
# return calloc(1, sizeof(RTMP));
# ^
# rtmp.c: In function 'RTMP_Free':
# rtmp.c:325:3: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r);
# ^
# rtmp.c: In function 'RTMP_Init':
# rtmp.c:336:3: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
# memset(r, 0, sizeof(RTMP));
# ^
# rtmp.c: In function 'SocksSetup':
# rtmp.c:414:7: warning: implicit declaration of function 'strchr' [-Wimplicit-function-declaration]
# const char *socksport = strchr(sockshost->av_val, ':');
# ^
# rtmp.c:414:31: warning: incompatible implicit declaration of built-in function 'strchr' [enabled by default]
# const char *socksport = strchr(sockshost->av_val, ':');
# ^
# rtmp.c:415:7: warning: implicit declaration of function 'strdup' [-Wimplicit-function-declaration]
# char *hostname = strdup(sockshost->av_val);
# ^
# rtmp.c:415:24: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
# char *hostname = strdup(sockshost->av_val);
# ^
# rtmp.c:420:7: warning: implicit declaration of function 'strlen' [-Wimplicit-function-declaration]
# r->Link.sockshost.av_len = strlen(hostname);
# ^
# rtmp.c:420:34: warning: incompatible implicit declaration of built-in function 'strlen' [enabled by default]
# r->Link.sockshost.av_len = strlen(hostname);
# ^
# rtmp.c:422:7: warning: implicit declaration of function 'atoi' [-Wimplicit-function-declaration]
# r->Link.socksport = socksport ? atoi(socksport + 1) : 1080;
# ^
# rtmp.c:428:34: error: 'NULL' undeclared (first use in this function)
# r->Link.sockshost.av_val = NULL;
# ^
# rtmp.c:428:32: warning: assignment from incompatible pointer type [enabled by default]
# r->Link.sockshost.av_val = NULL;
# ^
# rtmp.c: At top level:
# rtmp.c:447:4: error: unknown type name 'uint32_t'
# uint32_t swfSize,
# ^
# rtmp.c:551:3: error: unknown type name 'off_t'
# off_t off;
# ^
# rtmp.c:556:3: warning: implicit declaration of function 'offsetof' [-Wimplicit-function-declaration]
# { AVC("socks"), OFF(Link.sockshost), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:556:23: note: in expansion of macro 'OFF'
# { AVC("socks"), OFF(Link.sockshost), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:556:23: note: in expansion of macro 'OFF'
# { AVC("socks"), OFF(Link.sockshost), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[0].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:556:23: note: in expansion of macro 'OFF'
# { AVC("socks"), OFF(Link.sockshost), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:558:23: note: in expansion of macro 'OFF'
# { AVC("app"), OFF(Link.app), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:558:23: note: in expansion of macro 'OFF'
# { AVC("app"), OFF(Link.app), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[1].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:558:23: note: in expansion of macro 'OFF'
# { AVC("app"), OFF(Link.app), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:560:23: note: in expansion of macro 'OFF'
# { AVC("tcUrl"), OFF(Link.tcUrl), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:560:23: note: in expansion of macro 'OFF'
# { AVC("tcUrl"), OFF(Link.tcUrl), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[2].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:560:23: note: in expansion of macro 'OFF'
# { AVC("tcUrl"), OFF(Link.tcUrl), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:562:23: note: in expansion of macro 'OFF'
# { AVC("pageUrl"), OFF(Link.pageUrl), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:562:23: note: in expansion of macro 'OFF'
# { AVC("pageUrl"), OFF(Link.pageUrl), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[3].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:562:23: note: in expansion of macro 'OFF'
# { AVC("pageUrl"), OFF(Link.pageUrl), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:564:23: note: in expansion of macro 'OFF'
# { AVC("swfUrl"), OFF(Link.swfUrl), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:564:23: note: in expansion of macro 'OFF'
# { AVC("swfUrl"), OFF(Link.swfUrl), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[4].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:564:23: note: in expansion of macro 'OFF'
# { AVC("swfUrl"), OFF(Link.swfUrl), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:566:23: note: in expansion of macro 'OFF'
# { AVC("flashver"), OFF(Link.flashVer), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:566:23: note: in expansion of macro 'OFF'
# { AVC("flashver"), OFF(Link.flashVer), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[5].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:566:23: note: in expansion of macro 'OFF'
# { AVC("flashver"), OFF(Link.flashVer), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:568:23: note: in expansion of macro 'OFF'
# { AVC("conn"), OFF(Link.extras), OPT_CONN, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:568:23: note: in expansion of macro 'OFF'
# { AVC("conn"), OFF(Link.extras), OPT_CONN, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[6].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:568:23: note: in expansion of macro 'OFF'
# { AVC("conn"), OFF(Link.extras), OPT_CONN, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:570:23: note: in expansion of macro 'OFF'
# { AVC("playpath"), OFF(Link.playpath), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:570:23: note: in expansion of macro 'OFF'
# { AVC("playpath"), OFF(Link.playpath), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[7].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:570:23: note: in expansion of macro 'OFF'
# { AVC("playpath"), OFF(Link.playpath), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:572:23: note: in expansion of macro 'OFF'
# { AVC("playlist"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_PLST,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:572:23: note: in expansion of macro 'OFF'
# { AVC("playlist"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_PLST,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[8].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:572:23: note: in expansion of macro 'OFF'
# { AVC("playlist"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_PLST,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:574:23: note: in expansion of macro 'OFF'
# { AVC("live"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_LIVE,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:574:23: note: in expansion of macro 'OFF'
# { AVC("live"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_LIVE,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[9].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:574:23: note: in expansion of macro 'OFF'
# { AVC("live"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_LIVE,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:576:23: note: in expansion of macro 'OFF'
# { AVC("subscribe"), OFF(Link.subscribepath), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:576:23: note: in expansion of macro 'OFF'
# { AVC("subscribe"), OFF(Link.subscribepath), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[10].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:576:23: note: in expansion of macro 'OFF'
# { AVC("subscribe"), OFF(Link.subscribepath), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:578:17: note: in expansion of macro 'OFF'
# { AVC("jtv"), OFF(Link.usherToken), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:578:17: note: in expansion of macro 'OFF'
# { AVC("jtv"), OFF(Link.usherToken), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[11].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:578:17: note: in expansion of macro 'OFF'
# { AVC("jtv"), OFF(Link.usherToken), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:580:23: note: in expansion of macro 'OFF'
# { AVC("token"), OFF(Link.token), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:580:23: note: in expansion of macro 'OFF'
# { AVC("token"), OFF(Link.token), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[12].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:580:23: note: in expansion of macro 'OFF'
# { AVC("token"), OFF(Link.token), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:582:23: note: in expansion of macro 'OFF'
# { AVC("swfVfy"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_SWFV,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:582:23: note: in expansion of macro 'OFF'
# { AVC("swfVfy"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_SWFV,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[13].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:582:23: note: in expansion of macro 'OFF'
# { AVC("swfVfy"), OFF(Link.lFlags), OPT_BOOL, RTMP_LF_SWFV,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:584:23: note: in expansion of macro 'OFF'
# { AVC("swfAge"), OFF(Link.swfAge), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:584:23: note: in expansion of macro 'OFF'
# { AVC("swfAge"), OFF(Link.swfAge), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[14].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:584:23: note: in expansion of macro 'OFF'
# { AVC("swfAge"), OFF(Link.swfAge), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:586:23: note: in expansion of macro 'OFF'
# { AVC("start"), OFF(Link.seekTime), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:586:23: note: in expansion of macro 'OFF'
# { AVC("start"), OFF(Link.seekTime), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[15].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:586:23: note: in expansion of macro 'OFF'
# { AVC("start"), OFF(Link.seekTime), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:588:23: note: in expansion of macro 'OFF'
# { AVC("stop"), OFF(Link.stopTime), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:588:23: note: in expansion of macro 'OFF'
# { AVC("stop"), OFF(Link.stopTime), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[16].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:588:23: note: in expansion of macro 'OFF'
# { AVC("stop"), OFF(Link.stopTime), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:590:23: note: in expansion of macro 'OFF'
# { AVC("buffer"), OFF(m_nBufferMS), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:590:23: note: in expansion of macro 'OFF'
# { AVC("buffer"), OFF(m_nBufferMS), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[17].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:590:23: note: in expansion of macro 'OFF'
# { AVC("buffer"), OFF(m_nBufferMS), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:592:23: note: in expansion of macro 'OFF'
# { AVC("timeout"), OFF(Link.timeout), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:592:23: note: in expansion of macro 'OFF'
# { AVC("timeout"), OFF(Link.timeout), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[18].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:592:23: note: in expansion of macro 'OFF'
# { AVC("timeout"), OFF(Link.timeout), OPT_INT, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:594:23: note: in expansion of macro 'OFF'
# { AVC("pubUser"), OFF(Link.pubUser), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:594:23: note: in expansion of macro 'OFF'
# { AVC("pubUser"), OFF(Link.pubUser), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[19].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:594:23: note: in expansion of macro 'OFF'
# { AVC("pubUser"), OFF(Link.pubUser), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: expected expression before 'struct'
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:596:23: note: in expansion of macro 'OFF'
# { AVC("pubPasswd"), OFF(Link.pubPasswd), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: initializer element is not constant
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:596:23: note: in expansion of macro 'OFF'
# { AVC("pubPasswd"), OFF(Link.pubPasswd), OPT_STR, 0,
# ^
# rtmp.c:547:25: error: (near initialization for 'options[20].off')
# #define OFF(x) offsetof(struct RTMP,x)
# ^
# rtmp.c:596:23: note: in expansion of macro 'OFF'
# { AVC("pubPasswd"), OFF(Link.pubPasswd), OPT_STR, 0,
# ^
# rtmp.c:598:6: error: 'NULL' undeclared here (not in a function)
# { {NULL,0}, 0, 0}
# ^
# rtmp.c:598:3: error: initializer element is not constant
# { {NULL,0}, 0, 0}
# ^
# rtmp.c:598:3: error: (near initialization for 'options[21].name.av_val')
# rtmp.c: In function 'parseAMF':
# rtmp.c:643:4: warning: implicit declaration of function 'strtod' [-Wimplicit-function-declaration]
# prop.p_vu.p_number = strtod(p, NULL);
# ^
# rtmp.c:666:11: warning: incompatible implicit declaration of built-in function 'strchr' [enabled by default]
# p = strchr(arg+3, ':');
# ^
# rtmp.c: In function 'RTMP_SetOpt':
# rtmp.c:720:5: warning: implicit declaration of function 'strcasecmp' [-Wimplicit-function-declaration]
# if (strcasecmp(opt->av_val, options[i].name.av_val)) continue;
# ^
# rtmp.c:728:7: warning: implicit declaration of function 'strtol' [-Wimplicit-function-declaration]
# long l = strtol(arg->av_val, NULL, 0);
# ^
# rtmp.c: In function 'RTMP_SetupURL':
# rtmp.c:760:25: warning: incompatible implicit declaration of built-in function 'strchr' [enabled by default]
# char *p1, *p2, *ptr = strchr(url, ' ');
# ^
# rtmp.c:767:9: warning: incompatible implicit declaration of built-in function 'strlen' [enabled by default]
# len = strlen(url);
# ^
# rtmp.c:803:2: warning: implicit declaration of function 'sscanf' [-Wimplicit-function-declaration]
# sscanf(p1+1, "%02x", &c);
# ^
# rtmp.c:803:2: warning: incompatible implicit declaration of built-in function 'sscanf' [enabled by default]
# rtmp.c:833:8: warning: implicit declaration of function 'malloc' [-Wimplicit-function-declaration]
# r->Link.tcUrl.av_val = malloc(len);
# ^
# rtmp.c:833:31: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# r->Link.tcUrl.av_val = malloc(len);
# ^
# rtmp.c:834:8: warning: implicit declaration of function 'snprintf' [-Wimplicit-function-declaration]
# r->Link.tcUrl.av_len = snprintf(r->Link.tcUrl.av_val, len,
# ^
# rtmp.c:834:31: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
# r->Link.tcUrl.av_len = snprintf(r->Link.tcUrl.av_val, len,
# ^
# rtmp.c:852:4: warning: pointer targets in passing argument 2 of 'RTMP_HashSWF' differ in signedness [-Wpointer-sign]
# (unsigned char *)r->Link.SWFHash, r->Link.swfAge);
# ^
# In file included from rtmp_sys.h:61:0,
# from rtmp.c:32:
# rtmp.h:371:7: note: expected 'unsigned int *' but argument is of type 'int *'
# int RTMP_HashSWF(const char *url, unsigned int *size, unsigned char *hash,
# ^
# rtmp.c: At top level:
# rtmp.c:870:22: warning: 'struct sockaddr_in' declared inside parameter list [enabled by default]
# add_addr_info(struct sockaddr_in *service, AVal *host, int port)
# ^
# rtmp.c:870:22: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
# rtmp.c: In function 'add_addr_info':
# rtmp.c:876:18: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# hostname = malloc(host->av_len+1);
# ^
# rtmp.c:877:7: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(hostname, host->av_val, host->av_len);
# ^
# rtmp.c:885:10: error: dereferencing pointer to incomplete type
# service->sin_addr.s_addr = inet_addr(hostname);
# ^
# rtmp.c:885:10: error: request for member 'sin_addr' in something not a structure or union
# rtmp.c:885:20: error: request for member 's_addr' in something not a structure or union
# service->sin_addr.s_addr = inet_addr(hostname);
# ^
# rtmp.c:885:3: warning: implicit declaration of function 'inet_addr' [-Wimplicit-function-declaration]
# service->sin_addr.s_addr = inet_addr(hostname);
# ^
# rtmp.c:885:3: warning: statement with no effect [-Wunused-value]
# rtmp.c:886:14: error: dereferencing pointer to incomplete type
# if (service->sin_addr.s_addr == INADDR_NONE)
# ^
# rtmp.c:886:14: error: request for member 'sin_addr' in something not a structure or union
# rtmp.c:886:24: error: request for member 's_addr' in something not a structure or union
# if (service->sin_addr.s_addr == INADDR_NONE)
# ^
# rtmp.c:886:35: error: 'INADDR_NONE' undeclared (first use in this function)
# if (service->sin_addr.s_addr == INADDR_NONE)
# ^
# rtmp.c:888:14: warning: implicit declaration of function 'gethostbyname' [-Wimplicit-function-declaration]
# struct hostent *host = gethostbyname(hostname);
# ^
# rtmp.c:888:30: warning: initialization makes pointer from integer without a cast [enabled by default]
# struct hostent *host = gethostbyname(hostname);
# ^
# rtmp.c:889:16: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# if (host == NULL || host->h_addr == NULL)
# ^
# rtmp.c:889:31: error: dereferencing pointer to incomplete type
# if (host == NULL || host->h_addr == NULL)
# ^
# rtmp.c:889:31: error: request for member 'h_addr' in something not a structure or union
# rtmp.c:895:14: error: dereferencing pointer to incomplete type
# service->sin_addr = *(struct in_addr *)host->h_addr;
# ^
# rtmp.c:895:14: error: request for member 'sin_addr' in something not a structure or union
# rtmp.c:895:50: error: dereferencing pointer to incomplete type
# service->sin_addr = *(struct in_addr *)host->h_addr;
# ^
# rtmp.c:895:50: error: request for member 'h_addr' in something not a structure or union
# rtmp.c:895:27: error: dereferencing pointer to incomplete type
# service->sin_addr = *(struct in_addr *)host->h_addr;
# ^
# rtmp.c:895:7: warning: statement with no effect [-Wunused-value]
# service->sin_addr = *(struct in_addr *)host->h_addr;
# ^
# rtmp.c:898:10: error: dereferencing pointer to incomplete type
# service->sin_port = htons(port);
# ^
# rtmp.c:898:10: error: request for member 'sin_port' in something not a structure or union
# rtmp.c:898:3: warning: implicit declaration of function 'htons' [-Wimplicit-function-declaration]
# service->sin_port = htons(port);
# ^
# rtmp.c:898:3: warning: statement with no effect [-Wunused-value]
# rtmp.c:901:5: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(hostname);
# ^
# rtmp.c: In function 'RTMP_Connect0':
# rtmp.c:913:3: warning: implicit declaration of function 'socket' [-Wimplicit-function-declaration]
# r->m_sb.sb_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
# ^
# rtmp.c:913:30: error: 'AF_INET' undeclared (first use in this function)
# r->m_sb.sb_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
# ^
# rtmp.c:913:39: error: 'SOCK_STREAM' undeclared (first use in this function)
# r->m_sb.sb_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
# ^
# rtmp.c:913:52: error: 'IPPROTO_TCP' undeclared (first use in this function)
# r->m_sb.sb_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
# ^
# rtmp.c:916:7: warning: implicit declaration of function 'connect' [-Wimplicit-function-declaration]
# if (connect(r->m_sb.sb_socket, service, sizeof(struct sockaddr)) < 0)
# ^
# rtmp.c:916:54: error: invalid application of 'sizeof' to incomplete type 'struct sockaddr'
# if (connect(r->m_sb.sb_socket, service, sizeof(struct sockaddr)) < 0)
# ^
# In file included from rtmp.c:32:0:
# rtmp_sys.h:53:24: error: 'errno' undeclared (first use in this function)
# #define GetSockError() errno
# ^
# rtmp.c:918:14: note: in expansion of macro 'GetSockError'
# int err = GetSockError();
# ^
# rtmp_sys.h:53:24: warning: initialization makes integer from pointer without a cast [enabled by default]
# #define GetSockError() errno
# ^
# rtmp.c:918:14: note: in expansion of macro 'GetSockError'
# int err = GetSockError();
# ^
# rtmp.c:920:8: warning: implicit declaration of function 'strerror' [-Wimplicit-function-declaration]
# __FUNCTION__, err, strerror(err));
# ^
# rtmp.c:920:8: warning: format '%s' expects argument of type 'char *', but argument 5 has type 'int' [-Wformat=]
# rtmp.c:939:4: warning: format '%d' expects argument of type 'int', but argument 4 has type 'struct urlopt *' [-Wformat=]
# GetSockError());
# ^
# In file included from rtmp.c:32:0:
# rtmp_sys.h:58:35: error: variable 'tv' has initializer but incomplete type
# #define SET_RCVTIMEO(tv,s) struct timeval tv = {s,0}
# ^
# rtmp.c:945:5: note: in expansion of macro 'SET_RCVTIMEO'
# SET_RCVTIMEO(tv, r->Link.timeout);
# ^
# rtmp_sys.h:58:35: warning: excess elements in struct initializer [enabled by default]
# #define SET_RCVTIMEO(tv,s) struct timeval tv = {s,0}
# ^
# rtmp.c:945:5: note: in expansion of macro 'SET_RCVTIMEO'
# SET_RCVTIMEO(tv, r->Link.timeout);
# ^
# rtmp_sys.h:58:35: warning: (near initialization for 'tv') [enabled by default]
# #define SET_RCVTIMEO(tv,s) struct timeval tv = {s,0}
# ^
# rtmp.c:945:5: note: in expansion of macro 'SET_RCVTIMEO'
# SET_RCVTIMEO(tv, r->Link.timeout);
# ^
# rtmp_sys.h:58:35: warning: excess elements in struct initializer [enabled by default]
# #define SET_RCVTIMEO(tv,s) struct timeval tv = {s,0}
# ^
# rtmp.c:945:5: note: in expansion of macro 'SET_RCVTIMEO'
# SET_RCVTIMEO(tv, r->Link.timeout);
# ^
# rtmp_sys.h:58:35: warning: (near initialization for 'tv') [enabled by default]
# #define SET_RCVTIMEO(tv,s) struct timeval tv = {s,0}
# ^
# rtmp.c:945:5: note: in expansion of macro 'SET_RCVTIMEO'
# SET_RCVTIMEO(tv, r->Link.timeout);
# ^
# rtmp.c:945:18: error: storage size of 'tv' isn't known
# SET_RCVTIMEO(tv, r->Link.timeout);
# ^
# rtmp_sys.h:58:43: note: in definition of macro 'SET_RCVTIMEO'
# #define SET_RCVTIMEO(tv,s) struct timeval tv = {s,0}
# ^
# rtmp.c:947:9: warning: implicit declaration of function 'setsockopt' [-Wimplicit-function-declaration]
# (r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv)))
# ^
# rtmp.c:947:29: error: 'SOL_SOCKET' undeclared (first use in this function)
# (r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv)))
# ^
# rtmp.c:947:41: error: 'SO_RCVTIMEO' undeclared (first use in this function)
# (r->m_sb.sb_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv)))
# ^
# In file included from rtmp.c:32:0:
# rtmp.c:945:18: warning: unused variable 'tv' [-Wunused-variable]
# SET_RCVTIMEO(tv, r->Link.timeout);
# ^
# rtmp_sys.h:58:43: note: in definition of macro 'SET_RCVTIMEO'
# #define SET_RCVTIMEO(tv,s) struct timeval tv = {s,0}
# ^
# rtmp.c:954:46: error: 'TCP_NODELAY' undeclared (first use in this function)
# setsockopt(r->m_sb.sb_socket, IPPROTO_TCP, TCP_NODELAY, (char *) &on, sizeof(on));
# ^
# rtmp.c: In function 'RTMP_TLS_Accept':
# rtmp.c:963:3: warning: implicit declaration of function 'SSL_new' [-Wimplicit-function-declaration]
# TLS_server(ctx, r->m_sb.sb_ssl);
# ^
# In file included from rtmp.c:32:0:
# rtmp_sys.h:129:29: warning: assignment makes pointer from integer without a cast [enabled by default]
# #define TLS_server(ctx,s) s = SSL_new(ctx)
# ^
# rtmp.c:963:3: note: in expansion of macro 'TLS_server'
# TLS_server(ctx, r->m_sb.sb_ssl);
# ^
# rtmp.c:964:3: warning: implicit declaration of function 'SSL_set_fd' [-Wimplicit-function-declaration]
# TLS_setfd(r->m_sb.sb_ssl, r->m_sb.sb_socket);
# ^
# rtmp.c:965:3: warning: implicit declaration of function 'SSL_accept' [-Wimplicit-function-declaration]
# if (TLS_accept(r->m_sb.sb_ssl) < 0)
# ^
# In file included from rtmp.c:32:0:
# rtmp.c: In function 'RTMP_Connect1':
# rtmp_sys.h:128:29: warning: assignment makes pointer from integer without a cast [enabled by default]
# #define TLS_client(ctx,s) s = SSL_new(ctx)
# ^
# rtmp.c:982:7: note: in expansion of macro 'TLS_client'
# TLS_client(RTMP_TLS_ctx, r->m_sb.sb_ssl);
# ^
# rtmp.c:984:7: warning: implicit declaration of function 'SSL_connect' [-Wimplicit-function-declaration]
# if (TLS_connect(r->m_sb.sb_ssl) < 0)
# ^
# rtmp.c:1000:28: warning: assignment from incompatible pointer type [enabled by default]
# r->m_clientID.av_val = NULL;
# ^
# rtmp.c: In function 'RTMP_Connect':
# rtmp.c:1033:22: error: storage size of 'service' isn't known
# struct sockaddr_in service;
# ^
# rtmp.c:1037:3: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
# memset(&service, 0, sizeof(struct sockaddr_in));
# ^
# rtmp.c:1037:30: error: invalid application of 'sizeof' to incomplete type 'struct sockaddr_in'
# memset(&service, 0, sizeof(struct sockaddr_in));
# ^
# rtmp.c:1037:37: warning: passing argument 3 of 'memset' makes integer from pointer without a cast [enabled by default]
# memset(&service, 0, sizeof(struct sockaddr_in));
# ^
# rtmp.c:1037:37: note: expected 'unsigned int' but argument is of type 'struct urlopt *'
# rtmp.c:1038:10: error: request for member 'sin_family' in something not a structure or union
# service.sin_family = AF_INET;
# ^
# rtmp.c:1038:24: error: 'AF_INET' undeclared (first use in this function)
# service.sin_family = AF_INET;
# ^
# rtmp.c:1038:3: warning: statement with no effect [-Wunused-value]
# service.sin_family = AF_INET;
# ^
# rtmp.c:1043:7: warning: passing argument 1 of 'add_addr_info' from incompatible pointer type [enabled by default]
# if (!add_addr_info(&service, &r->Link.sockshost, r->Link.socksport))
# ^
# rtmp.c:870:1: note: expected 'struct sockaddr_in *' but argument is of type 'struct urlopt (*)[1]'
# add_addr_info(struct sockaddr_in *service, AVal *host, int port)
# ^
# rtmp.c:1049:7: warning: passing argument 1 of 'add_addr_info' from incompatible pointer type [enabled by default]
# if (!add_addr_info(&service, &r->Link.hostname, r->Link.port))
# ^
# rtmp.c:870:1: note: expected 'struct sockaddr_in *' but argument is of type 'struct urlopt (*)[1]'
# add_addr_info(struct sockaddr_in *service, AVal *host, int port)
# ^
# rtmp.c:1033:22: warning: unused variable 'service' [-Wunused-variable]
# struct sockaddr_in service;
# ^
# rtmp.c: In function 'SocksNegotiate':
# rtmp.c:1065:22: error: storage size of 'service' isn't known
# struct sockaddr_in service;
# ^
# rtmp.c:1066:3: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
# memset(&service, 0, sizeof(struct sockaddr_in));
# ^
# rtmp.c:1066:30: error: invalid application of 'sizeof' to incomplete type 'struct sockaddr_in'
# memset(&service, 0, sizeof(struct sockaddr_in));
# ^
# rtmp.c:1066:37: warning: passing argument 3 of 'memset' makes integer from pointer without a cast [enabled by default]
# memset(&service, 0, sizeof(struct sockaddr_in));
# ^
# rtmp.c:1066:37: note: expected 'unsigned int' but argument is of type 'struct urlopt *'
# rtmp.c:1068:3: warning: passing argument 1 of 'add_addr_info' from incompatible pointer type [enabled by default]
# add_addr_info(&service, &r->Link.hostname, r->Link.port);
# ^
# rtmp.c:870:1: note: expected 'struct sockaddr_in *' but argument is of type 'struct urlopt (*)[1]'
# add_addr_info(struct sockaddr_in *service, AVal *host, int port)
# ^
# rtmp.c:1069:23: error: request for member 'sin_addr' in something not a structure or union
# addr = htonl(service.sin_addr.s_addr);
# ^
# rtmp.c:1069:32: error: request for member 's_addr' in something not a structure or union
# addr = htonl(service.sin_addr.s_addr);
# ^
# rtmp.c:1065:22: warning: unused variable 'service' [-Wunused-variable]
# struct sockaddr_in service;
# ^
# rtmp.c: In function 'RTMP_ToggleStream':
# rtmp.c:1159:7: warning: implicit declaration of function 'sleep' [-Wimplicit-function-declaration]
# sleep(1);
# ^
# rtmp.c: In function 'RTMP_ClientPacket':
# rtmp.c:1343:2: error: unknown type name 'uint32_t'
# uint32_t nTimeStamp = packet->m_nTimeStamp;
# ^
# rtmp.c:1347:6: error: unknown type name 'uint32_t'
# uint32_t dataSize = AMF_DecodeInt24(packet->m_body + pos + 1); /* size without header (11) and prevTagSize (4) */
# ^
# rtmp.c: In function 'ReadN':
# rtmp.c:1461:4: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(ptr, r->m_sb.sb_start, nRead);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:79:37: error: 'uint8_t' undeclared (first use in this function)
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# rtmp.c:1490:4: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyIn, nBytes, ptr);
# ^
# handshake.h:79:46: error: expected expression before ')' token
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# rtmp.c:1490:4: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyIn, nBytes, ptr);
# ^
# handshake.h:79:45: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# #define RC4_encrypt(h,l,d) RC4(h,l,(uint8_t *)d,(uint8_t *)d)
# ^
# rtmp.c:1490:4: note: in expansion of macro 'RC4_encrypt'
# RC4_encrypt(r->Link.rc4keyIn, nBytes, ptr);
# ^
# rtmp.c: In function 'WriteN':
# rtmp.c:1512:22: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# encrypted = (char *)malloc(n);
# ^
# In file included from rtmp.c:152:0:
# handshake.h:80:40: error: 'uint8_t' undeclared (first use in this function)
# #define RC4_encrypt2(h,l,s,d) RC4(h,l,(uint8_t *)s,(uint8_t *)d)
# ^
# rtmp.c:1516:7: note: in expansion of macro 'RC4_encrypt2'
# RC4_encrypt2(r->Link.rc4keyOut, n, buffer, ptr);
# ^
# handshake.h:80:49: error: expected expression before ')' token
# #define RC4_encrypt2(h,l,s,d) RC4(h,l,(uint8_t *)s,(uint8_t *)d)
# ^
# rtmp.c:1516:7: note: in expansion of macro 'RC4_encrypt2'
# RC4_encrypt2(r->Link.rc4keyOut, n, buffer, ptr);
# ^
# handshake.h:80:48: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# #define RC4_encrypt2(h,l,s,d) RC4(h,l,(uint8_t *)s,(uint8_t *)d)
# ^
# rtmp.c:1516:7: note: in expansion of macro 'RC4_encrypt2'
# RC4_encrypt2(r->Link.rc4keyOut, n, buffer, ptr);
# ^
# In file included from rtmp.c:32:0:
# rtmp_sys.h:53:24: error: 'errno' undeclared (first use in this function)
# #define GetSockError() errno
# ^
# rtmp.c:1532:18: note: in expansion of macro 'GetSockError'
# int sockerr = GetSockError();
# ^
# rtmp_sys.h:53:24: warning: initialization makes integer from pointer without a cast [enabled by default]
# #define GetSockError() errno
# ^
# rtmp.c:1532:18: note: in expansion of macro 'GetSockError'
# int sockerr = GetSockError();
# ^
# rtmp.c:1536:19: error: 'EINTR' undeclared (first use in this function)
# if (sockerr == EINTR && !RTMP_ctrlC)
# ^
# rtmp.c:1536:16: warning: comparison between pointer and integer [enabled by default]
# if (sockerr == EINTR && !RTMP_ctrlC)
# ^
# rtmp.c:1553:5: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(encrypted);
# ^
# rtmp.c: In function 'RTMP_SendCtrl':
# rtmp.c:2371:7: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(buf, r->Link.SWFVerificationResponse, 42);
# ^
# rtmp.c:2373:35: error: 'uint8_t' undeclared (first use in this function)
# RTMP_LogHex(RTMP_LOGDEBUG, (uint8_t *)packet.m_body, packet.m_nBodySize);
# ^
# rtmp.c:2373:44: error: expected expression before ')' token
# RTMP_LogHex(RTMP_LOGDEBUG, (uint8_t *)packet.m_body, packet.m_nBodySize);
# ^
# rtmp.c:2373:43: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# RTMP_LogHex(RTMP_LOGDEBUG, (uint8_t *)packet.m_body, packet.m_nBodySize);
# ^
# rtmp.c:2373:44: warning: passing argument 2 of 'RTMP_LogHex' from incompatible pointer type [enabled by default]
# RTMP_LogHex(RTMP_LOGDEBUG, (uint8_t *)packet.m_body, packet.m_nBodySize);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: expected 'const int *' but argument is of type 'struct urlopt *'
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2373:44: error: too few arguments to function 'RTMP_LogHex'
# RTMP_LogHex(RTMP_LOGDEBUG, (uint8_t *)packet.m_body, packet.m_nBodySize);
# ^
# In file included from rtmp.c:33:0:
# log.h:60:6: note: declared here
# void RTMP_LogHex(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2373:7: warning: statement with no effect [-Wunused-value]
# RTMP_LogHex(RTMP_LOGDEBUG, (uint8_t *)packet.m_body, packet.m_nBodySize);
# ^
# rtmp.c: In function 'AV_erase':
# rtmp.c:2396:5: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(vals[i].name.av_val);
# ^
# rtmp.c:2402:23: warning: assignment from incompatible pointer type [enabled by default]
# vals[i].name.av_val = NULL;
# ^
# rtmp.c: In function 'AV_queue':
# rtmp.c:2418:5: warning: implicit declaration of function 'realloc' [-Wimplicit-function-declaration]
# *vals = realloc(*vals, (*num + 16) * sizeof(RTMP_METHOD));
# ^
# rtmp.c:2418:13: warning: incompatible implicit declaration of built-in function 'realloc' [enabled by default]
# *vals = realloc(*vals, (*num + 16) * sizeof(RTMP_METHOD));
# ^
# rtmp.c:2419:9: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# tmp = malloc(av->av_len + 1);
# ^
# rtmp.c:2420:3: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(tmp, av->av_val, av->av_len);
# ^
# rtmp.c: In function 'AV_clear':
# rtmp.c:2432:5: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(vals[i].name.av_val);
# ^
# rtmp.c: In function 'b64enc':
# rtmp.c:2462:3: error: unknown type name 'BIO'
# BIO *bmem, *b64;
# ^
# rtmp.c:2463:3: error: unknown type name 'BUF_MEM'
# BUF_MEM *bptr;
# ^
# rtmp.c:2465:3: warning: implicit declaration of function 'BIO_new' [-Wimplicit-function-declaration]
# b64 = BIO_new(BIO_f_base64());
# ^
# rtmp.c:2465:3: warning: implicit declaration of function 'BIO_f_base64' [-Wimplicit-function-declaration]
# rtmp.c:2465:7: warning: assignment makes pointer from integer without a cast [enabled by default]
# b64 = BIO_new(BIO_f_base64());
# ^
# rtmp.c:2466:3: warning: implicit declaration of function 'BIO_s_mem' [-Wimplicit-function-declaration]
# bmem = BIO_new(BIO_s_mem());
# ^
# rtmp.c:2466:8: warning: assignment makes pointer from integer without a cast [enabled by default]
# bmem = BIO_new(BIO_s_mem());
# ^
# rtmp.c:2467:3: warning: implicit declaration of function 'BIO_push' [-Wimplicit-function-declaration]
# b64 = BIO_push(b64, bmem);
# ^
# rtmp.c:2467:7: warning: assignment makes pointer from integer without a cast [enabled by default]
# b64 = BIO_push(b64, bmem);
# ^
# rtmp.c:2468:3: warning: implicit declaration of function 'BIO_write' [-Wimplicit-function-declaration]
# BIO_write(b64, input, length);
# ^
# rtmp.c:2469:3: warning: implicit declaration of function 'BIO_flush' [-Wimplicit-function-declaration]
# if (BIO_flush(b64) == 1)
# ^
# rtmp.c:2471:7: warning: implicit declaration of function 'BIO_get_mem_ptr' [-Wimplicit-function-declaration]
# BIO_get_mem_ptr(b64, &bptr);
# ^
# rtmp.c:2472:7: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(output, bptr->data, bptr->length-1);
# ^
# rtmp.c:2472:26: error: request for member 'data' in something not a structure or union
# memcpy(output, bptr->data, bptr->length-1);
# ^
# rtmp.c:2472:38: error: request for member 'length' in something not a structure or union
# memcpy(output, bptr->data, bptr->length-1);
# ^
# rtmp.c:2472:7: warning: passing argument 3 of 'memcpy' makes integer from pointer without a cast [enabled by default]
# memcpy(output, bptr->data, bptr->length-1);
# ^
# rtmp.c:2472:7: note: expected 'unsigned int' but argument is of type 'struct urlopt *'
# rtmp.c:2473:18: error: request for member 'length' in something not a structure or union
# output[bptr->length-1] = '\0';
# ^
# rtmp.c:2473:13: error: array subscript is not an integer
# output[bptr->length-1] = '\0';
# ^
# rtmp.c:2473:7: warning: statement with no effect [-Wunused-value]
# output[bptr->length-1] = '\0';
# ^
# rtmp.c:2480:3: warning: implicit declaration of function 'BIO_free_all' [-Wimplicit-function-declaration]
# BIO_free_all(b64);
# ^
# rtmp.c: In function 'hexenc':
# rtmp.c:2505:9: warning: implicit declaration of function 'sprintf' [-Wimplicit-function-declaration]
# sprintf(ptr, "%02x", *inbuf++);
# ^
# rtmp.c:2505:9: warning: incompatible implicit declaration of built-in function 'sprintf' [enabled by default]
# rtmp.c: In function 'AValChr':
# rtmp.c:2518:3: warning: return from incompatible pointer type [enabled by default]
# return NULL;
# ^
# rtmp.c: In function 'PublisherAuth':
# rtmp.c:2524:20: warning: initialization from incompatible pointer type [enabled by default]
# char *token_in = NULL;
# ^
# rtmp.c:2526:28: error: 'MD5_DIGEST_LENGTH' undeclared (first use in this function)
# unsigned char md5sum_val[MD5_DIGEST_LENGTH+1];
# ^
# rtmp.c:2526:17: error: size of array 'md5sum_val' has non-integer type
# unsigned char md5sum_val[MD5_DIGEST_LENGTH+1];
# ^
# rtmp.c:2527:3: error: unknown type name 'MD5_CTX'
# MD5_CTX md5ctx;
# ^
# rtmp.c:2540:3: warning: implicit declaration of function 'strstr' [-Wimplicit-function-declaration]
# if (strstr(description->av_val, av_authmod_adobe.av_val) != NULL)
# ^
# rtmp.c:2540:7: warning: incompatible implicit declaration of built-in function 'strstr' [enabled by default]
# if (strstr(description->av_val, av_authmod_adobe.av_val) != NULL)
# ^
# rtmp.c:2540:60: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# if (strstr(description->av_val, av_authmod_adobe.av_val) != NULL)
# ^
# rtmp.c:2542:60: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# if(strstr(description->av_val, "code=403 need auth") != NULL)
# ^
# rtmp.c:2544:69: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# if (strstr(r->Link.app.av_val, av_authmod_adobe.av_val) != NULL) {
# ^
# rtmp.c:2548:33: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# pubToken.av_val = malloc(r->Link.pubUser.av_len + av_authmod_adobe.av_len + 8);
# ^
# rtmp.c:2549:33: warning: incompatible implicit declaration of built-in function 'sprintf' [enabled by default]
# pubToken.av_len = sprintf(pubToken.av_val, "?%s&user=%s",
# ^
# rtmp.c:2558:76: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# else if((token_in = strstr(description->av_val, "?reason=needauth")) != NULL)
# ^
# rtmp.c:2560:29: warning: initialization from incompatible pointer type [enabled by default]
# char *par, *val = NULL, *orig_ptr;
# ^
# rtmp.c:2561:48: warning: initialization from incompatible pointer type [enabled by default]
# AVal user, salt, opaque, challenge, *aptr = NULL;
# ^
# rtmp.c:2565:28: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
# ptr = orig_ptr = strdup(token_in);
# ^
# rtmp.c:2569:21: warning: incompatible implicit declaration of built-in function 'strchr' [enabled by default]
# ptr = strchr(par, '&');
# ^
# rtmp.c:2579:8: warning: assignment from incompatible pointer type [enabled by default]
# aptr = NULL;
# ^
# rtmp.c:2581:15: warning: implicit declaration of function 'strcmp' [-Wimplicit-function-declaration]
# if (strcmp(par, "user") == 0){
# ^
# rtmp.c:2598:21: warning: incompatible implicit declaration of built-in function 'strlen' [enabled by default]
# aptr->av_len = strlen(aptr->av_val);
# ^
# rtmp.c:2601:4: warning: implicit declaration of function 'MD5_Init' [-Wimplicit-function-declaration]
# MD5_Init(&md5ctx);
# ^
# rtmp.c:2602:4: warning: implicit declaration of function 'MD5_Update' [-Wimplicit-function-declaration]
# MD5_Update(&md5ctx, user.av_val, user.av_len);
# ^
# rtmp.c:2605:4: warning: implicit declaration of function 'MD5_Final' [-Wimplicit-function-declaration]
# MD5_Final(md5sum_val, &md5ctx);
# ^
# rtmp.c:2608:11: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG, md5sum_val, MD5_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'unsigned char *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2608:11: warning: passing argument 3 of 'RTMP_LogHexString' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG, md5sum_val, MD5_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'long unsigned int' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2610:11: warning: passing argument 2 of 'b64enc' makes integer from pointer without a cast [enabled by default]
# b64enc(md5sum_val, MD5_DIGEST_LENGTH, salted2, SALTED2_LEN);
# ^
# rtmp.c:2439:1: note: expected 'int' but argument is of type 'struct urlopt *'
# b64enc(const unsigned char *input, int length, char *output, int maxsize)
# ^
# rtmp.c:2630:11: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG, md5sum_val, MD5_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'unsigned char *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2630:11: warning: passing argument 3 of 'RTMP_LogHexString' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG, md5sum_val, MD5_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'long unsigned int' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2632:11: warning: passing argument 2 of 'b64enc' makes integer from pointer without a cast [enabled by default]
# b64enc(md5sum_val, MD5_DIGEST_LENGTH, response, RESPONSE_LEN);
# ^
# rtmp.c:2439:1: note: expected 'int' but argument is of type 'struct urlopt *'
# b64enc(const unsigned char *input, int length, char *output, int maxsize)
# ^
# rtmp.c:2636:31: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# pubToken.av_val = malloc(32 + B64INT_LEN + B64DIGEST_LEN + opaque.av_len);
# ^
# rtmp.c:2637:31: warning: incompatible implicit declaration of built-in function 'sprintf' [enabled by default]
# pubToken.av_len = sprintf(pubToken.av_val,
# ^
# rtmp.c:2643:13: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(orig_ptr);
# ^
# rtmp.c:2645:65: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# else if(strstr(description->av_val, "?reason=authfailed") != NULL)
# ^
# rtmp.c:2650:65: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# else if(strstr(description->av_val, "?reason=nosuchuser") != NULL)
# ^
# rtmp.c:2662:13: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# ptr = malloc(r->Link.app.av_len + pubToken.av_len);
# ^
# rtmp.c:2663:7: warning: implicit declaration of function 'strncpy' [-Wimplicit-function-declaration]
# strncpy(ptr, r->Link.app.av_val, r->Link.app.av_len);
# ^
# rtmp.c:2663:7: warning: incompatible implicit declaration of built-in function 'strncpy' [enabled by default]
# rtmp.c:2667:11: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->Link.app.av_val);
# ^
# rtmp.c:2686:64: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# else if (strstr(description->av_val, av_authmod_llnw.av_val) != NULL)
# ^
# rtmp.c:2688:60: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# if(strstr(description->av_val, "code=403 need auth") != NULL)
# ^
# rtmp.c:2692:68: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# if (strstr(r->Link.app.av_val, av_authmod_llnw.av_val) != NULL) {
# ^
# rtmp.c:2696:33: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# pubToken.av_val = malloc(r->Link.pubUser.av_len + av_authmod_llnw.av_len + 8);
# ^
# rtmp.c:2697:33: warning: incompatible implicit declaration of built-in function 'sprintf' [enabled by default]
# pubToken.av_len = sprintf(pubToken.av_val, "?%s&user=%s",
# ^
# rtmp.c:2706:76: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# else if((token_in = strstr(description->av_val, "?reason=needauth")) != NULL)
# ^
# rtmp.c:2709:29: warning: initialization from incompatible pointer type [enabled by default]
# char *par, *val = NULL;
# ^
# rtmp.c:2534:23: error: invalid operands to binary * (have 'int' and 'struct urlopt *')
# #define HEXHASH_LEN (2*MD5_DIGEST_LENGTH)
# ^
# rtmp.c:2710:15: note: in expansion of macro 'HEXHASH_LEN'
# char hash1[HEXHASH_LEN+1], hash2[HEXHASH_LEN+1], hash3[HEXHASH_LEN+1];
# ^
# rtmp.c:2710:9: error: size of array 'hash1' has non-integer type
# char hash1[HEXHASH_LEN+1], hash2[HEXHASH_LEN+1], hash3[HEXHASH_LEN+1];
# ^
# rtmp.c:2534:23: error: invalid operands to binary * (have 'int' and 'struct urlopt *')
# #define HEXHASH_LEN (2*MD5_DIGEST_LENGTH)
# ^
# rtmp.c:2710:37: note: in expansion of macro 'HEXHASH_LEN'
# char hash1[HEXHASH_LEN+1], hash2[HEXHASH_LEN+1], hash3[HEXHASH_LEN+1];
# ^
# rtmp.c:2710:31: error: size of array 'hash2' has non-integer type
# char hash1[HEXHASH_LEN+1], hash2[HEXHASH_LEN+1], hash3[HEXHASH_LEN+1];
# ^
# rtmp.c:2534:23: error: invalid operands to binary * (have 'int' and 'struct urlopt *')
# #define HEXHASH_LEN (2*MD5_DIGEST_LENGTH)
# ^
# rtmp.c:2710:59: note: in expansion of macro 'HEXHASH_LEN'
# char hash1[HEXHASH_LEN+1], hash2[HEXHASH_LEN+1], hash3[HEXHASH_LEN+1];
# ^
# rtmp.c:2710:53: error: size of array 'hash3' has non-integer type
# char hash1[HEXHASH_LEN+1], hash2[HEXHASH_LEN+1], hash3[HEXHASH_LEN+1];
# ^
# rtmp.c:2711:30: warning: initialization from incompatible pointer type [enabled by default]
# AVal user, nonce, *aptr = NULL;
# ^
# rtmp.c:2731:28: warning: incompatible implicit declaration of built-in function 'strdup' [enabled by default]
# ptr = orig_ptr = strdup(token_in);
# ^
# rtmp.c:2736:21: warning: incompatible implicit declaration of built-in function 'strchr' [enabled by default]
# ptr = strchr(par, '&');
# ^
# rtmp.c:2746:8: warning: assignment from incompatible pointer type [enabled by default]
# aptr = NULL;
# ^
# rtmp.c:2759:21: warning: incompatible implicit declaration of built-in function 'strlen' [enabled by default]
# aptr->av_len = strlen(aptr->av_val);
# ^
# rtmp.c:2763:11: warning: incompatible implicit declaration of built-in function 'sprintf' [enabled by default]
# sprintf(nchex, "%08x", nc);
# ^
# rtmp.c:2776:11: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG, md5sum_val, MD5_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'unsigned char *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2776:11: warning: passing argument 3 of 'RTMP_LogHexString' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG, md5sum_val, MD5_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'long unsigned int' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2777:11: warning: passing argument 2 of 'hexenc' makes integer from pointer without a cast [enabled by default]
# hexenc(md5sum_val, MD5_DIGEST_LENGTH, hash1);
# ^
# rtmp.c:2501:13: note: expected 'int' but argument is of type 'struct urlopt *'
# static void hexenc(unsigned char *inbuf, int len, char *dst)
# ^
# rtmp.c:2795:11: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG, md5sum_val, MD5_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'unsigned char *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2795:11: warning: passing argument 3 of 'RTMP_LogHexString' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG, md5sum_val, MD5_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'long unsigned int' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2796:11: warning: passing argument 2 of 'hexenc' makes integer from pointer without a cast [enabled by default]
# hexenc(md5sum_val, MD5_DIGEST_LENGTH, hash2);
# ^
# rtmp.c:2501:13: note: expected 'int' but argument is of type 'struct urlopt *'
# static void hexenc(unsigned char *inbuf, int len, char *dst)
# ^
# rtmp.c:2534:23: error: invalid operands to binary * (have 'int' and 'struct urlopt *')
# #define HEXHASH_LEN (2*MD5_DIGEST_LENGTH)
# ^
# rtmp.c:2800:31: note: in expansion of macro 'HEXHASH_LEN'
# MD5_Update(&md5ctx, hash1, HEXHASH_LEN);
# ^
# rtmp.c:2534:23: error: invalid operands to binary * (have 'int' and 'struct urlopt *')
# #define HEXHASH_LEN (2*MD5_DIGEST_LENGTH)
# ^
# rtmp.c:2810:31: note: in expansion of macro 'HEXHASH_LEN'
# MD5_Update(&md5ctx, hash2, HEXHASH_LEN);
# ^
# rtmp.c:2814:11: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG, md5sum_val, MD5_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'unsigned char *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2814:11: warning: passing argument 3 of 'RTMP_LogHexString' makes integer from pointer without a cast [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG, md5sum_val, MD5_DIGEST_LENGTH);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'long unsigned int' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:2815:11: warning: passing argument 2 of 'hexenc' makes integer from pointer without a cast [enabled by default]
# hexenc(md5sum_val, MD5_DIGEST_LENGTH, hash3);
# ^
# rtmp.c:2501:13: note: expected 'int' but argument is of type 'struct urlopt *'
# static void hexenc(unsigned char *inbuf, int len, char *dst)
# ^
# rtmp.c:2820:29: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# pubToken.av_val = malloc(64 + sizeof(authmod)-1 + user.av_len + nonce.av_len + sizeof(cnonce)-1 + sizeof(nchex)-1 + HEXHASH_LEN);
# ^
# rtmp.c:2534:23: error: invalid operands to binary * (have 'int' and 'struct urlopt *')
# #define HEXHASH_LEN (2*MD5_DIGEST_LENGTH)
# ^
# rtmp.c:2820:127: note: in expansion of macro 'HEXHASH_LEN'
# pubToken.av_val = malloc(64 + sizeof(authmod)-1 + user.av_len + nonce.av_len + sizeof(cnonce)-1 + sizeof(nchex)-1 + HEXHASH_LEN);
# ^
# rtmp.c:2820:11: warning: passing argument 1 of 'malloc' makes integer from pointer without a cast [enabled by default]
# pubToken.av_val = malloc(64 + sizeof(authmod)-1 + user.av_len + nonce.av_len + sizeof(cnonce)-1 + sizeof(nchex)-1 + HEXHASH_LEN);
# ^
# rtmp.c:2820:11: note: expected 'unsigned int' but argument is of type 'struct urlopt *'
# rtmp.c:2827:11: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(orig_ptr);
# ^
# rtmp.c:2829:63: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# else if(strstr(description->av_val, "?reason=authfail") != NULL)
# ^
# rtmp.c:2834:65: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# else if(strstr(description->av_val, "?reason=nosuchuser") != NULL)
# ^
# rtmp.c:2846:13: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# ptr = malloc(r->Link.app.av_len + pubToken.av_len);
# ^
# rtmp.c:2847:7: warning: incompatible implicit declaration of built-in function 'strncpy' [enabled by default]
# strncpy(ptr, r->Link.app.av_val, r->Link.app.av_len);
# ^
# rtmp.c:2851:11: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->Link.app.av_val);
# ^
# rtmp.c: In function 'HandleInvoke':
# rtmp.c:2933:3: warning: passing argument 2 of 'AMF_GetProp' from incompatible pointer type [enabled by default]
# AMFProp_GetString(AMF_GetProp(&obj, NULL, 0), &method);
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:121:22: note: expected 'const struct AVal *' but argument is of type 'struct urlopt *'
# AMFObjectProperty *AMF_GetProp(AMFObject * obj, const AVal * name,
# ^
# rtmp.c:2934:3: warning: passing argument 2 of 'AMF_GetProp' from incompatible pointer type [enabled by default]
# txn = AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 1));
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:121:22: note: expected 'const struct AVal *' but argument is of type 'struct urlopt *'
# AMFObjectProperty *AMF_GetProp(AMFObject * obj, const AVal * name,
# ^
# rtmp.c:2995:4: warning: passing argument 2 of 'AMF_GetProp' from incompatible pointer type [enabled by default]
# r->m_stream_id = (int)AMFProp_GetNumber(AMF_GetProp(&obj, NULL, 3));
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:121:22: note: expected 'const struct AVal *' but argument is of type 'struct urlopt *'
# AMFObjectProperty *AMF_GetProp(AMFObject * obj, const AVal * name,
# ^
# rtmp.c:3014:7: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(methodInvoked.av_val);
# ^
# rtmp.c:3079:15: warning: passing argument 2 of 'AMF_GetProp' from incompatible pointer type [enabled by default]
# AMFProp_GetObject(AMF_GetProp(&obj, NULL, 3), &obj2);
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:121:22: note: expected 'const struct AVal *' but argument is of type 'struct urlopt *'
# AMFObjectProperty *AMF_GetProp(AMFObject * obj, const AVal * name,
# ^
# rtmp.c:3088:17: warning: passing argument 2 of 'RTMP_Connect' from incompatible pointer type [enabled by default]
# if (!RTMP_Connect(r, NULL) || !RTMP_ConnectStream(r, 0))
# ^
# rtmp.c:1031:1: note: expected 'struct RTMPPacket *' but argument is of type 'struct urlopt *'
# RTMP_Connect(RTMP *r, RTMPPacket *cp)
# ^
# rtmp.c:3097:7: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(methodInvoked.av_val);
# ^
# rtmp.c:3111:7: warning: passing argument 2 of 'AMF_GetProp' from incompatible pointer type [enabled by default]
# AMFProp_GetObject(AMF_GetProp(&obj, NULL, 3), &obj2);
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:121:22: note: expected 'const struct AVal *' but argument is of type 'struct urlopt *'
# AMFObjectProperty *AMF_GetProp(AMFObject * obj, const AVal * name,
# ^
# rtmp.c: In function 'RTMP_FindFirstMatchingProperty':
# rtmp.c:3207:7: warning: passing argument 2 of 'AMF_GetProp' from incompatible pointer type [enabled by default]
# AMFObjectProperty *prop = AMF_GetProp(obj, NULL, n);
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:121:22: note: expected 'const struct AVal *' but argument is of type 'struct urlopt *'
# AMFObjectProperty *AMF_GetProp(AMFObject * obj, const AVal * name,
# ^
# rtmp.c:3211:4: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(p, prop, sizeof(*prop));
# ^
# rtmp.c: In function 'RTMP_FindPrefixProperty':
# rtmp.c:3232:7: warning: passing argument 2 of 'AMF_GetProp' from incompatible pointer type [enabled by default]
# AMFObjectProperty *prop = AMF_GetProp(obj, NULL, n);
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:121:22: note: expected 'const struct AVal *' but argument is of type 'struct urlopt *'
# AMFObjectProperty *AMF_GetProp(AMFObject * obj, const AVal * name,
# ^
# rtmp.c:3237:4: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(p, prop, sizeof(*prop));
# ^
# rtmp.c: In function 'DumpMetaData':
# rtmp.c:3258:7: warning: passing argument 2 of 'AMF_GetProp' from incompatible pointer type [enabled by default]
# prop = AMF_GetProp(obj, NULL, n);
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:121:22: note: expected 'const struct AVal *' but argument is of type 'struct urlopt *'
# AMFObjectProperty *AMF_GetProp(AMFObject * obj, const AVal * name,
# ^
# rtmp.c:3269:4: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
# snprintf(str, 255, "%.2f", prop->p_vu.p_number);
# ^
# rtmp.c: In function 'HandleMetadata':
# rtmp.c:3320:3: warning: passing argument 2 of 'AMF_GetProp' from incompatible pointer type [enabled by default]
# AMFProp_GetString(AMF_GetProp(&obj, NULL, 0), &metastring);
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:121:22: note: expected 'const struct AVal *' but argument is of type 'struct urlopt *'
# AMFObjectProperty *AMF_GetProp(AMFObject * obj, const AVal * name,
# ^
# rtmp.c: In function 'RTMP_ReadPacket':
# rtmp.c:3552:3: error: unknown type name 'uint8_t'
# uint8_t hbuf[RTMP_MAX_HEADER_SIZE] = { 0 };
# ^
# rtmp.c:3601:24: warning: incompatible implicit declaration of built-in function 'realloc' [enabled by default]
# int *timestamp = realloc(r->m_channelTimestamp, sizeof(int) * n);
# ^
# rtmp.c:3604:9: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->m_channelTimestamp);
# ^
# rtmp.c:3613:7: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
# memset(r->m_channelTimestamp + r->m_channelsAllocatedIn, 0, sizeof(int) * (n - r->m_channelsAllocatedIn));
# ^
# rtmp.c:3624:2: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(packet, r->m_vecChannelsIn[packet->m_nChannel],
# ^
# rtmp.c:3673:38: error: 'uint8_t' undeclared (first use in this function)
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)hbuf, hSize);
# ^
# rtmp.c:3673:47: error: expected expression before ')' token
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)hbuf, hSize);
# ^
# rtmp.c:3673:46: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)hbuf, hSize);
# ^
# rtmp.c:3673:47: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)hbuf, hSize);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:3673:47: error: too few arguments to function 'RTMP_LogHexString'
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)hbuf, hSize);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: declared here
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:3673:3: warning: statement with no effect [-Wunused-value]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)hbuf, hSize);
# ^
# rtmp.c:3675:49: warning: comparison of distinct pointer types lacks a cast [enabled by default]
# if (packet->m_nBodySize > 0 && packet->m_body == NULL)
# ^
# rtmp.c:3677:7: warning: implicit declaration of function 'RTMPPacket_Alloc' [-Wimplicit-function-declaration]
# if (!RTMPPacket_Alloc(packet, packet->m_nBodySize))
# ^
# rtmp.c:3695:7: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(packet->m_chunk->c_header, hbuf, hSize);
# ^
# rtmp.c:3707:47: error: expected expression before ')' token
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)packet->m_body + packet->m_nBytesRead, nChunk);
# ^
# rtmp.c:3707:46: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)packet->m_body + packet->m_nBytesRead, nChunk);
# ^
# rtmp.c:3707:47: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)packet->m_body + packet->m_nBytesRead, nChunk);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:3707:47: error: too few arguments to function 'RTMP_LogHexString'
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)packet->m_body + packet->m_nBytesRead, nChunk);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: declared here
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:3707:3: warning: statement with no effect [-Wunused-value]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)packet->m_body + packet->m_nBytesRead, nChunk);
# ^
# rtmp.c:3713:46: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# r->m_vecChannelsIn[packet->m_nChannel] = malloc(sizeof(RTMPPacket));
# ^
# rtmp.c:3714:3: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(r->m_vecChannelsIn[packet->m_nChannel], packet, sizeof(RTMPPacket));
# ^
# rtmp.c:3730:54: warning: assignment from incompatible pointer type [enabled by default]
# r->m_vecChannelsIn[packet->m_nChannel]->m_body = NULL;
# ^
# rtmp.c:3736:22: warning: assignment from incompatible pointer type [enabled by default]
# packet->m_body = NULL; /* so it won't be erased on free */
# ^
# rtmp.c:3555:7: warning: variable 'didAlloc' set but not used [-Wunused-but-set-variable]
# int didAlloc = FALSE;
# ^
# rtmp.c: In function 'RTMP_SendChunk':
# rtmp.c:3879:38: error: 'uint8_t' undeclared (first use in this function)
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_header, chunk->c_headerSize);
# ^
# rtmp.c:3879:47: error: expected expression before ')' token
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_header, chunk->c_headerSize);
# ^
# rtmp.c:3879:46: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_header, chunk->c_headerSize);
# ^
# rtmp.c:3879:47: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_header, chunk->c_headerSize);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:3879:47: error: too few arguments to function 'RTMP_LogHexString'
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_header, chunk->c_headerSize);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: declared here
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:3879:3: warning: statement with no effect [-Wunused-value]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_header, chunk->c_headerSize);
# ^
# rtmp.c:3883:51: error: expected expression before ')' token
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_chunk, chunk->c_chunkSize);
# ^
# rtmp.c:3883:50: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_chunk, chunk->c_chunkSize);
# ^
# rtmp.c:3883:51: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_chunk, chunk->c_chunkSize);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:3883:51: error: too few arguments to function 'RTMP_LogHexString'
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_chunk, chunk->c_chunkSize);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: declared here
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:3883:7: warning: statement with no effect [-Wunused-value]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)chunk->c_chunk, chunk->c_chunkSize);
# ^
# rtmp.c:3885:7: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(hbuf, ptr, chunk->c_headerSize);
# ^
# rtmp.c: In function 'RTMP_SendPacket':
# rtmp.c:3899:3: error: unknown type name 'uint32_t'
# uint32_t last = 0;
# ^
# rtmp.c:3903:3: error: unknown type name 'uint32_t'
# uint32_t t;
# ^
# rtmp.c:3904:25: warning: initialization from incompatible pointer type [enabled by default]
# char *buffer, *tbuf = NULL, *toff = NULL;
# ^
# rtmp.c:3904:39: warning: initialization from incompatible pointer type [enabled by default]
# char *buffer, *tbuf = NULL, *toff = NULL;
# ^
# rtmp.c:3911:30: warning: incompatible implicit declaration of built-in function 'realloc' [enabled by default]
# RTMPPacket **packets = realloc(r->m_vecChannelsOut, sizeof(RTMPPacket*) * n);
# ^
# rtmp.c:3913:9: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->m_vecChannelsOut);
# ^
# rtmp.c:3914:29: warning: assignment from incompatible pointer type [enabled by default]
# r->m_vecChannelsOut = NULL;
# ^
# rtmp.c:3919:7: warning: incompatible implicit declaration of built-in function 'memset' [enabled by default]
# memset(r->m_vecChannelsOut + r->m_channelsAllocatedOut, 0, sizeof(RTMPPacket*) * (n - r->m_channelsAllocatedOut));
# ^
# rtmp.c:4029:11: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# tbuf = malloc(tlen);
# ^
# rtmp.c:4042:42: error: 'uint8_t' undeclared (first use in this function)
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)header, hSize);
# ^
# rtmp.c:4042:51: error: expected expression before ')' token
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)header, hSize);
# ^
# rtmp.c:4042:50: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)header, hSize);
# ^
# rtmp.c:4042:51: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)header, hSize);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:4042:51: error: too few arguments to function 'RTMP_LogHexString'
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)header, hSize);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: declared here
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:4042:7: warning: statement with no effect [-Wunused-value]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)header, hSize);
# ^
# rtmp.c:4043:51: error: expected expression before ')' token
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)buffer, nChunkSize);
# ^
# rtmp.c:4043:50: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)buffer, nChunkSize);
# ^
# rtmp.c:4043:51: warning: passing argument 2 of 'RTMP_LogHexString' from incompatible pointer type [enabled by default]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)buffer, nChunkSize);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: expected 'const int *' but argument is of type 'struct urlopt *'
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:4043:51: error: too few arguments to function 'RTMP_LogHexString'
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)buffer, nChunkSize);
# ^
# In file included from rtmp.c:33:0:
# log.h:61:6: note: declared here
# void RTMP_LogHexString(int level, const uint8_t *data, unsigned long len);
# ^
# rtmp.c:4043:7: warning: statement with no effect [-Wunused-value]
# RTMP_LogHexString(RTMP_LOGDEBUG2, (uint8_t *)buffer, nChunkSize);
# ^
# rtmp.c:4046:4: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(toff, header, nChunkSize + hSize);
# ^
# rtmp.c:4091:7: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(tbuf);
# ^
# rtmp.c:4092:12: warning: assignment from incompatible pointer type [enabled by default]
# tbuf = NULL;
# ^
# rtmp.c:4115:47: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# r->m_vecChannelsOut[packet->m_nChannel] = malloc(sizeof(RTMPPacket));
# ^
# rtmp.c:4116:3: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(r->m_vecChannelsOut[packet->m_nChannel], packet, sizeof(RTMPPacket));
# ^
# rtmp.c: In function 'CloseInternal':
# rtmp.c:4150:4: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->m_clientID.av_val);
# ^
# rtmp.c:4151:25: warning: assignment from incompatible pointer type [enabled by default]
# r->m_clientID.av_val = NULL;
# ^
# rtmp.c:4164:5: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->m_read.buf);
# ^
# rtmp.c:4165:19: warning: assignment from incompatible pointer type [enabled by default]
# r->m_read.buf = NULL;
# ^
# rtmp.c:4182:4: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->m_vecChannelsIn[i]);
# ^
# rtmp.c:4183:26: warning: assignment from incompatible pointer type [enabled by default]
# r->m_vecChannelsIn[i] = NULL;
# ^
# rtmp.c:4186:3: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->m_vecChannelsIn);
# ^
# rtmp.c:4187:22: warning: assignment from incompatible pointer type [enabled by default]
# r->m_vecChannelsIn = NULL;
# ^
# rtmp.c:4189:25: warning: assignment from incompatible pointer type [enabled by default]
# r->m_channelTimestamp = NULL;
# ^
# rtmp.c:4196:27: warning: assignment from incompatible pointer type [enabled by default]
# r->m_vecChannelsOut[i] = NULL;
# ^
# rtmp.c:4200:23: warning: assignment from incompatible pointer type [enabled by default]
# r->m_vecChannelsOut = NULL;
# ^
# rtmp.c:4203:20: warning: assignment from incompatible pointer type [enabled by default]
# r->m_methodCalls = NULL;
# ^
# rtmp.c:4217:28: warning: assignment from incompatible pointer type [enabled by default]
# r->Link.tcUrl.av_val = NULL;
# ^
# rtmp.c:4223:26: warning: assignment from incompatible pointer type [enabled by default]
# r->Link.app.av_val = NULL;
# ^
# rtmp.c:4230:32: warning: assignment from incompatible pointer type [enabled by default]
# r->Link.playpath0.av_val = NULL;
# ^
# rtmp.c: In function 'RTMPSockBuf_Fill':
# rtmp.c:4265:4: warning: implicit declaration of function 'SSL_read' [-Wimplicit-function-declaration]
# nBytes = TLS_read(sb->sb_ssl, sb->sb_start + sb->sb_size, nBytes);
# ^
# rtmp.c:4270:4: warning: implicit declaration of function 'recv' [-Wimplicit-function-declaration]
# nBytes = recv(sb->sb_socket, sb->sb_start + sb->sb_size, nBytes, 0);
# ^
# In file included from rtmp.c:32:0:
# rtmp_sys.h:53:24: error: 'errno' undeclared (first use in this function)
# #define GetSockError() errno
# ^
# rtmp.c:4278:18: note: in expansion of macro 'GetSockError'
# int sockerr = GetSockError();
# ^
# rtmp_sys.h:53:24: warning: initialization makes integer from pointer without a cast [enabled by default]
# #define GetSockError() errno
# ^
# rtmp.c:4278:18: note: in expansion of macro 'GetSockError'
# int sockerr = GetSockError();
# ^
# rtmp.c:4280:8: warning: format '%s' expects argument of type 'char *', but argument 6 has type 'int' [-Wformat=]
# __FUNCTION__, nBytes, sockerr, strerror(sockerr));
# ^
# rtmp.c:4281:19: error: 'EINTR' undeclared (first use in this function)
# if (sockerr == EINTR && !RTMP_ctrlC)
# ^
# rtmp.c:4281:16: warning: comparison between pointer and integer [enabled by default]
# if (sockerr == EINTR && !RTMP_ctrlC)
# ^
# rtmp.c:4284:19: error: 'EWOULDBLOCK' undeclared (first use in this function)
# if (sockerr == EWOULDBLOCK || sockerr == EAGAIN)
# ^
# rtmp.c:4284:16: warning: comparison between pointer and integer [enabled by default]
# if (sockerr == EWOULDBLOCK || sockerr == EAGAIN)
# ^
# rtmp.c:4284:45: error: 'EAGAIN' undeclared (first use in this function)
# if (sockerr == EWOULDBLOCK || sockerr == EAGAIN)
# ^
# rtmp.c:4284:42: warning: comparison between pointer and integer [enabled by default]
# if (sockerr == EWOULDBLOCK || sockerr == EAGAIN)
# ^
# rtmp.c: In function 'RTMPSockBuf_Send':
# rtmp.c:4308:7: warning: implicit declaration of function 'SSL_write' [-Wimplicit-function-declaration]
# rc = TLS_write(sb->sb_ssl, buf, len);
# ^
# rtmp.c:4313:7: warning: implicit declaration of function 'send' [-Wimplicit-function-declaration]
# rc = send(sb->sb_socket, buf, len, 0);
# ^
# rtmp.c: In function 'RTMPSockBuf_Close':
# rtmp.c:4324:7: warning: implicit declaration of function 'SSL_shutdown' [-Wimplicit-function-declaration]
# TLS_shutdown(sb->sb_ssl);
# ^
# rtmp.c:4325:7: warning: implicit declaration of function 'SSL_free' [-Wimplicit-function-declaration]
# TLS_close(sb->sb_ssl);
# ^
# rtmp.c:4330:7: warning: implicit declaration of function 'close' [-Wimplicit-function-declaration]
# return closesocket(sb->sb_socket);
# ^
# rtmp.c: In function 'DecodeTEA':
# rtmp.c:4339:3: error: unknown type name 'uint32_t'
# uint32_t *v, k[4] = { 0 }, u;
# ^
# rtmp.c:4340:3: error: unknown type name 'uint32_t'
# uint32_t z, y, sum = 0, e, DELTA = 0x9e3779b9;
# ^
# rtmp.c:4341:3: error: unknown type name 'int32_t'
# int32_t p, q;
# ^
# rtmp.c:4371:9: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# out = malloc(n * 8);
# ^
# rtmp.c:4373:8: error: 'uint32_t' undeclared (first use in this function)
# v = (uint32_t *) out;
# ^
# rtmp.c:4373:18: error: expected expression before ')' token
# v = (uint32_t *) out;
# ^
# rtmp.c:4373:17: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# v = (uint32_t *) out;
# ^
# rtmp.c:4373:5: warning: assignment from incompatible pointer type [enabled by default]
# v = (uint32_t *) out;
# ^
# rtmp.c:4383:18: error: expected expression before ')' token
# v = (uint32_t *) out;
# ^
# rtmp.c:4383:17: error: invalid operands to binary * (have 'struct urlopt *' and 'struct urlopt *')
# v = (uint32_t *) out;
# ^
# rtmp.c:4383:5: warning: assignment from incompatible pointer type [enabled by default]
# v = (uint32_t *) out;
# ^
# rtmp.c:4402:3: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(text->av_val, out, text->av_len);
# ^
# rtmp.c:4403:3: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(out);
# ^
# rtmp.c: In function 'HTTP_Post':
# rtmp.c:4410:14: warning: incompatible implicit declaration of built-in function 'snprintf' [enabled by default]
# int hlen = snprintf(hbuf, sizeof(hbuf), "POST /%s%s/%d HTTP/1.1\r\n"
# ^
# rtmp.c: In function 'HTTP_read':
# rtmp.c:4442:3: warning: implicit declaration of function 'strncmp' [-Wimplicit-function-declaration]
# if (strncmp(r->m_sb.sb_start, "HTTP/1.1 200 ", 13))
# ^
# rtmp.c:4445:8: warning: incompatible implicit declaration of built-in function 'strstr' [enabled by default]
# if (!strstr(r->m_sb.sb_start, "\r\n\r\n")) {
# ^
# rtmp.c:4453:5: warning: implicit declaration of function 'strncasecmp' [-Wimplicit-function-declaration]
# if (!strncasecmp(ptr+8, "length:", 7)) break;
# ^
# rtmp.c:4476:30: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# r->m_clientID.av_val = malloc(hlen+1);
# ^
# rtmp.c:4480:7: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(r->m_clientID.av_val+1, ptr, hlen-1);
# ^
# rtmp.c: In function 'Read_1_Packet':
# rtmp.c:4503:3: error: unknown type name 'uint32_t'
# uint32_t prevTagSize = 0;
# ^
# rtmp.c:4509:3: error: unknown type name 'uint32_t'
# uint32_t nTimeStamp = 0;
# ^
# rtmp.c:4575:9: warning: passing argument 2 of 'AMF_GetProp' from incompatible pointer type [enabled by default]
# AMFProp_GetString(AMF_GetProp(&metaObj, NULL, 0),
# ^
# In file included from rtmp.h:36:0,
# from rtmp_sys.h:61,
# from rtmp.c:32:
# amf.h:121:22: note: expected 'const struct AVal *' but argument is of type 'struct urlopt *'
# AMFObjectProperty *AMF_GetProp(AMFObject * obj, const AVal * name,
# ^
# rtmp.c:4634:9: error: unknown type name 'uint32_t'
# uint32_t ts = 0;
# ^
# rtmp.c:4639:6: error: unknown type name 'uint32_t'
# uint32_t dataSize =
# ^
# rtmp.c:4801:20: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# r->m_read.buf = malloc(size + 4);
# ^
# rtmp.c:4859:7: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(ptr, packetBody, nPacketLen);
# ^
# rtmp.c:4876:8: error: unknown type name 'uint32_t'
# uint32_t dataSize = AMF_DecodeInt24(packetBody + pos + 1);
# ^
# rtmp.c:4964:7: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(buf, r->m_read.buf, len);
# ^
# In file included from rtmp.c:32:0:
# rtmp.c: In function 'RTMP_Read':
# rtmp_sys.h:54:25: error: 'errno' undeclared (first use in this function)
# #define SetSockError(e) errno = e
# ^
# rtmp.c:4990:5: note: in expansion of macro 'SetSockError'
# SetSockError(EINVAL);
# ^
# rtmp.c:4990:18: error: 'EINVAL' undeclared (first use in this function)
# SetSockError(EINVAL);
# ^
# rtmp_sys.h:54:33: note: in definition of macro 'SetSockError'
# #define SetSockError(e) errno = e
# ^
# rtmp_sys.h:54:25: warning: statement with no effect [-Wunused-value]
# #define SetSockError(e) errno = e
# ^
# rtmp.c:4990:5: note: in expansion of macro 'SetSockError'
# SetSockError(EINVAL);
# ^
# rtmp.c:5001:18: warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
# char *mybuf = malloc(HEADERBUF), *end = mybuf + HEADERBUF;
# ^
# rtmp.c:5006:4: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(mybuf, flvHeader, sizeof(flvHeader));
# ^
# rtmp.c:5016:5: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(mybuf);
# ^
# rtmp.c:5017:19: warning: assignment from incompatible pointer type [enabled by default]
# r->m_read.buf = NULL;
# ^
# rtmp.c:5024:17: warning: incompatible implicit declaration of built-in function 'realloc' [enabled by default]
# mybuf = realloc(mybuf, cnt + nRead);
# ^
# rtmp.c:5026:3: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->m_read.buf);
# ^
# rtmp.c:5047:7: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->m_read.buf);
# ^
# rtmp.c:5048:21: warning: assignment from incompatible pointer type [enabled by default]
# r->m_read.buf = NULL;
# ^
# rtmp.c:5049:24: warning: assignment from incompatible pointer type [enabled by default]
# r->m_read.bufpos = NULL;
# ^
# rtmp.c:5059:7: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(buf, r->m_read.bufpos, nRead);
# ^
# rtmp.c:5063:4: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
# free(r->m_read.buf);
# ^
# rtmp.c:5064:18: warning: assignment from incompatible pointer type [enabled by default]
# r->m_read.buf = NULL;
# ^
# rtmp.c:5065:21: warning: assignment from incompatible pointer type [enabled by default]
# r->m_read.bufpos = NULL;
# ^
# rtmp.c: In function 'RTMP_Write':
# rtmp.c:5161:7: warning: incompatible implicit declaration of built-in function 'memcpy' [enabled by default]
# memcpy(enc, buf, num);
# ^
# In file included from handshake.h:86:0,
# from rtmp.c:152:
# rtmp.c: At top level:
# dh.h:197:1: warning: 'isValidPublicKey' defined but not used [-Wunused-function]
# isValidPublicKey(MP_t y, MP_t p, MP_t q)
# ^
# In file included from rtmp.c:152:0:
# handshake.h:629:13: warning: 'bf_setkey' defined but not used [-Wunused-function]
# static void bf_setkey(const unsigned char *kp, int keybytes, bf_key *key)
# ^
# make[1]: *** [: rtmp.o] Error 1
# make[1]: Leaving directory '/tmp/rtmpdump/src/rtmpdump/librtmp'
# make: *** [Makefile:76: librtmp/librtmp.a] Error 2
# ==> ERROR: A failure occurred in build().
# Aborting...