#ifndef __UTIL_H__ #define __UTIL_H__ #include #include #if defined(unix) || defined(__APPLE__) #include #include #include #include #define SOCKETTYPE long #define SOCKETFAIL(a) ((a) < 0) #define INVSOCK -1 #define INVINETADDR -1 #define CLOSESOCKET close #define SOCKERRMSG strerror(errno) #elif defined WIN32 #include #include #define SOCKETTYPE SOCKET #define SOCKETFAIL(a) ((int)(a) == SOCKET_ERROR) #define INVSOCK INVALID_SOCKET #define INVINETADDR INADDR_NONE #define CLOSESOCKET closesocket extern char *WSAErrorMsg(void); #define SOCKERRMSG WSAErrorMsg() #ifndef SHUT_RDWR #define SHUT_RDWR SD_BOTH #endif #ifndef in_addr_t #define in_addr_t uint32_t #endif #endif #if JANSSON_MAJOR_VERSION >= 2 #define JSON_LOADS(str, err_ptr) json_loads((str), 0, (err_ptr)) #else #define JSON_LOADS(str, err_ptr) json_loads((str), (err_ptr)) #endif struct pool; enum dev_reason; struct cgpu_info; extern void json_rpc_call_async(CURL *, const char *url, const char *userpass, const char *rpc_req, bool longpoll, struct pool *pool, bool share, void *priv); extern json_t *json_rpc_call_completed(CURL *, int rc, bool probe, int *rolltime, void *out_priv); extern void gen_hash(unsigned char *data, unsigned char *hash, int len); extern void hash_data(unsigned char *out_hash, const unsigned char *data); extern void real_block_target(unsigned char *target, const unsigned char *data); extern bool hash_target_check(const unsigned char *hash, const unsigned char *target); extern bool hash_target_check_v(const unsigned char *hash, const unsigned char *target); bool stratum_send(struct pool *pool, char *s, ssize_t len); char *recv_line(struct pool *pool); bool parse_method(struct pool *pool, char *s); bool extract_sockaddr(struct pool *pool, char *url); bool auth_stratum(struct pool *pool); bool initiate_stratum(struct pool *pool); void suspend_stratum(struct pool *pool); void dev_error(struct cgpu_info *dev, enum dev_reason reason); void *realloc_strcat(char *ptr, char *s); extern char *sanestr(char *o, char *s); void RenameThread(const char* name); extern void notifier_init(int pipefd[2]); extern void notifier_wake(int fd[2]); extern void notifier_read(int fd[2]); #endif /* __UTIL_H__ */