brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · c88c6f9 Raw
90 lines · cpp
1// RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s2 3#include <netdb.h>4#include <stdio.h>5#include <stdlib.h>6 7#define STRING_OR_NULL(x) ((x) ? (x) : "null")8 9void test1() {10  struct protoent *ptp = getprotoent();11 12  printf("%s ", STRING_OR_NULL(ptp->p_name));13 14  for (char **cp = ptp->p_aliases; *cp != NULL; cp++)15    printf("%s ", STRING_OR_NULL(*cp));16 17  printf("%d\n", ptp->p_proto);18  endprotoent();19}20 21void test2() {22  struct protoent *ptp = getprotobyname("icmp");23 24  printf("%s ", STRING_OR_NULL(ptp->p_name));25 26  for (char **cp = ptp->p_aliases; *cp != NULL; cp++)27    printf("%s ", STRING_OR_NULL(*cp));28 29  printf("%d\n", ptp->p_proto);30  endprotoent();31}32 33void test3() {34  struct protoent *ptp = getprotobynumber(1);35 36  printf("%s ", STRING_OR_NULL(ptp->p_name));37 38  for (char **cp = ptp->p_aliases; *cp != NULL; cp++)39    printf("%s ", STRING_OR_NULL(*cp));40 41  printf("%d\n", ptp->p_proto);42  endprotoent();43}44 45void test4() {46  setprotoent(1);47  struct protoent *ptp = getprotobynumber(1);48 49  ptp = getprotobynumber(2);50 51  printf("%s ", STRING_OR_NULL(ptp->p_name));52 53  for (char **cp = ptp->p_aliases; *cp != NULL; cp++)54    printf("%s ", STRING_OR_NULL(*cp));55 56  printf("%d\n", ptp->p_proto);57  endprotoent();58}59 60void test5() {61  struct protoent *ptp = getprotobyname("ttp");62 63  printf("%s ", STRING_OR_NULL(ptp->p_name));64 65  for (char **cp = ptp->p_aliases; *cp != NULL; cp++)66    printf("%s ", STRING_OR_NULL(*cp));67 68  printf("%d\n", ptp->p_proto);69  endprotoent();70}71 72int main(void) {73  printf("protoent\n");74 75  test1();76  test2();77  test3();78  test4();79  test5();80 81  // CHECK: protoent82  // CHECK: hopopt HOPOPT 083  // CHECK: icmp ICMP 184  // CHECK: icmp ICMP 185  // CHECK: igmp IGMP 286  // CHECK: ttp TTP iptm IPTM 8487 88  return 0;89}90