|
Lines 66-71
Link Here
|
| 66 |
TQMutex getXXbyYYmutex; |
66 |
TQMutex getXXbyYYmutex; |
| 67 |
#endif |
67 |
#endif |
| 68 |
|
68 |
|
|
|
69 |
#ifdef __OpenBSD__ |
| 70 |
#define USE_OPENBSD 1 |
| 71 |
#endif |
| 72 |
|
| 69 |
using namespace KNetwork; |
73 |
using namespace KNetwork; |
| 70 |
using namespace KNetwork::Internal; |
74 |
using namespace KNetwork::Internal; |
| 71 |
|
75 |
|
|
Lines 616-632
Link Here
|
| 616 |
pe = getprotobynumber(protonum); |
620 |
pe = getprotobynumber(protonum); |
| 617 |
|
621 |
|
| 618 |
#else |
622 |
#else |
|
|
623 |
# ifdef USE_OPENBSD // OpenBSD uses an HP/IBM/DEC API |
| 624 |
struct protoent protobuf; |
| 625 |
struct protoent_data pdata; |
| 626 |
::memset(&pdata, 0, sizeof pdata); |
| 627 |
|
| 628 |
if (getprotobynumber_r(protonum, &protobuf, &pdata) == 0) |
| 629 |
pe = &protobuf; |
| 630 |
else |
| 631 |
pe = 0; |
| 632 |
|
| 633 |
# else |
| 619 |
size_t buflen = 1024; |
634 |
size_t buflen = 1024; |
| 620 |
struct protoent protobuf; |
635 |
struct protoent protobuf; |
| 621 |
char *buf; |
636 |
char *buf; |
| 622 |
do |
637 |
do |
| 623 |
{ |
638 |
{ |
| 624 |
buf = new char[buflen]; |
639 |
buf = new char[buflen]; |
| 625 |
# ifdef USE_SOLARIS // Solaris uses a 4 argument getprotobynumber_r which returns struct *protoent or NULL |
640 |
# ifdef USE_SOLARIS // Solaris uses a 4 argument getprotobynumber_r which returns struct *protoent or NULL |
| 626 |
if ((pe = getprotobynumber_r(protonum, &protobuf, buf, buflen)) && (errno == ERANGE)) |
641 |
if ((pe = getprotobynumber_r(protonum, &protobuf, buf, buflen)) && (errno == ERANGE)) |
| 627 |
# else |
642 |
# else |
| 628 |
if (getprotobynumber_r(protonum, &protobuf, buf, buflen, &pe) == ERANGE) |
643 |
if (getprotobynumber_r(protonum, &protobuf, buf, buflen, &pe) == ERANGE) |
| 629 |
# endif |
644 |
# endif |
| 630 |
{ |
645 |
{ |
| 631 |
pe = 0L; |
646 |
pe = 0L; |
| 632 |
buflen += 1024; |
647 |
buflen += 1024; |
|
Lines 636-641
Link Here
|
| 636 |
break; |
651 |
break; |
| 637 |
} |
652 |
} |
| 638 |
while (pe == 0L); |
653 |
while (pe == 0L); |
|
|
654 |
# endif |
| 639 |
#endif |
655 |
#endif |
| 640 |
|
656 |
|
| 641 |
// Do common processing |
657 |
// Do common processing |
|
Lines 648-654
Link Here
|
| 648 |
} |
664 |
} |
| 649 |
|
665 |
|
| 650 |
#ifdef HAVE_GETPROTOBYNAME_R |
666 |
#ifdef HAVE_GETPROTOBYNAME_R |
|
|
667 |
# ifndef USE_OPENBSD |
| 651 |
delete [] buf; |
668 |
delete [] buf; |
|
|
669 |
# endif |
| 652 |
#endif |
670 |
#endif |
| 653 |
|
671 |
|
| 654 |
return lst; |
672 |
return lst; |
|
Lines 663-679
Link Here
|
| 663 |
pe = getprotobyname(protoname); |
681 |
pe = getprotobyname(protoname); |
| 664 |
|
682 |
|
| 665 |
#else |
683 |
#else |
|
|
684 |
# ifdef USE_OPENBSD // OpenBSD uses an HP/IBM/DEC API |
| 685 |
struct protoent protobuf; |
| 686 |
struct protoent_data pdata; |
| 687 |
::memset(&pdata, 0, sizeof pdata); |
| 688 |
|
| 689 |
if (getprotobyname_r(protoname, &protobuf, &pdata) == 0) |
| 690 |
pe = &protobuf; |
| 691 |
else |
| 692 |
pe = 0; |
| 693 |
|
| 694 |
# else |
| 666 |
size_t buflen = 1024; |
695 |
size_t buflen = 1024; |
| 667 |
struct protoent protobuf; |
696 |
struct protoent protobuf; |
| 668 |
char *buf; |
697 |
char *buf; |
| 669 |
do |
698 |
do |
| 670 |
{ |
699 |
{ |
| 671 |
buf = new char[buflen]; |
700 |
buf = new char[buflen]; |
| 672 |
# ifdef USE_SOLARIS // Solaris uses a 4 argument getprotobyname_r which returns struct *protoent or NULL |
701 |
# ifdef USE_SOLARIS // Solaris uses a 4 argument getprotobyname_r which returns struct *protoent or NULL |
| 673 |
if ((pe = getprotobyname_r(protoname, &protobuf, buf, buflen)) && (errno == ERANGE)) |
702 |
if ((pe = getprotobyname_r(protoname, &protobuf, buf, buflen)) && (errno == ERANGE)) |
| 674 |
# else |
703 |
# else |
| 675 |
if (getprotobyname_r(protoname, &protobuf, buf, buflen, &pe) == ERANGE) |
704 |
if (getprotobyname_r(protoname, &protobuf, buf, buflen, &pe) == ERANGE) |
| 676 |
# endif |
705 |
# endif |
| 677 |
{ |
706 |
{ |
| 678 |
pe = 0L; |
707 |
pe = 0L; |
| 679 |
buflen += 1024; |
708 |
buflen += 1024; |
|
Lines 683-688
Link Here
|
| 683 |
break; |
712 |
break; |
| 684 |
} |
713 |
} |
| 685 |
while (pe == 0L); |
714 |
while (pe == 0L); |
|
|
715 |
# endif |
| 686 |
#endif |
716 |
#endif |
| 687 |
|
717 |
|
| 688 |
// Do common processing |
718 |
// Do common processing |
|
Lines 695-701
Link Here
|
| 695 |
} |
725 |
} |
| 696 |
|
726 |
|
| 697 |
#ifdef HAVE_GETPROTOBYNAME_R |
727 |
#ifdef HAVE_GETPROTOBYNAME_R |
|
|
728 |
# ifndef USE_OPENBSD |
| 698 |
delete [] buf; |
729 |
delete [] buf; |
|
|
730 |
# endif |
| 699 |
#endif |
731 |
#endif |
| 700 |
|
732 |
|
| 701 |
return lst; |
733 |
return lst; |
|
Lines 710-726
Link Here
|
| 710 |
pe = getprotobyname(protoname); |
742 |
pe = getprotobyname(protoname); |
| 711 |
|
743 |
|
| 712 |
#else |
744 |
#else |
|
|
745 |
# ifdef USE_OPENBSD // OpenBSD uses an HP/IBM/DEC API |
| 746 |
struct protoent protobuf; |
| 747 |
struct protoent_data pdata; |
| 748 |
::memset(&pdata, 0, sizeof pdata); |
| 749 |
|
| 750 |
if (getprotobyname_r(protoname, &protobuf, &pdata) == 0) |
| 751 |
pe = &protobuf; |
| 752 |
else |
| 753 |
pe = 0; |
| 754 |
|
| 755 |
# else |
| 713 |
size_t buflen = 1024; |
756 |
size_t buflen = 1024; |
| 714 |
struct protoent protobuf; |
757 |
struct protoent protobuf; |
| 715 |
char *buf; |
758 |
char *buf; |
| 716 |
do |
759 |
do |
| 717 |
{ |
760 |
{ |
| 718 |
buf = new char[buflen]; |
761 |
buf = new char[buflen]; |
| 719 |
# ifdef USE_SOLARIS // Solaris uses a 4 argument getprotobyname_r which returns struct *protoent or NULL |
762 |
# ifdef USE_SOLARIS // Solaris uses a 4 argument getprotobyname_r which returns struct *protoent or NULL |
| 720 |
if ((pe = getprotobyname_r(protoname, &protobuf, buf, buflen)) && (errno == ERANGE)) |
763 |
if ((pe = getprotobyname_r(protoname, &protobuf, buf, buflen)) && (errno == ERANGE)) |
| 721 |
# else |
764 |
# else |
| 722 |
if (getprotobyname_r(protoname, &protobuf, buf, buflen, &pe) == ERANGE) |
765 |
if (getprotobyname_r(protoname, &protobuf, buf, buflen, &pe) == ERANGE) |
| 723 |
# endif |
766 |
# endif |
| 724 |
{ |
767 |
{ |
| 725 |
pe = 0L; |
768 |
pe = 0L; |
| 726 |
buflen += 1024; |
769 |
buflen += 1024; |
|
Lines 730-735
Link Here
|
| 730 |
break; |
773 |
break; |
| 731 |
} |
774 |
} |
| 732 |
while (pe == 0L); |
775 |
while (pe == 0L); |
|
|
776 |
# endif |
| 733 |
#endif |
777 |
#endif |
| 734 |
|
778 |
|
| 735 |
// Do common processing |
779 |
// Do common processing |
|
Lines 738-744
Link Here
|
| 738 |
protonum = pe->p_proto; |
782 |
protonum = pe->p_proto; |
| 739 |
|
783 |
|
| 740 |
#ifdef HAVE_GETPROTOBYNAME_R |
784 |
#ifdef HAVE_GETPROTOBYNAME_R |
|
|
785 |
# ifndef USE_OPENBSD |
| 741 |
delete [] buf; |
786 |
delete [] buf; |
|
|
787 |
# endif |
| 742 |
#endif |
788 |
#endif |
| 743 |
|
789 |
|
| 744 |
return protonum; |
790 |
return protonum; |
|
Lines 753-769
Link Here
|
| 753 |
se = getservbyname(servname, protoname); |
799 |
se = getservbyname(servname, protoname); |
| 754 |
|
800 |
|
| 755 |
#else |
801 |
#else |
|
|
802 |
# ifdef USE_OPENBSD // OpenBSD uses an HP/IBM/DEC API |
| 803 |
struct servent servbuf; |
| 804 |
struct servent_data sdata; |
| 805 |
::memset(&sdata, 0, sizeof sdata); |
| 806 |
if (getservbyname_r(servname, protoname, &servbuf, &sdata) == 0) |
| 807 |
se = &servbuf; |
| 808 |
else |
| 809 |
se = 0; |
| 810 |
|
| 811 |
# else |
| 756 |
size_t buflen = 1024; |
812 |
size_t buflen = 1024; |
| 757 |
struct servent servbuf; |
813 |
struct servent servbuf; |
| 758 |
char *buf; |
814 |
char *buf; |
| 759 |
do |
815 |
do |
| 760 |
{ |
816 |
{ |
| 761 |
buf = new char[buflen]; |
817 |
buf = new char[buflen]; |
| 762 |
# ifdef USE_SOLARIS // Solaris uses a 5 argument getservbyname_r which returns struct *servent or NULL |
818 |
# ifdef USE_SOLARIS // Solaris uses a 5 argument getservbyname_r which returns struct *servent or NULL |
| 763 |
if ((se = getservbyname_r(servname, protoname, &servbuf, buf, buflen)) && (errno == ERANGE)) |
819 |
if ((se = getservbyname_r(servname, protoname, &servbuf, buf, buflen)) && (errno == ERANGE)) |
| 764 |
# else |
820 |
# else |
| 765 |
if (getservbyname_r(servname, protoname, &servbuf, buf, buflen, &se) == ERANGE) |
821 |
if (getservbyname_r(servname, protoname, &servbuf, buf, buflen, &se) == ERANGE) |
| 766 |
# endif |
822 |
# endif |
| 767 |
{ |
823 |
{ |
| 768 |
se = 0L; |
824 |
se = 0L; |
| 769 |
buflen += 1024; |
825 |
buflen += 1024; |
|
Lines 773-778
Link Here
|
| 773 |
break; |
829 |
break; |
| 774 |
} |
830 |
} |
| 775 |
while (se == 0L); |
831 |
while (se == 0L); |
|
|
832 |
# endif |
| 776 |
#endif |
833 |
#endif |
| 777 |
|
834 |
|
| 778 |
// Do common processing |
835 |
// Do common processing |
|
Lines 781-787
Link Here
|
| 781 |
servport = ntohs(se->s_port); |
838 |
servport = ntohs(se->s_port); |
| 782 |
|
839 |
|
| 783 |
#ifdef HAVE_GETSERVBYNAME_R |
840 |
#ifdef HAVE_GETSERVBYNAME_R |
|
|
841 |
# ifndef USE_OPENBSD |
| 784 |
delete [] buf; |
842 |
delete [] buf; |
|
|
843 |
# endif |
| 785 |
#endif |
844 |
#endif |
| 786 |
|
845 |
|
| 787 |
return servport; |
846 |
return servport; |
|
Lines 796-812
Link Here
|
| 796 |
se = getservbyname(servname, protoname); |
855 |
se = getservbyname(servname, protoname); |
| 797 |
|
856 |
|
| 798 |
#else |
857 |
#else |
|
|
858 |
# ifdef USE_OPENBSD // OpenBSD uses an HP/IBM/DEC API |
| 859 |
struct servent servbuf; |
| 860 |
struct servent_data sdata; |
| 861 |
::memset(&sdata, 0, sizeof sdata); |
| 862 |
if (getservbyname_r(servname, protoname, &servbuf, &sdata) == 0) |
| 863 |
se = &servbuf; |
| 864 |
else |
| 865 |
se = 0; |
| 866 |
|
| 867 |
# else |
| 799 |
size_t buflen = 1024; |
868 |
size_t buflen = 1024; |
| 800 |
struct servent servbuf; |
869 |
struct servent servbuf; |
| 801 |
char *buf; |
870 |
char *buf; |
| 802 |
do |
871 |
do |
| 803 |
{ |
872 |
{ |
| 804 |
buf = new char[buflen]; |
873 |
buf = new char[buflen]; |
| 805 |
# ifdef USE_SOLARIS // Solaris uses a 5 argument getservbyname_r which returns struct *servent or NULL |
874 |
# ifdef USE_SOLARIS // Solaris uses a 5 argument getservbyname_r which returns struct *servent or NULL |
| 806 |
if ((se = getservbyname_r(servname, protoname, &servbuf, buf, buflen)) && (errno == ERANGE)) |
875 |
if ((se = getservbyname_r(servname, protoname, &servbuf, buf, buflen)) && (errno == ERANGE)) |
| 807 |
# else |
876 |
# else |
| 808 |
if (getservbyname_r(servname, protoname, &servbuf, buf, buflen, &se) == ERANGE) |
877 |
if (getservbyname_r(servname, protoname, &servbuf, buf, buflen, &se) == ERANGE) |
| 809 |
# endif |
878 |
# endif |
| 810 |
{ |
879 |
{ |
| 811 |
se = 0L; |
880 |
se = 0L; |
| 812 |
buflen += 1024; |
881 |
buflen += 1024; |
|
Lines 816-821
Link Here
|
| 816 |
break; |
885 |
break; |
| 817 |
} |
886 |
} |
| 818 |
while (se == 0L); |
887 |
while (se == 0L); |
|
|
888 |
# endif |
| 819 |
#endif |
889 |
#endif |
| 820 |
|
890 |
|
| 821 |
// Do common processing |
891 |
// Do common processing |
|
Lines 828-834
Link Here
|
| 828 |
} |
898 |
} |
| 829 |
|
899 |
|
| 830 |
#ifdef HAVE_GETSERVBYNAME_R |
900 |
#ifdef HAVE_GETSERVBYNAME_R |
|
|
901 |
# ifndef USE_OPENBSD |
| 831 |
delete [] buf; |
902 |
delete [] buf; |
|
|
903 |
# endif |
| 832 |
#endif |
904 |
#endif |
| 833 |
|
905 |
|
| 834 |
return lst; |
906 |
return lst; |
|
Lines 843-859
Link Here
|
| 843 |
se = getservbyport(port, protoname); |
915 |
se = getservbyport(port, protoname); |
| 844 |
|
916 |
|
| 845 |
#else |
917 |
#else |
|
|
918 |
# ifdef USE_OPENBSD // OpenBSD uses an HP/IBM/DEC API |
| 919 |
struct servent servbuf; |
| 920 |
struct servent_data sdata; |
| 921 |
::memset(&sdata, 0, sizeof sdata); |
| 922 |
if (getservbyport_r(port, protoname, &servbuf, &sdata) == 0) |
| 923 |
se = &servbuf; |
| 924 |
else |
| 925 |
se = 0; |
| 926 |
|
| 927 |
# else |
| 846 |
size_t buflen = 1024; |
928 |
size_t buflen = 1024; |
| 847 |
struct servent servbuf; |
929 |
struct servent servbuf; |
| 848 |
char *buf; |
930 |
char *buf; |
| 849 |
do |
931 |
do |
| 850 |
{ |
932 |
{ |
| 851 |
buf = new char[buflen]; |
933 |
buf = new char[buflen]; |
| 852 |
# ifdef USE_SOLARIS // Solaris uses a 5 argument getservbyport_r which returns struct *servent or NULL |
934 |
# ifdef USE_SOLARIS // Solaris uses a 5 argument getservbyport_r which returns struct *servent or NULL |
| 853 |
if ((se = getservbyport_r(port, protoname, &servbuf, buf, buflen)) && (errno == ERANGE)) |
935 |
if ((se = getservbyport_r(port, protoname, &servbuf, buf, buflen)) && (errno == ERANGE)) |
| 854 |
# else |
936 |
# else |
| 855 |
if (getservbyport_r(port, protoname, &servbuf, buf, buflen, &se) == ERANGE) |
937 |
if (getservbyport_r(port, protoname, &servbuf, buf, buflen, &se) == ERANGE) |
| 856 |
# endif |
938 |
# endif |
| 857 |
{ |
939 |
{ |
| 858 |
se = 0L; |
940 |
se = 0L; |
| 859 |
buflen += 1024; |
941 |
buflen += 1024; |
|
Lines 863-868
Link Here
|
| 863 |
break; |
945 |
break; |
| 864 |
} |
946 |
} |
| 865 |
while (se == 0L); |
947 |
while (se == 0L); |
|
|
948 |
# endif |
| 866 |
#endif |
949 |
#endif |
| 867 |
|
950 |
|
| 868 |
// Do common processing |
951 |
// Do common processing |
|
Lines 875-881
Link Here
|
| 875 |
} |
958 |
} |
| 876 |
|
959 |
|
| 877 |
#ifdef HAVE_GETSERVBYPORT_R |
960 |
#ifdef HAVE_GETSERVBYPORT_R |
|
|
961 |
# ifndef USE_OPENBSD |
| 878 |
delete [] buf; |
962 |
delete [] buf; |
|
|
963 |
# endif |
| 879 |
#endif |
964 |
#endif |
| 880 |
|
965 |
|
| 881 |
return lst; |
966 |
return lst; |