// RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s #include #include #include #define STRING_OR_NULL(x) ((x) ? (x) : "null") void test1() { struct protoent *ptp = getprotoent(); printf("%s ", STRING_OR_NULL(ptp->p_name)); for (char **cp = ptp->p_aliases; *cp != NULL; cp++) printf("%s ", STRING_OR_NULL(*cp)); printf("%d\n", ptp->p_proto); endprotoent(); } void test2() { struct protoent *ptp = getprotobyname("icmp"); printf("%s ", STRING_OR_NULL(ptp->p_name)); for (char **cp = ptp->p_aliases; *cp != NULL; cp++) printf("%s ", STRING_OR_NULL(*cp)); printf("%d\n", ptp->p_proto); endprotoent(); } void test3() { struct protoent *ptp = getprotobynumber(1); printf("%s ", STRING_OR_NULL(ptp->p_name)); for (char **cp = ptp->p_aliases; *cp != NULL; cp++) printf("%s ", STRING_OR_NULL(*cp)); printf("%d\n", ptp->p_proto); endprotoent(); } void test4() { setprotoent(1); struct protoent *ptp = getprotobynumber(1); ptp = getprotobynumber(2); printf("%s ", STRING_OR_NULL(ptp->p_name)); for (char **cp = ptp->p_aliases; *cp != NULL; cp++) printf("%s ", STRING_OR_NULL(*cp)); printf("%d\n", ptp->p_proto); endprotoent(); } void test5() { struct protoent *ptp = getprotobyname("ttp"); printf("%s ", STRING_OR_NULL(ptp->p_name)); for (char **cp = ptp->p_aliases; *cp != NULL; cp++) printf("%s ", STRING_OR_NULL(*cp)); printf("%d\n", ptp->p_proto); endprotoent(); } int main(void) { printf("protoent\n"); test1(); test2(); test3(); test4(); test5(); // CHECK: protoent // CHECK: hopopt HOPOPT 0 // CHECK: icmp ICMP 1 // CHECK: icmp ICMP 1 // CHECK: igmp IGMP 2 // CHECK: ttp TTP iptm IPTM 84 return 0; }