Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unix network programming book code has bugs due to old OS, how to solve this or where to get new code ?

I am trying to download and run the c code on Linux for

UNIX Network Programming, Volume 1, Second Edition: Networking APIs: Sockets and XTI, Prentice Hall, 1998, ISBN 0-13-490012-X. It is by W. Stevens Richard

 http://kohala.com/start/unpv12e/unpv12e.tar.gz

But, when I build the code, I got error:

  gcc -g -O2 -D_REENTRANT -Wall   -c -o connect_nonb.o connect_nonb.c
  In file included from connect_nonb.c:1:
   unp.h:114: error: redefinition of âstruct in_pktinfoâ
   make: *** [connect_nonb.o] Error 1

I commented out struct in_pktinfo. Then I got new errors:

   gcc -g -O2 -D_REENTRANT -Wall   -c -o in_cksum.o in_cksum.c
   gcc -g -O2 -D_REENTRANT -Wall   -c -o inet_ntop.o inet_ntop.c
   inet_ntop.c: In function âinet_ntopâ:
   inet_ntop.c:61: error: argument âsizeâ doesnât match prototype
   /usr/include/arpa/inet.h:67: error: prototype declaration
   make: *** [inet_ntop.o] Error 1

I do not want to debug for the whole 575 files one by one.

Where can I get new code without these errors ? the new version book has bug-free code ?

The old code is only for old OS.

Thanks

like image 203
user1002288 Avatar asked Oct 30 '11 21:10

user1002288


1 Answers

well, The Author Richard Stevens passed away in 1999 and the Book is still the a very good reference. You can't say this about a lot of more than 10 year old technical references.

I just fetched the source from http://www.unpbook.com/unpv13e.tar.gz and followed the readme, which basically meant to run ./configure and call make in the directories

/lib
/libfree
/intro

I fixed a single place (libfree/inet_ntop.c:60 and changed size to socklen ) and it compiled on my current Ubuntu. I didn't run it, but I trust that at least the most of it will work.

Richard Stevens books are still outstanding and worth the small effort it needs to keep his sources running.

like image 67
Jörg Beyer Avatar answered Oct 06 '22 00:10

Jörg Beyer