1 // RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s
2
3 #include <inttypes.h>
4 #include <netdb.h>
5 #include <stdint.h>
6 #include <stdio.h>
7 #include <stdlib.h>
8
9 #define STRING_OR_NULL(x) ((x) ? (x) : "null")
10
test1()11 void test1() {
12 struct netent *ntp = getnetent();
13
14 printf("%s ", ntp->n_name);
15
16 for (char **cp = ntp->n_aliases; *cp != NULL; cp++)
17 printf("%s ", STRING_OR_NULL(*cp));
18
19 printf("%d ", ntp->n_addrtype);
20 printf("%" PRIu32 "\n", ntp->n_net);
21
22 endnetent();
23 }
24
test2()25 void test2() {
26 struct netent *ntp = getnetbyname("loopback");
27
28 printf("%s ", ntp->n_name);
29
30 for (char **cp = ntp->n_aliases; *cp != NULL; cp++)
31 printf("%s ", STRING_OR_NULL(*cp));
32
33 printf("%d ", ntp->n_addrtype);
34 printf("%" PRIu32 "\n", ntp->n_net);
35
36 endnetent();
37 }
38
test3()39 void test3() {
40 struct netent *ntp = getnetbyaddr(127, 2);
41
42 printf("%s ", ntp->n_name);
43
44 for (char **cp = ntp->n_aliases; *cp != NULL; cp++)
45 printf("%s ", STRING_OR_NULL(*cp));
46
47 printf("%d ", ntp->n_addrtype);
48 printf("%" PRIu32 "\n", ntp->n_net);
49
50 endnetent();
51 }
52
test4()53 void test4() {
54 setnetent(1);
55
56 struct netent *ntp = getnetent();
57
58 printf("%s ", ntp->n_name);
59
60 for (char **cp = ntp->n_aliases; *cp != NULL; cp++)
61 printf("%s ", STRING_OR_NULL(*cp));
62
63 printf("%d ", ntp->n_addrtype);
64 printf("%" PRIu32 "\n", ntp->n_net);
65
66 endnetent();
67 }
68
main(void)69 int main(void) {
70 printf("netent\n");
71
72 test1();
73 test2();
74 test3();
75 test4();
76
77 // CHECK: netent
78 // CHECK: loopback 2 127
79 // CHECK: loopback 2 127
80 // CHECK: loopback 2 127
81 // CHECK: loopback 2 127
82
83 return 0;
84 }
85