1*3a184c67SAntonio Huete Jimenez /* $NetBSD: tnftp.h,v 1.39 2020/07/04 14:47:35 lukem Exp $ */ 2*3a184c67SAntonio Huete Jimenez 3*3a184c67SAntonio Huete Jimenez #ifndef TNFTP_H 4*3a184c67SAntonio Huete Jimenez #define TNFTP_H 1 56cdfca03SJohn Marino 66cdfca03SJohn Marino #define FTP_PRODUCT PACKAGE_NAME 76cdfca03SJohn Marino #define FTP_VERSION PACKAGE_VERSION 86cdfca03SJohn Marino 96cdfca03SJohn Marino #include "tnftp_config.h" 106cdfca03SJohn Marino 116cdfca03SJohn Marino #include <assert.h> 126cdfca03SJohn Marino #include <stdio.h> 136cdfca03SJohn Marino #include <ctype.h> 146cdfca03SJohn Marino #include <errno.h> 156cdfca03SJohn Marino 166cdfca03SJohn Marino #if defined(HAVE_SYS_TYPES_H) 176cdfca03SJohn Marino # include <sys/types.h> 186cdfca03SJohn Marino #endif 196cdfca03SJohn Marino #if defined(STDC_HEADERS) 206cdfca03SJohn Marino # include <stdarg.h> 216cdfca03SJohn Marino # include <stdlib.h> 226cdfca03SJohn Marino # include <string.h> 236cdfca03SJohn Marino #endif 246cdfca03SJohn Marino #if defined(HAVE_LIBGEN_H) 256cdfca03SJohn Marino # include <libgen.h> 266cdfca03SJohn Marino #endif 276cdfca03SJohn Marino #if defined(HAVE_UNISTD_H) 286cdfca03SJohn Marino # include <unistd.h> 296cdfca03SJohn Marino #endif 306cdfca03SJohn Marino #if defined(HAVE_POLL_H) 316cdfca03SJohn Marino # include <poll.h> 326cdfca03SJohn Marino #elif defined(HAVE_SYS_POLL_H) 336cdfca03SJohn Marino # include <sys/poll.h> 346cdfca03SJohn Marino #endif 356cdfca03SJohn Marino #if defined(HAVE_SYS_SOCKET_H) 366cdfca03SJohn Marino # include <sys/socket.h> 376cdfca03SJohn Marino #endif 386cdfca03SJohn Marino #if defined(HAVE_NETINET_IN_H) 396cdfca03SJohn Marino # include <netinet/in.h> 406cdfca03SJohn Marino #endif 416cdfca03SJohn Marino #if defined(HAVE_NETINET_IN_SYSTM_H) 426cdfca03SJohn Marino # include <netinet/in_systm.h> 436cdfca03SJohn Marino #endif 446cdfca03SJohn Marino #if defined(HAVE_NETINET_IP_H) 456cdfca03SJohn Marino # include <netinet/ip.h> 466cdfca03SJohn Marino #endif 476cdfca03SJohn Marino #if defined(HAVE_NETINET_TCP_H) 486cdfca03SJohn Marino # include <netinet/tcp.h> 496cdfca03SJohn Marino #endif 506cdfca03SJohn Marino #if defined(HAVE_NETDB_H) 516cdfca03SJohn Marino # if HAVE_DECL_AI_NUMERICHOST 526cdfca03SJohn Marino # include <netdb.h> 536cdfca03SJohn Marino # else /* !HAVE_DECL_AI_NUMERICHOST */ 546cdfca03SJohn Marino # define getaddrinfo non_rfc2553_getaddrinfo 556cdfca03SJohn Marino # include <netdb.h> 566cdfca03SJohn Marino # undef getaddrinfo 576cdfca03SJohn Marino # endif /* !HAVE_DECL_AI_NUMERICHOST */ 586cdfca03SJohn Marino #endif 596cdfca03SJohn Marino #if defined(HAVE_ARPA_INET_H) 606cdfca03SJohn Marino # include <arpa/inet.h> 616cdfca03SJohn Marino #endif 626cdfca03SJohn Marino #if defined(HAVE_DIRENT_H) 636cdfca03SJohn Marino # include <dirent.h> 646cdfca03SJohn Marino #else 656cdfca03SJohn Marino # define dirent direct 666cdfca03SJohn Marino # if defined(HAVE_SYS_NDIR_H) 676cdfca03SJohn Marino # include <sys/ndir.h> 686cdfca03SJohn Marino # endif 696cdfca03SJohn Marino # if defined(HAVE_SYS_DIR_H) 706cdfca03SJohn Marino # include <sys/dir.h> 716cdfca03SJohn Marino # endif 726cdfca03SJohn Marino # if defined(HAVE_NDIR_H) 736cdfca03SJohn Marino # include <ndir.h> 746cdfca03SJohn Marino # endif 756cdfca03SJohn Marino #endif 766cdfca03SJohn Marino #if defined(HAVE_SYS_UIO_H) 776cdfca03SJohn Marino # include <sys/uio.h> 786cdfca03SJohn Marino #endif 796cdfca03SJohn Marino 806cdfca03SJohn Marino #if defined(HAVE_SYS_IOCTL_H) 816cdfca03SJohn Marino # include <sys/ioctl.h> 826cdfca03SJohn Marino #endif 836cdfca03SJohn Marino #if defined(HAVE_SYS_PARAM_H) 846cdfca03SJohn Marino # include <sys/param.h> 856cdfca03SJohn Marino #endif 866cdfca03SJohn Marino #if defined(HAVE_SYS_STAT_H) 876cdfca03SJohn Marino # include <sys/stat.h> 886cdfca03SJohn Marino #endif 896cdfca03SJohn Marino #if defined(HAVE_SYS_SYSLIMITS_H) 906cdfca03SJohn Marino # include <sys/syslimits.h> 916cdfca03SJohn Marino #endif 926cdfca03SJohn Marino #if defined(HAVE_SYS_WAIT_H) 936cdfca03SJohn Marino # include <sys/wait.h> 946cdfca03SJohn Marino #endif 956cdfca03SJohn Marino 966cdfca03SJohn Marino #if defined(HAVE_ARPA_FTP_H) 976cdfca03SJohn Marino # include <arpa/ftp.h> 986cdfca03SJohn Marino #endif 996cdfca03SJohn Marino 1006cdfca03SJohn Marino #if defined(HAVE_FCNTL_H) 1016cdfca03SJohn Marino # include <fcntl.h> 1026cdfca03SJohn Marino #endif 1036cdfca03SJohn Marino #if defined(HAVE_LIMITS_H) 1046cdfca03SJohn Marino # include <limits.h> 1056cdfca03SJohn Marino #endif 1066cdfca03SJohn Marino #if defined(HAVE_LOCALE_H) 1076cdfca03SJohn Marino # include <locale.h> 1086cdfca03SJohn Marino #endif 1096cdfca03SJohn Marino #if defined(HAVE_PWD_H) 1106cdfca03SJohn Marino # include <pwd.h> 1116cdfca03SJohn Marino #endif 1126cdfca03SJohn Marino #if defined(HAVE_SETJMP_H) 1136cdfca03SJohn Marino # include <setjmp.h> 1146cdfca03SJohn Marino #endif 1156cdfca03SJohn Marino #if defined(HAVE_SIGNAL_H) 1166cdfca03SJohn Marino # include <signal.h> 1176cdfca03SJohn Marino #endif 1186cdfca03SJohn Marino #if defined(HAVE_STDDEF_H) 1196cdfca03SJohn Marino # include <stddef.h> 1206cdfca03SJohn Marino #endif 1216cdfca03SJohn Marino #if defined(HAVE_TERMIOS_H) 1226cdfca03SJohn Marino # include <termios.h> 1236cdfca03SJohn Marino #endif 1246cdfca03SJohn Marino 1256cdfca03SJohn Marino #if defined(HAVE_POLL) 1266cdfca03SJohn Marino /* we use poll */ 1276cdfca03SJohn Marino #elif defined(HAVE_SELECT) 1286cdfca03SJohn Marino /* we use select */ 1296cdfca03SJohn Marino #else /* !defined(HAVE_POLL) && !defined(HAVE_SELECT) */ 1306cdfca03SJohn Marino # error "no poll() or select() found" 1316cdfca03SJohn Marino #endif 1326cdfca03SJohn Marino #if !defined(POLLIN) 1336cdfca03SJohn Marino # define POLLIN 0x0001 1346cdfca03SJohn Marino #endif 1356cdfca03SJohn Marino #if !defined(POLLOUT) 1366cdfca03SJohn Marino # define POLLOUT 0x0004 1376cdfca03SJohn Marino #endif 1386cdfca03SJohn Marino #if !defined(POLLRDNORM) 1396cdfca03SJohn Marino # define POLLRDNORM 0x0040 1406cdfca03SJohn Marino #endif 1416cdfca03SJohn Marino #if !defined(POLLWRNORM) 1426cdfca03SJohn Marino # define POLLWRNORM POLLOUT 1436cdfca03SJohn Marino #endif 1446cdfca03SJohn Marino #if !defined(POLLRDBAND) 1456cdfca03SJohn Marino # define POLLRDBAND 0x0080 1466cdfca03SJohn Marino #endif 1476cdfca03SJohn Marino #if !defined(INFTIM) 1486cdfca03SJohn Marino # define INFTIM -1 1496cdfca03SJohn Marino #endif 1506cdfca03SJohn Marino #if !defined(HAVE_STRUCT_POLLFD) 1516cdfca03SJohn Marino struct pollfd { 1526cdfca03SJohn Marino int fd; 1536cdfca03SJohn Marino short events; 1546cdfca03SJohn Marino short revents; 1556cdfca03SJohn Marino }; 1566cdfca03SJohn Marino #endif 1576cdfca03SJohn Marino 1586cdfca03SJohn Marino #if defined(TIME_WITH_SYS_TIME) 1596cdfca03SJohn Marino # include <sys/time.h> 1606cdfca03SJohn Marino # include <time.h> 1616cdfca03SJohn Marino #else 1626cdfca03SJohn Marino # if defined(HAVE_SYS_TIME_H) 1636cdfca03SJohn Marino # include <sys/time.h> 1646cdfca03SJohn Marino # else 1656cdfca03SJohn Marino # include <time.h> 1666cdfca03SJohn Marino # endif 1676cdfca03SJohn Marino #endif 1686cdfca03SJohn Marino 1696cdfca03SJohn Marino #if defined(HAVE_ERR_H) 1706cdfca03SJohn Marino # include <err.h> 1716cdfca03SJohn Marino #endif 1726cdfca03SJohn Marino 1736cdfca03SJohn Marino #if defined(USE_GLOB_H) /* not set by configure; used by other build systems */ 1746cdfca03SJohn Marino # include <glob.h> 1756cdfca03SJohn Marino #else 1766cdfca03SJohn Marino # include "ftpglob.h" 1776cdfca03SJohn Marino #endif 1786cdfca03SJohn Marino 1796cdfca03SJohn Marino #if defined(HAVE_PATHS_H) 1806cdfca03SJohn Marino # include <paths.h> 1816cdfca03SJohn Marino #endif 1826cdfca03SJohn Marino #if !defined(_PATH_BSHELL) 1836cdfca03SJohn Marino # define _PATH_BSHELL "/bin/sh" 1846cdfca03SJohn Marino #endif 1856cdfca03SJohn Marino #if !defined(_PATH_TMP) 1866cdfca03SJohn Marino # define _PATH_TMP "/tmp/" 1876cdfca03SJohn Marino #endif 1886cdfca03SJohn Marino 1896cdfca03SJohn Marino typedef struct _stringlist { 1906cdfca03SJohn Marino char **sl_str; 1916cdfca03SJohn Marino size_t sl_max; 1926cdfca03SJohn Marino size_t sl_cur; 1936cdfca03SJohn Marino } StringList; 1946cdfca03SJohn Marino 1956cdfca03SJohn Marino StringList *sl_init(void); 1966cdfca03SJohn Marino int sl_add(StringList *, char *); 1976cdfca03SJohn Marino void sl_free(StringList *, int); 1986cdfca03SJohn Marino char *sl_find(StringList *, char *); 1996cdfca03SJohn Marino 2006cdfca03SJohn Marino #if defined(HAVE_TERMCAP_H) 2016cdfca03SJohn Marino # include <termcap.h> 2026cdfca03SJohn Marino #else 2036cdfca03SJohn Marino int tgetent(char *, const char *); 2046cdfca03SJohn Marino char *tgetstr(const char *, char **); 2056cdfca03SJohn Marino int tgetflag(const char *); 2066cdfca03SJohn Marino int tgetnum(const char *); 2076cdfca03SJohn Marino char *tgoto(const char *, int, int); 2086cdfca03SJohn Marino void tputs(const char *, int, int (*)(int)); 2096cdfca03SJohn Marino #endif /* !HAVE_TERMCAP_H */ 2106cdfca03SJohn Marino 2116cdfca03SJohn Marino #if defined(HAVE_VIS_H) && defined(HAVE_STRVIS) && defined(HAVE_STRUNVIS) 2126cdfca03SJohn Marino # include <vis.h> 2136cdfca03SJohn Marino #else 2146cdfca03SJohn Marino # include "ftpvis.h" 2156cdfca03SJohn Marino #endif 2166cdfca03SJohn Marino 2176cdfca03SJohn Marino #if !defined(HAVE_IN_PORT_T) 2186cdfca03SJohn Marino typedef unsigned short in_port_t; 2196cdfca03SJohn Marino #endif 2206cdfca03SJohn Marino 2216cdfca03SJohn Marino #if !defined(HAVE_SA_FAMILY_T) 2226cdfca03SJohn Marino typedef unsigned short sa_family_t; 2236cdfca03SJohn Marino #endif 2246cdfca03SJohn Marino 2256cdfca03SJohn Marino #if !defined(HAVE_SOCKLEN_T) 2266cdfca03SJohn Marino typedef unsigned int socklen_t; 2276cdfca03SJohn Marino #endif 2286cdfca03SJohn Marino 2296cdfca03SJohn Marino #if defined(USE_INET6) 2306cdfca03SJohn Marino # define INET6 2316cdfca03SJohn Marino #endif 2326cdfca03SJohn Marino 2336cdfca03SJohn Marino #if !HAVE_DECL_AI_NUMERICHOST 2346cdfca03SJohn Marino 2356cdfca03SJohn Marino /* RFC 2553 */ 2366cdfca03SJohn Marino #undef EAI_ADDRFAMILY 2376cdfca03SJohn Marino #define EAI_ADDRFAMILY 1 /* address family for hostname not supported */ 2386cdfca03SJohn Marino #undef EAI_AGAIN 2396cdfca03SJohn Marino #define EAI_AGAIN 2 /* temporary failure in name resolution */ 2406cdfca03SJohn Marino #undef EAI_BADFLAGS 2416cdfca03SJohn Marino #define EAI_BADFLAGS 3 /* invalid value for ai_flags */ 2426cdfca03SJohn Marino #undef EAI_FAIL 2436cdfca03SJohn Marino #define EAI_FAIL 4 /* non-recoverable failure in name resolution */ 2446cdfca03SJohn Marino #undef EAI_FAMILY 2456cdfca03SJohn Marino #define EAI_FAMILY 5 /* ai_family not supported */ 2466cdfca03SJohn Marino #undef EAI_MEMORY 2476cdfca03SJohn Marino #define EAI_MEMORY 6 /* memory allocation failure */ 2486cdfca03SJohn Marino #undef EAI_NODATA 2496cdfca03SJohn Marino #define EAI_NODATA 7 /* no address associated with hostname */ 2506cdfca03SJohn Marino #undef EAI_NONAME 2516cdfca03SJohn Marino #define EAI_NONAME 8 /* hostname nor servname provided, or not known */ 2526cdfca03SJohn Marino #undef EAI_SERVICE 2536cdfca03SJohn Marino #define EAI_SERVICE 9 /* servname not supported for ai_socktype */ 2546cdfca03SJohn Marino #undef EAI_SOCKTYPE 2556cdfca03SJohn Marino #define EAI_SOCKTYPE 10 /* ai_socktype not supported */ 2566cdfca03SJohn Marino #undef EAI_SYSTEM 2576cdfca03SJohn Marino #define EAI_SYSTEM 11 /* system error returned in errno */ 2586cdfca03SJohn Marino 2596cdfca03SJohn Marino /* KAME extensions? */ 2606cdfca03SJohn Marino #undef EAI_BADHINTS 2616cdfca03SJohn Marino #define EAI_BADHINTS 12 2626cdfca03SJohn Marino #undef EAI_PROTOCOL 2636cdfca03SJohn Marino #define EAI_PROTOCOL 13 2646cdfca03SJohn Marino #undef EAI_MAX 2656cdfca03SJohn Marino #define EAI_MAX 14 2666cdfca03SJohn Marino 2676cdfca03SJohn Marino /* RFC 2553 */ 2686cdfca03SJohn Marino #undef NI_MAXHOST 2696cdfca03SJohn Marino #define NI_MAXHOST 1025 2706cdfca03SJohn Marino #undef NI_MAXSERV 2716cdfca03SJohn Marino #define NI_MAXSERV 32 2726cdfca03SJohn Marino 2736cdfca03SJohn Marino #undef NI_NOFQDN 2746cdfca03SJohn Marino #define NI_NOFQDN 0x00000001 2756cdfca03SJohn Marino #undef NI_NUMERICHOST 2766cdfca03SJohn Marino #define NI_NUMERICHOST 0x00000002 2776cdfca03SJohn Marino #undef NI_NAMEREQD 2786cdfca03SJohn Marino #define NI_NAMEREQD 0x00000004 2796cdfca03SJohn Marino #undef NI_NUMERICSERV 2806cdfca03SJohn Marino #define NI_NUMERICSERV 0x00000008 2816cdfca03SJohn Marino #undef NI_DGRAM 2826cdfca03SJohn Marino #define NI_DGRAM 0x00000010 2836cdfca03SJohn Marino 2846cdfca03SJohn Marino /* RFC 2553 */ 2856cdfca03SJohn Marino #undef AI_PASSIVE 2866cdfca03SJohn Marino #define AI_PASSIVE 0x00000001 /* get address to use bind() */ 2876cdfca03SJohn Marino #undef AI_CANONNAME 2886cdfca03SJohn Marino #define AI_CANONNAME 0x00000002 /* fill ai_canonname */ 2896cdfca03SJohn Marino 2906cdfca03SJohn Marino /* KAME extensions ? */ 2916cdfca03SJohn Marino #undef AI_NUMERICHOST 2926cdfca03SJohn Marino #define AI_NUMERICHOST 0x00000004 /* prevent name resolution */ 2936cdfca03SJohn Marino #undef AI_MASK 2946cdfca03SJohn Marino #define AI_MASK (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST) 2956cdfca03SJohn Marino 2966cdfca03SJohn Marino /* RFC 2553 */ 2976cdfca03SJohn Marino #undef AI_ALL 2986cdfca03SJohn Marino #define AI_ALL 0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */ 2996cdfca03SJohn Marino #undef AI_V4MAPPED_CFG 3006cdfca03SJohn Marino #define AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */ 3016cdfca03SJohn Marino #undef AI_ADDRCONFIG 3026cdfca03SJohn Marino #define AI_ADDRCONFIG 0x00000400 /* only if any address is assigned */ 3036cdfca03SJohn Marino #undef AI_V4MAPPED 3046cdfca03SJohn Marino #define AI_V4MAPPED 0x00000800 /* accept IPv4-mapped IPv6 address */ 3056cdfca03SJohn Marino 3066cdfca03SJohn Marino #endif /* !HAVE_DECL_AI_NUMERICHOST */ 3076cdfca03SJohn Marino 3086cdfca03SJohn Marino 3096cdfca03SJohn Marino #if !HAVE_DECL_AI_NUMERICHOST && !defined(HAVE_STRUCT_ADDRINFO) \ 3106cdfca03SJohn Marino && !defined(USE_SOCKS) 3116cdfca03SJohn Marino 3126cdfca03SJohn Marino struct addrinfo { 3136cdfca03SJohn Marino int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */ 3146cdfca03SJohn Marino int ai_family; /* PF_xxx */ 3156cdfca03SJohn Marino int ai_socktype; /* SOCK_xxx */ 3166cdfca03SJohn Marino int ai_protocol; /* 0 or IPPROTO_xxx for IPv4 and IPv6 */ 3176cdfca03SJohn Marino socklen_t ai_addrlen; /* length of ai_addr */ 3186cdfca03SJohn Marino char *ai_canonname; /* canonical name for hostname */ 3196cdfca03SJohn Marino struct sockaddr *ai_addr; /* binary address */ 3206cdfca03SJohn Marino struct addrinfo *ai_next; /* next structure in linked list */ 3216cdfca03SJohn Marino }; 3226cdfca03SJohn Marino 3236cdfca03SJohn Marino int getaddrinfo(const char *, const char *, 3246cdfca03SJohn Marino const struct addrinfo *, struct addrinfo **); 3256cdfca03SJohn Marino int getnameinfo(const struct sockaddr *, socklen_t, 3266cdfca03SJohn Marino char *, size_t, char *, size_t, int); 3276cdfca03SJohn Marino void freeaddrinfo(struct addrinfo *); 3286cdfca03SJohn Marino const char *gai_strerror(int); 3296cdfca03SJohn Marino 3306cdfca03SJohn Marino #endif /* !HAVE_DECL_AI_NUMERICHOST && !defined(HAVE_STRUCT_ADDRINFO) \ 3316cdfca03SJohn Marino && !defined(USE_SOCKS) */ 3326cdfca03SJohn Marino 3336cdfca03SJohn Marino #if !defined(HAVE_STRUCT_DIRENT_D_NAMLEN) 3346cdfca03SJohn Marino # define DIRENT_MISSING_D_NAMLEN 3356cdfca03SJohn Marino #endif 3366cdfca03SJohn Marino 3376cdfca03SJohn Marino #if !HAVE_DECL_H_ERRNO 3386cdfca03SJohn Marino extern int h_errno; 3396cdfca03SJohn Marino #endif 3406cdfca03SJohn Marino #define HAVE_H_ERRNO 1 /* XXX: an assumption for now... */ 3416cdfca03SJohn Marino 3426cdfca03SJohn Marino #if !HAVE_DECL_FCLOSE 3436cdfca03SJohn Marino int fclose(FILE *); 3446cdfca03SJohn Marino #endif 3456cdfca03SJohn Marino 3466cdfca03SJohn Marino #if !HAVE_DECL_GETPASS 3476cdfca03SJohn Marino char *getpass(const char *); 3486cdfca03SJohn Marino #endif 3496cdfca03SJohn Marino 3506cdfca03SJohn Marino #if !HAVE_DECL_OPTARG 3516cdfca03SJohn Marino extern char *optarg; 3526cdfca03SJohn Marino #endif 3536cdfca03SJohn Marino 3546cdfca03SJohn Marino #if !HAVE_DECL_OPTIND 3556cdfca03SJohn Marino extern int optind; 3566cdfca03SJohn Marino #endif 3576cdfca03SJohn Marino 3586cdfca03SJohn Marino #if !HAVE_DECL_PCLOSE 3596cdfca03SJohn Marino int pclose(FILE *); 3606cdfca03SJohn Marino #endif 3616cdfca03SJohn Marino 3626cdfca03SJohn Marino #if !HAVE_DECL_DIRNAME 3636cdfca03SJohn Marino char *dirname(char *); 3646cdfca03SJohn Marino #endif 3656cdfca03SJohn Marino 3666cdfca03SJohn Marino #if !defined(HAVE_ERR) 3676cdfca03SJohn Marino void err(int, const char *, ...); 3686cdfca03SJohn Marino void errx(int, const char *, ...); 3696cdfca03SJohn Marino void warn(const char *, ...); 3706cdfca03SJohn Marino void warnx(const char *, ...); 3716cdfca03SJohn Marino #endif 3726cdfca03SJohn Marino 3736cdfca03SJohn Marino #if !defined(HAVE_FGETLN) 3746cdfca03SJohn Marino char *fgetln(FILE *, size_t *); 3756cdfca03SJohn Marino #endif 3766cdfca03SJohn Marino 3776cdfca03SJohn Marino #if !defined(HAVE_FSEEKO) 3786cdfca03SJohn Marino int fseeko(FILE *, off_t, int); 3796cdfca03SJohn Marino #endif 3806cdfca03SJohn Marino 3816cdfca03SJohn Marino #if !defined(HAVE_INET_NTOP) 3826cdfca03SJohn Marino const char *inet_ntop(int, const void *, char *, socklen_t); 3836cdfca03SJohn Marino #endif 3846cdfca03SJohn Marino 3856cdfca03SJohn Marino #if !defined(HAVE_INET_PTON) 3866cdfca03SJohn Marino int inet_pton(int, const char *, void *); 3876cdfca03SJohn Marino #endif 3886cdfca03SJohn Marino 3896cdfca03SJohn Marino #if !defined(HAVE_MKSTEMP) 3906cdfca03SJohn Marino int mkstemp(char *); 3916cdfca03SJohn Marino #endif 3926cdfca03SJohn Marino 3936cdfca03SJohn Marino #if !defined(HAVE_SETPROGNAME) 3946cdfca03SJohn Marino const char *getprogname(void); 3956cdfca03SJohn Marino void setprogname(const char *); 3966cdfca03SJohn Marino #endif 3976cdfca03SJohn Marino 3986cdfca03SJohn Marino #if !defined(HAVE_SNPRINTF) 3996cdfca03SJohn Marino int snprintf(char *, size_t, const char *, ...); 4006cdfca03SJohn Marino #endif 4016cdfca03SJohn Marino 4026cdfca03SJohn Marino #if !defined(HAVE_STRDUP) 4036cdfca03SJohn Marino char *strdup(const char *); 4046cdfca03SJohn Marino #endif 4056cdfca03SJohn Marino 4066cdfca03SJohn Marino #if !defined(HAVE_STRERROR) 4076cdfca03SJohn Marino char *strerror(int); 4086cdfca03SJohn Marino #endif 4096cdfca03SJohn Marino 4106cdfca03SJohn Marino #if !defined(HAVE_STRPTIME) || !HAVE_DECL_STRPTIME 4116cdfca03SJohn Marino char *strptime(const char *, const char *, struct tm *); 4126cdfca03SJohn Marino #endif 4136cdfca03SJohn Marino 4146cdfca03SJohn Marino #if defined(HAVE_PRINTF_LONG_LONG) && defined(HAVE_LONG_LONG_INT) 4156cdfca03SJohn Marino # if !defined(HAVE_STRTOLL) 4166cdfca03SJohn Marino long long strtoll(const char *, char **, int); 4176cdfca03SJohn Marino # endif 4186cdfca03SJohn Marino # if !defined(LLONG_MIN) 4196cdfca03SJohn Marino # define LLONG_MIN (-0x7fffffffffffffffLL-1) 4206cdfca03SJohn Marino # endif 4216cdfca03SJohn Marino # if !defined(LLONG_MAX) 4226cdfca03SJohn Marino # define LLONG_MAX (0x7fffffffffffffffLL) 4236cdfca03SJohn Marino # endif 4246cdfca03SJohn Marino #else /* !(defined(HAVE_PRINTF_LONG_LONG) && defined(HAVE_LONG_LONG_INT)) */ 4256cdfca03SJohn Marino # define NO_LONG_LONG 1 4266cdfca03SJohn Marino #endif /* !(defined(HAVE_PRINTF_LONG_LONG) && defined(HAVE_LONG_LONG_INT)) */ 4276cdfca03SJohn Marino 4286cdfca03SJohn Marino #if !defined(HAVE_TIMEGM) 4296cdfca03SJohn Marino time_t timegm(struct tm *); 4306cdfca03SJohn Marino #endif 4316cdfca03SJohn Marino 4326cdfca03SJohn Marino #if !defined(HAVE_STRLCAT) 4336cdfca03SJohn Marino size_t strlcat(char *, const char *, size_t); 4346cdfca03SJohn Marino #endif 4356cdfca03SJohn Marino 4366cdfca03SJohn Marino #if !defined(HAVE_STRLCPY) 4376cdfca03SJohn Marino size_t strlcpy(char *, const char *, size_t); 4386cdfca03SJohn Marino #endif 4396cdfca03SJohn Marino 4406cdfca03SJohn Marino #if !defined(HAVE_STRSEP) 4416cdfca03SJohn Marino char *strsep(char **stringp, const char *delim); 4426cdfca03SJohn Marino #endif 4436cdfca03SJohn Marino 4446cdfca03SJohn Marino #if !defined(HAVE_UTIMES) 4456cdfca03SJohn Marino int utimes(const char *, const struct timeval *); 4466cdfca03SJohn Marino #endif 4476cdfca03SJohn Marino 448*3a184c67SAntonio Huete Jimenez #if !defined(HAVE_VASPRINTF) 449*3a184c67SAntonio Huete Jimenez int vasprintf(char **, const char *, va_list); 450*3a184c67SAntonio Huete Jimenez #endif 451*3a184c67SAntonio Huete Jimenez 4526cdfca03SJohn Marino #if !defined(HAVE_MEMMOVE) 4536cdfca03SJohn Marino # define memmove(a,b,c) bcopy((b),(a),(c)) 4546cdfca03SJohn Marino /* XXX: add others #defines for borken systems? */ 4556cdfca03SJohn Marino #endif 4566cdfca03SJohn Marino 4576cdfca03SJohn Marino #if defined(HAVE_GETPASSPHRASE) 4586cdfca03SJohn Marino # define getpass getpassphrase 4596cdfca03SJohn Marino #endif 4606cdfca03SJohn Marino 4616cdfca03SJohn Marino #if !defined(MIN) 4626cdfca03SJohn Marino # define MIN(a, b) ((a) < (b) ? (a) : (b)) 4636cdfca03SJohn Marino #endif 4646cdfca03SJohn Marino #if !defined(MAX) 4656cdfca03SJohn Marino # define MAX(a, b) ((a) < (b) ? (b) : (a)) 4666cdfca03SJohn Marino #endif 4676cdfca03SJohn Marino 4686cdfca03SJohn Marino #if !defined(timersub) 4696cdfca03SJohn Marino # define timersub(tvp, uvp, vvp) \ 4706cdfca03SJohn Marino do { \ 4716cdfca03SJohn Marino (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ 4726cdfca03SJohn Marino (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \ 4736cdfca03SJohn Marino if ((vvp)->tv_usec < 0) { \ 4746cdfca03SJohn Marino (vvp)->tv_sec--; \ 4756cdfca03SJohn Marino (vvp)->tv_usec += 1000000; \ 4766cdfca03SJohn Marino } \ 4776cdfca03SJohn Marino } while (0) 4786cdfca03SJohn Marino #endif 4796cdfca03SJohn Marino 4806cdfca03SJohn Marino #if !defined(S_ISLNK) 4816cdfca03SJohn Marino # define S_ISLNK(m) ((m & S_IFMT) == S_IFLNK) 4826cdfca03SJohn Marino #endif 4836cdfca03SJohn Marino 4846cdfca03SJohn Marino #define EPOCH_YEAR 1970 4856cdfca03SJohn Marino #define SECSPERHOUR 3600 4866cdfca03SJohn Marino #define SECSPERDAY 86400 4876cdfca03SJohn Marino #define TM_YEAR_BASE 1900 4886cdfca03SJohn Marino 4896cdfca03SJohn Marino #if defined(USE_SOCKS) /* (Dante) SOCKS5 */ 4906cdfca03SJohn Marino #define connect Rconnect 4916cdfca03SJohn Marino #define bind Rbind 4926cdfca03SJohn Marino #define getsockname Rgetsockname 4936cdfca03SJohn Marino #define getpeername Rgetpeername 4946cdfca03SJohn Marino #define accept Raccept 4956cdfca03SJohn Marino #define rresvport Rrresvport 4966cdfca03SJohn Marino #define bindresvport Rbindresvport 4976cdfca03SJohn Marino #define gethostbyname Rgethostbyname 4986cdfca03SJohn Marino #define gethostbyname2 Rgethostbyname2 4996cdfca03SJohn Marino #define sendto Rsendto 5006cdfca03SJohn Marino #define recvfrom Rrecvfrom 5016cdfca03SJohn Marino #define recvfrom Rrecvfrom 5026cdfca03SJohn Marino #define write Rwrite 5036cdfca03SJohn Marino #define writev Rwritev 5046cdfca03SJohn Marino #define send Rsend 5056cdfca03SJohn Marino #define sendmsg Rsendmsg 5066cdfca03SJohn Marino #define read Rread 5076cdfca03SJohn Marino #define readv Rreadv 5086cdfca03SJohn Marino #define recv Rrecv 5096cdfca03SJohn Marino #define recvmsg Rrecvmsg 5106cdfca03SJohn Marino #define getaddrinfo Rgetaddrinfo 5116cdfca03SJohn Marino #define getipnodebyname Rgetipnodebyname 5126cdfca03SJohn Marino #endif /* defined(USE_SOCKS) */ 5136cdfca03SJohn Marino 5146cdfca03SJohn Marino 5156cdfca03SJohn Marino /* 5166cdfca03SJohn Marino * Compatibility for stuff in NetBSD <sys/cdefs.h> 5176cdfca03SJohn Marino */ 5186cdfca03SJohn Marino #undef __dead 5196cdfca03SJohn Marino #define __dead 5206cdfca03SJohn Marino 5216cdfca03SJohn Marino #ifdef __UNCONST 5226cdfca03SJohn Marino #undef __UNCONST 5236cdfca03SJohn Marino #endif 5246cdfca03SJohn Marino #define __UNCONST(a) ((void *)(unsigned long)(const void *)(a)) 525*3a184c67SAntonio Huete Jimenez 526*3a184c67SAntonio Huete Jimenez #ifdef __UNVOLATILE 527*3a184c67SAntonio Huete Jimenez #undef __UNVOLATILE 528*3a184c67SAntonio Huete Jimenez #endif 529*3a184c67SAntonio Huete Jimenez #define __UNVOLATILE(a) ((void *)(unsigned long)(volatile void *)(a)) 530*3a184c67SAntonio Huete Jimenez 531*3a184c67SAntonio Huete Jimenez #endif /* TNFTP_H */ 532