// RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s #include #include #include #include #include #define STRING_OR_NULL(x) ((x) ? (x) : "null") void test1() { struct netent *ntp = getnetent(); printf("%s ", ntp->n_name); for (char **cp = ntp->n_aliases; *cp != NULL; cp++) printf("%s ", STRING_OR_NULL(*cp)); printf("%d ", ntp->n_addrtype); printf("%" PRIu32 "\n", ntp->n_net); endnetent(); } void test2() { struct netent *ntp = getnetbyname("loopback"); printf("%s ", ntp->n_name); for (char **cp = ntp->n_aliases; *cp != NULL; cp++) printf("%s ", STRING_OR_NULL(*cp)); printf("%d ", ntp->n_addrtype); printf("%" PRIu32 "\n", ntp->n_net); endnetent(); } void test3() { struct netent *ntp = getnetbyaddr(127, 2); printf("%s ", ntp->n_name); for (char **cp = ntp->n_aliases; *cp != NULL; cp++) printf("%s ", STRING_OR_NULL(*cp)); printf("%d ", ntp->n_addrtype); printf("%" PRIu32 "\n", ntp->n_net); endnetent(); } void test4() { setnetent(1); struct netent *ntp = getnetent(); printf("%s ", ntp->n_name); for (char **cp = ntp->n_aliases; *cp != NULL; cp++) printf("%s ", STRING_OR_NULL(*cp)); printf("%d ", ntp->n_addrtype); printf("%" PRIu32 "\n", ntp->n_net); endnetent(); } int main(void) { printf("netent\n"); test1(); test2(); test3(); test4(); // CHECK: netent // CHECK: loopback 2 127 // CHECK: loopback 2 127 // CHECK: loopback 2 127 // CHECK: loopback 2 127 return 0; }