LinuxQuestions.org
Share your knowledge at the LQ Wiki.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 03-25-2004, 03:00 PM   #1
Scrag
Member
 
Registered: Mar 2004
Location: Wisconsin
Distribution: Kali Linux
Posts: 131

Rep: Reputation: 15
I think I want to add C header files to my KDevelop project?


Im such a noob at this that im not sure if this is even the right question!! but anyway, I downloaded source code from Stevens "Unix network programming" book. I was hoping to use the soucecode examples in the book with KDevelop. But when I compile...ERRORS below happen... - - -Also below is souce m tryng to compile - - -
-------------------------------------------------ERRORS
gmake all-recursive
gmake[1]: Entering directory `/home/scrag/bla'
cd . && automake-1.4 --foreign ./Makefile
cd . && perl admin/am_edit Makefile.in
cd . \
&& CONFIG_FILES=Makefile CONFIG_HEADERS= /bin/sh ./config.status
fast creating Makefile
gmake[1]: Leaving directory `/home/scrag/bla'
gmake[1]: Entering directory `/home/scrag/bla'
Making all in bla
gmake[2]: Entering directory `/home/scrag/bla/bla'
cd .. && automake-1.4 --gnu bla/Makefile
cd .. && perl admin/am_edit bla/Makefile.in
cd .. \
&& CONFIG_FILES=bla/Makefile CONFIG_HEADERS= /bin/sh ./config.status
fast creating bla/Makefile
gmake[2]: Leaving directory `/home/scrag/bla/bla'
gmake[2]: Entering directory `/home/scrag/bla/bla'
gcc -DHAVE_CONFIG_H -I. -I. -I.. -O2 -O0 -g3 -Wall -c main.c
In file included from main.c:18:
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:227: error: redefinition of `struct sockaddr_storage'
In file included from main.c:18:
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:249:36: ../lib/addrinfo.h: No such file or directory
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:263: error: redefinition of `struct timespec'
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:363: error: conflicting types for `gai_strerror'
/usr/include/netdb.h:620: error: previous declaration of `gai_strerror'
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:367: error: conflicting types for `getnameinfo'
/usr/include/netdb.h:629: error: previous declaration of `getnameinfo'
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:371: error: conflicting types for `gethostname'
/usr/include/unistd.h:789: error: previous declaration of `gethostname'
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:391: error: conflicting types for `inet_aton'
/usr/include/arpa/inet.h:74: error: previous declaration of `inet_aton'
gmake[2]: Leaving directory `/home/scrag/bla/bla'
gmake[1]: Leaving directory `/home/scrag/bla'
gmake[2]: *** [main.o] Error 1
gmake[1]: *** [all-recursive] Error 1
gmake: *** [all-recursive-am] Error 2
*** failed ***
-----------------------------------------------SOURCE
#include "unp.h"

int
main(int argc, char **argv)
{
int listenfd, connfd;
pid_t childpid;
socklen_t clilen;
struct sockaddr_in cliaddr, servaddr;

listenfd = Socket(AF_INET, SOCK_STREAM, 0);

bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(SERV_PORT);

Bind(listenfd, (SA *) &servaddr, sizeof(servaddr));

Listen(listenfd, LISTENQ);

for ( ; ; ) {
clilen = sizeof(cliaddr);
connfd = Accept(listenfd, (SA *) &cliaddr, &clilen);

if ( (childpid = Fork()) == 0) { /* child process */
Close(listenfd); /* close listening socket */
str_echo(connfd); /* process the request */
exit(0);
}
Close(connfd); /* parent closes connected socket */
}
}
---------------------------------------------------------------------------
THANKS!!
 
Old 03-25-2004, 04:16 PM   #2
Mara
Moderator
 
Registered: Feb 2002
Location: Grenoble
Distribution: Debian
Posts: 9,696

Rep: Reputation: 232Reputation: 232Reputation: 232
Here's corrected file (I removed the reference to unp.h, as I don't know that file)
Code:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>

#define SERV_PORT 1234
#define LISTENQ 32

int
main(int argc, char **argv)
{
        int listenfd, connfd;
        pid_t childpid;
        socklen_t clilen;
        struct sockaddr_in cliaddr, servaddr;

        listenfd = socket(AF_INET, SOCK_STREAM, 0);

        memset(&servaddr,0, sizeof(servaddr));
        servaddr.sin_family = AF_INET;
        servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
        servaddr.sin_port = htons(SERV_PORT);

        bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr));

        listen(listenfd, LISTENQ);

        for ( ; ; ) {
                clilen = sizeof(cliaddr);
                connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &clilen);

                if ( (childpid = fork()) == 0) { /* child process */
                        close(listenfd); /* close listening socket */
//                      str_echo(connfd); /* process the request */
                        exit(0);
                }
                close(connfd); /* parent closes connected socket */
        }
}
What I did:
* added system includes
* replaced bzero with memset
* changed the function names (they start from lowercase letter to make it compile with system headers)
* commented out str_echo, because I don't have a reference to it.
* defined SERV_PORT and LISTENQ (they're probably in the header file I don't have).

If you cna provide the header we might be able to make the program compile with it.
 
Old 03-25-2004, 06:18 PM   #3
Scrag
Member
 
Registered: Mar 2004
Location: Wisconsin
Distribution: Kali Linux
Posts: 131

Original Poster
Rep: Reputation: 15
Hey thanks. I learned some stuff from from you're reply, but I'd prefer to get it to work with #include "unp.h", since theres like 100 examples in book and Im not smart enough yet to translate them like u did

Here's the unp.h ---------------------------------------------------------

/* include unph */
/* Our own header. Tabs are set for 4 spaces, not 8 */

#ifndef __unp_h
#define __unp_h

#include "../config.h" /* configuration options for current OS */
/* "../config.h" is generated by configure */

/* If anything changes in the following list of #includes, must change
acsite.m4 also, for configure's tests. */

#include <sys/types.h> /* basic system data types */
#include <sys/socket.h> /* basic socket definitions */
#if TIME_WITH_SYS_TIME
#include <sys/time.h> /* timeval{} for select() */
#include <time.h> /* timespec{} for pselect() */
#else
#if HAVE_SYS_TIME_H
#include <sys/time.h> /* includes <time.h> unsafely */
#else
#include <time.h> /* old system? */
#endif
#endif
#include <netinet/in.h> /* sockaddr_in{} and other Internet defns */
#include <arpa/inet.h> /* inet(3) functions */
#include <errno.h>
#include <fcntl.h> /* for nonblocking */
#include <netdb.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h> /* for S_xxx file mode constants */
#include <sys/uio.h> /* for iovec{} and readv/writev */
#include <unistd.h>
#include <sys/wait.h>
#include <sys/un.h> /* for Unix domain sockets */

#ifdef HAVE_SYS_SELECT_H
# include <sys/select.h> /* for convenience */
#endif

#ifdef HAVE_SYS_SYSCTL_H
#ifdef HAVE_SYS_PARAM_H
# include <sys/param.h> /* OpenBSD prereq for sysctl.h */
#endif
# include <sys/sysctl.h>
#endif

#ifdef HAVE_POLL_H
# include <poll.h> /* for convenience */
#endif

#ifdef HAVE_SYS_EVENT_H
# include <sys/event.h> /* for kqueue */
#endif

#ifdef HAVE_STRINGS_H
# include <strings.h> /* for convenience */
#endif

/* Three headers are normally needed for socket/file ioctl's:
* <sys/ioctl.h>, <sys/filio.h>, and <sys/sockio.h>.
*/
#ifdef HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
#endif
#ifdef HAVE_SYS_FILIO_H
# include <sys/filio.h>
#endif
#ifdef HAVE_SYS_SOCKIO_H
# include <sys/sockio.h>
#endif

#ifdef HAVE_PTHREAD_H
# include <pthread.h>
#endif

#ifdef HAVE_NET_IF_DL_H
# include <net/if_dl.h>
#endif

#ifdef HAVE_NETINET_SCTP_H
#include <netinet/sctp.h>
#endif

/* OSF/1 actually disables recv() and send() in <sys/socket.h> */
#ifdef __osf__
#undef recv
#undef send
#define recv(a,b,c,d) recvfrom(a,b,c,d,0,0)
#define send(a,b,c,d) sendto(a,b,c,d,0,0)
#endif

#ifndef INADDR_NONE
/* $$.Ic INADDR_NONE$$ */
#define INADDR_NONE 0xffffffff /* should have been in <netinet/in.h> */
#endif

#ifndef SHUT_RD /* these three POSIX names are new */
#define SHUT_RD 0 /* shutdown for reading */
#define SHUT_WR 1 /* shutdown for writing */
#define SHUT_RDWR 2 /* shutdown for reading and writing */
/* $$.Ic SHUT_RD$$ */
/* $$.Ic SHUT_WR$$ */
/* $$.Ic SHUT_RDWR$$ */
#endif

/* *INDENT-OFF* */
#ifndef INET_ADDRSTRLEN
/* $$.Ic INET_ADDRSTRLEN$$ */
#define INET_ADDRSTRLEN 16 /* "ddd.ddd.ddd.ddd\0"
1234567890123456 */
#endif

/* Define following even if IPv6 not supported, so we can always allocate
an adequately sized buffer without #ifdefs in the code. */
#ifndef INET6_ADDRSTRLEN
/* $$.Ic INET6_ADDRSTRLEN$$ */
#define INET6_ADDRSTRLEN 46 /* max size of IPv6 address string:
"xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx" or
"xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:ddd.ddd.ddd.ddd\0"
1234567890123456789012345678901234567890123456 */
#endif
/* *INDENT-ON* */

/* Define bzero() as a macro if it's not in standard C library. */
#ifndef HAVE_BZERO
#define bzero(ptr,n) memset(ptr, 0, n)
/* $$.If bzero$$ */
/* $$.If memset$$ */
#endif

/* Older resolvers do not have gethostbyname2() */
#ifndef HAVE_GETHOSTBYNAME2
#define gethostbyname2(host,family) gethostbyname((host))
#endif

/* The structure returned by recvfrom_flags() */
struct unp_in_pktinfo {
struct in_addr ipi_addr; /* dst IPv4 address */
int ipi_ifindex;/* received interface index */
};
/* $$.It unp_in_pktinfo$$ */
/* $$.Ib ipi_addr$$ */
/* $$.Ib ipi_ifindex$$ */

/* We need the newer CMSG_LEN() and CMSG_SPACE() macros, but few
implementations support them today. These two macros really need
an ALIGN() macro, but each implementation does this differently. */
#ifndef CMSG_LEN
/* $$.Im CMSG_LEN$$ */
#define CMSG_LEN(size) (sizeof(struct cmsghdr) + (size))
#endif
#ifndef CMSG_SPACE
/* $$.Im CMSG_SPACE$$ */
#define CMSG_SPACE(size) (sizeof(struct cmsghdr) + (size))
#endif

/* POSIX requires the SUN_LEN() macro, but not all implementations DefinE
it (yet). Note that this 4.4BSD macro works regardless whether there is
a length field or not. */
#ifndef SUN_LEN
/* $$.Im SUN_LEN$$ */
# define SUN_LEN(su) \
(sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
#endif

/* POSIX renames "Unix domain" as "local IPC."
Not all systems DefinE AF_LOCAL and PF_LOCAL (yet). */
#ifndef AF_LOCAL
#define AF_LOCAL AF_UNIX
#endif
#ifndef PF_LOCAL
#define PF_LOCAL PF_UNIX
#endif

/* POSIX requires that an #include of <poll.h> DefinE INFTIM, but many
systems still DefinE it in <sys/stropts.h>. We don't want to include
all the STREAMS stuff if it's not needed, so we just DefinE INFTIM here.
This is the standard value, but there's no guarantee it is -1. */
#ifndef INFTIM
#define INFTIM (-1) /* infinite poll timeout */
/* $$.Ic INFTIM$$ */
#ifdef HAVE_POLL_H
#define INFTIM_UNPH /* tell unpxti.h we defined it */
#endif
#endif

/* Following could be derived from SOMAXCONN in <sys/socket.h>, but many
kernels still #define it as 5, while actually supporting many more */
#define LISTENQ 1024 /* 2nd argument to listen() */

/* Miscellaneous constants */
#define MAXLINE 4096 /* max text line length */
#define BUFFSIZE 8192 /* buffer size for reads and writes */

/* Define some port number that can be used for our examples */
#define SERV_PORT 9877 /* TCP and UDP */
#define SERV_PORT_STR "9877" /* TCP and UDP */
#define UNIXSTR_PATH "/tmp/unix.str" /* Unix domain stream */
#define UNIXDG_PATH "/tmp/unix.dg" /* Unix domain datagram */
/* $$.ix[LISTENQ]~constant,~definition~of$$ */
/* $$.ix [MAXLINE]~constant,~definition~of$$ */
/* $$.ix [BUFFSIZE]~constant,~definition~of$$ */
/* $$.ix [SERV_PORT]~constant,~definition~of$$ */
/* $$.ix [UNIXSTR_PATH]~constant,~definition~of$$ */
/* $$.ix [UNIXDG_PATH]~constant,~definition~of$$ */

/* Following shortens all the typecasts of pointer arguments: */
#define SA struct sockaddr

#ifndef HAVE_STRUCT_SOCKADDR_STORAGE
/*
* RFC 3493: protocol-independent placeholder for socket addresses
*/
#define __SS_MAXSIZE 128
#define __SS_ALIGNSIZE (sizeof(int64_t))
#ifdef HAVE_SOCKADDR_SA_LEN
#define __SS_PAD1SIZE (__SS_ALIGNSIZE - sizeof(u_char) - sizeof(sa_family_t))
#else
#define __SS_PAD1SIZE (__SS_ALIGNSIZE - sizeof(sa_family_t))
#endif
#define __SS_PAD2SIZE (__SS_MAXSIZE - 2*__SS_ALIGNSIZE)

struct sockaddr_storage {
#ifdef HAVE_SOCKADDR_SA_LEN
u_char ss_len;
#endif
sa_family_t ss_family;
char __ss_pad1[__SS_PAD1SIZE];
int64_t __ss_align;
char __ss_pad2[__SS_PAD2SIZE];
};
#endif

#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
/* default file access permissions for new files */
#define DIR_MODE (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)
/* default permissions for new directories */

typedef void Sigfunc(int); /* for signal handlers */

#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) > (b) ? (a) : (b))

#ifndef HAVE_ADDRINFO_STRUCT
# include "../lib/addrinfo.h"
#endif

#ifndef HAVE_IF_NAMEINDEX_STRUCT
struct if_nameindex {
unsigned int if_index; /* 1, 2, ... */
char *if_name; /* null-terminated name: "le0", ... */
};
/* $$.It if_nameindex$$ */
/* $$.Ib if_index$$ */
/* $$.Ib if_name$$ */
#endif

#ifndef HAVE_TIMESPEC_STRUCT
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* and nanoseconds */
};
/* $$.It timespec$$ */
/* $$.Ib tv_sec$$ */
/* $$.Ib tv_nsec$$ */
#endif
/* end unph */

/* prototypes for our own library functions */
int connect_nonb(int, const SA *, socklen_t, int);
int connect_timeo(int, const SA *, socklen_t, int);
int daemon_init(const char *, int);
void daemon_inetd(const char *, int);
void dg_cli(FILE *, int, const SA *, socklen_t);
void dg_echo(int, SA *, socklen_t);
int family_to_level(int);
char *gf_time(void);
void heartbeat_cli(int, int, int);
void heartbeat_serv(int, int, int);
struct addrinfo *host_serv(const char *, const char *, int, int);
int inet_srcrt_add(char *);
u_char *inet_srcrt_init(int);
void inet_srcrt_print(u_char *, int);
void inet6_srcrt_print(void *);
char **my_addrs(int *);
int readable_timeo(int, int);
ssize_t readline(int, void *, size_t);
ssize_t readn(int, void *, size_t);
ssize_t read_fd(int, void *, size_t, int *);
ssize_t recvfrom_flags(int, void *, size_t, int *, SA *, socklen_t *,
struct unp_in_pktinfo *);
Sigfunc *signal_intr(int, Sigfunc *);
int sock_bind_wild(int, int);
int sock_cmp_addr(const SA *, const SA *, socklen_t);
int sock_cmp_port(const SA *, const SA *, socklen_t);
int sock_get_port(const SA *, socklen_t);
void sock_set_addr(SA *, socklen_t, const void *);
void sock_set_port(SA *, socklen_t, int);
void sock_set_wild(SA *, socklen_t);
char *sock_ntop(const SA *, socklen_t);
char *sock_ntop_host(const SA *, socklen_t);
int sockfd_to_family(int);
void str_echo(int);
void str_cli(FILE *, int);
int tcp_connect(const char *, const char *);
int tcp_listen(const char *, const char *, socklen_t *);
void tv_sub(struct timeval *, struct timeval *);
int udp_client(const char *, const char *, SA **, socklen_t *);
int udp_connect(const char *, const char *);
int udp_server(const char *, const char *, socklen_t *);
int writable_timeo(int, int);
ssize_t writen(int, const void *, size_t);
ssize_t write_fd(int, void *, size_t, int);

#ifdef MCAST
int mcast_leave(int, const SA *, socklen_t);
int mcast_join(int, const SA *, socklen_t, const char *, u_int);
int mcast_leave_source_group(int sockfd, const SA *src, socklen_t srclen,
const SA *grp, socklen_t grplen);
int mcast_join_source_group(int sockfd, const SA *src, socklen_t srclen,
const SA *grp, socklen_t grplen,
const char *ifname, u_int ifindex);
int mcast_block_source(int sockfd, const SA *src, socklen_t srclen,
const SA *grp, socklen_t grplen);
int mcast_unblock_source(int sockfd, const SA *src, socklen_t srclen,
const SA *grp, socklen_t grplen);
int mcast_get_if(int);
int mcast_get_loop(int);
int mcast_get_ttl(int);
int mcast_set_if(int, const char *, u_int);
int mcast_set_loop(int, int);
int mcast_set_ttl(int, int);

void Mcast_leave(int, const SA *, socklen_t);
void Mcast_join(int, const SA *, socklen_t, const char *, u_int);
void Mcast_leave_source_group(int sockfd, const SA *src, socklen_t srclen,
const SA *grp, socklen_t grplen);
void Mcast_join_source_group(int sockfd, const SA *src, socklen_t srclen,
const SA *grp, socklen_t grplen,
const char *ifname, u_int ifindex);
void Mcast_block_source(int sockfd, const SA *src, socklen_t srclen,
const SA *grp, socklen_t grplen);
void Mcast_unblock_source(int sockfd, const SA *src, socklen_t srclen,
const SA *grp, socklen_t grplen);
int Mcast_get_if(int);
int Mcast_get_loop(int);
int Mcast_get_ttl(int);
void Mcast_set_if(int, const char *, u_int);
void Mcast_set_loop(int, int);
void Mcast_set_ttl(int, int);
#endif

uint16_t in_cksum(uint16_t *, int);

#ifndef HAVE_GETADDRINFO_PROTO
int getaddrinfo(const char *, const char *, const struct addrinfo *,
struct addrinfo **);
void freeaddrinfo(struct addrinfo *);
char *gai_strerror(int);
#endif

#ifndef HAVE_GETNAMEINFO_PROTO
int getnameinfo(const SA *, socklen_t, char *, size_t, char *, size_t, int);
#endif

#ifndef HAVE_GETHOSTNAME_PROTO
int gethostname(char *, int);
#endif

#ifndef HAVE_HSTRERROR_PROTO
const char *hstrerror(int);
#endif

#ifndef HAVE_IF_NAMETOINDEX_PROTO
unsigned int if_nametoindex(const char *);
char *if_indextoname(unsigned int, char *);
void if_freenameindex(struct if_nameindex *);
struct if_nameindex *if_nameindex(void);
#endif

#ifndef HAVE_INET_PTON_PROTO
int inet_pton(int, const char *, void *);
const char *inet_ntop(int, const void *, char *, size_t);
#endif

#ifndef HAVE_INET_ATON_PROTO
int inet_aton(const char *, struct in_addr *);
#endif

#ifndef HAVE_PSELECT_PROTO
int pselect(int, fd_set *, fd_set *, fd_set *,
const struct timespec *, const sigset_t *);
#endif

#ifndef HAVE_SOCKATMARK_PROTO
int sockatmark(int);
#endif

#ifndef HAVE_SNPRINTF_PROTO
int snprintf(char *, size_t, const char *, ...);
#endif

/* prototypes for our own library wrapper functions */
void Connect_timeo(int, const SA *, socklen_t, int);
int Family_to_level(int);
struct addrinfo *Host_serv(const char *, const char *, int, int);
const char *Inet_ntop(int, const void *, char *, size_t);
void Inet_pton(int, const char *, void *);
char *If_indextoname(unsigned int, char *);
unsigned int If_nametoindex(const char *);
struct if_nameindex *If_nameindex(void);
char **My_addrs(int *);
ssize_t Read_fd(int, void *, size_t, int *);
int Readable_timeo(int, int);
ssize_t Recvfrom_flags(int, void *, size_t, int *, SA *, socklen_t *,
struct unp_in_pktinfo *);
Sigfunc *Signal(int, Sigfunc *);
Sigfunc *Signal_intr(int, Sigfunc *);
int Sock_bind_wild(int, int);
char *Sock_ntop(const SA *, socklen_t);
char *Sock_ntop_host(const SA *, socklen_t);
int Sockfd_to_family(int);
int Tcp_connect(const char *, const char *);
int Tcp_listen(const char *, const char *, socklen_t *);
int Udp_client(const char *, const char *, SA **, socklen_t *);
int Udp_connect(const char *, const char *);
int Udp_server(const char *, const char *, socklen_t *);
ssize_t Write_fd(int, void *, size_t, int);
int Writable_timeo(int, int);

/* prototypes for our Unix wrapper functions: see {Sec errors} */
void *Calloc(size_t, size_t);
void Close(int);
void Dup2(int, int);
int Fcntl(int, int, int);
void Gettimeofday(struct timeval *, void *);
int Ioctl(int, int, void *);
pid_t Fork(void);
void *Malloc(size_t);
int Mkstemp(char *);
void *Mmap(void *, size_t, int, int, int, off_t);
int Open(const char *, int, mode_t);
void Pipe(int *fds);
ssize_t Read(int, void *, size_t);
void Sigaddset(sigset_t *, int);
void Sigdelset(sigset_t *, int);
void Sigemptyset(sigset_t *);
void Sigfillset(sigset_t *);
int Sigismember(const sigset_t *, int);
void Sigpending(sigset_t *);
void Sigprocmask(int, const sigset_t *, sigset_t *);
char *Strdup(const char *);
long Sysconf(int);
void Sysctl(int *, u_int, void *, size_t *, void *, size_t);
void Unlink(const char *);
pid_t Wait(int *);
pid_t Waitpid(pid_t, int *, int);
void Write(int, void *, size_t);

/* prototypes for our stdio wrapper functions: see {Sec errors} */
void Fclose(FILE *);
FILE *Fdopen(int, const char *);
char *Fgets(char *, int, FILE *);
FILE *Fopen(const char *, const char *);
void Fputs(const char *, FILE *);

/* prototypes for our socket wrapper functions: see {Sec errors} */
int Accept(int, SA *, socklen_t *);
void Bind(int, const SA *, socklen_t);
void Connect(int, const SA *, socklen_t);
void Getpeername(int, SA *, socklen_t *);
void Getsockname(int, SA *, socklen_t *);
void Getsockopt(int, int, int, void *, socklen_t *);
#ifdef HAVE_INET6_RTH_INIT
int Inet6_rth_space(int, int);
void *Inet6_rth_init(void *, socklen_t, int, int);
void Inet6_rth_add(void *, const struct in6_addr *);
void Inet6_rth_reverse(const void *, void *);
int Inet6_rth_segments(const void *);
struct in6_addr *Inet6_rth_getaddr(const void *, int);
#endif
#ifdef HAVE_KQUEUE
int Kqueue(void);
int Kevent(int, const struct kevent *, int,
struct kevent *, int, const struct timespec *);
#endif
void Listen(int, int);
#ifdef HAVE_POLL
int Poll(struct pollfd *, unsigned long, int);
#endif
ssize_t Readline(int, void *, size_t);
ssize_t Readn(int, void *, size_t);
ssize_t Recv(int, void *, size_t, int);
ssize_t Recvfrom(int, void *, size_t, int, SA *, socklen_t *);
ssize_t Recvmsg(int, struct msghdr *, int);
int Select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
void Send(int, const void *, size_t, int);
void Sendto(int, const void *, size_t, int, const SA *, socklen_t);
void Sendmsg(int, const struct msghdr *, int);
void Setsockopt(int, int, int, const void *, socklen_t);
void Shutdown(int, int);
int Sockatmark(int);
int Socket(int, int, int);
void Socketpair(int, int, int, int *);
void Writen(int, void *, size_t);

void err_dump(const char *, ...);
void err_msg(const char *, ...);
void err_quit(const char *, ...);
void err_ret(const char *, ...);
void err_sys(const char *, ...);

#endif /* __unp_h */
 
Old 03-26-2004, 05:02 PM   #4
Mara
Moderator
 
Registered: Feb 2002
Location: Grenoble
Distribution: Debian
Posts: 9,696

Rep: Reputation: 232Reputation: 232Reputation: 232
Simplier than posting modified version..I just show the changes needed.

1
Code:
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:227: error: redefinition of `struct sockaddr_storage'
In file included from main.c:18:
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:249:36: ../lib/addrinfo.h: No such file or directory
Why:
Code:
#ifndef HAVE_ADDRINFO_STRUCT
# include "../lib/addrinfo.h"
#endif
If you can find 'addrinfo.h' file in your system, modify the path to point to the file. If not, you may try to comment out the lines.

2
Code:
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:263: error: redefinition of `struct timespec'
Why:
Code:
#ifndef HAVE_TIMESPEC_STRUCT
struct timespec {
    time_t tv_sec; /* seconds */
    long tv_nsec; /* and nanoseconds */
};
/* $$.It timespec$$ */
/* $$.Ib tv_sec$$ */
/* $$.Ib tv_nsec$$ */
#endif
Comment it out. You have the structure (a bit different, but should work).

3
Code:
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:363: error: conflicting types for `gai_strerror'
/usr/include/netdb.h:620: error: previous declaration of `gai_strerror'
Why:
Code:
#ifndef HAVE_GETADDRINFO_PROTO
int getaddrinfo(const char *, const char *, const struct addrinfo *,
struct addrinfo **);
void freeaddrinfo(struct addrinfo *);
char *gai_strerror(int);
#endif
Comment it out. You have the functions.

4
Code:
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:367: error: conflicting types for `getnameinfo'
/usr/include/netdb.h:629: error: previous declaration of `getnameinfo'
Why:
Code:
#ifndef HAVE_GETNAMEINFO_PROTO
int getnameinfo(const SA *, socklen_t, char *, size_t, char *, size_t, int);
#endif
Comment it out.

5
Code:
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:371: error: conflicting types for `gethostname'
/usr/include/unistd.h:789: error: previous declaration of `gethostname'
Why:
Code:
#ifndef HAVE_GETHOSTNAME_PROTO
int gethostname(char *, int);
#endif
Comment it out. You have similar, with different types, but should work.

6
Code:
/usr/lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/include/unp.h:391: error: conflicting types for `inet_aton'
/usr/include/arpa/inet.h:74: error: previous declaration of `inet_aton'
Why:
Code:
#ifndef HAVE_GETHOSTNAME_PROTO
int gethostname(char *, int);
#endif
Comment it out, you have it.

That's for now, for the code you tried to compile.

The main problem is that structures/functions that you have in the system are redefined in the code (sometimes with not the same parameters, but always very similar). It makes the compiler complain, because it doesn't know which ones to use...

Last edited by Mara; 03-26-2004 at 05:05 PM.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
KDevelop project - Files to put into version control? skylark Linux - Software 1 10-21-2005 09:01 PM
Add existing C++ files to Kdevelop project Siavash Programming 2 04-08-2005 03:59 PM
Add existing C++ files to Kdevelop project Siavash Linux - Software 1 04-08-2005 02:31 PM
c header files in linux in place of header files in windows? harun_acs Programming 1 03-17-2004 02:24 AM
Cannot see Open GL project in KDevelop project wizard SparceMatrix Programming 2 08-07-2002 11:14 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 03:27 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration