From 68577918437e2ccfd6bd2836892f59ef42994963 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 28 Sep 2011 10:01:13 -0400 Subject: [PATCH] Optimize libnss_files initialization --- ChangeLog | 5 +++++ nss/nss_files/files-init.c | 53 ++++++++++++++++------------------------------ 2 files changed, 23 insertions(+), 35 deletions(-) diff --git a/ChangeLog b/ChangeLog index d50b768..a8ccdac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-09-28 Ulrich Drepper + + * nss/nss_files/files-init.c (_nss_files_init): Use static + initialization for all the *_traced_file variables. + 2011-09-28 Andreas Schwab * sysdeps/powerpc/fpu/libm-test-ulps: Adjust ULPs for jn tests. diff --git a/nss/nss_files/files-init.c b/nss/nss_files/files-init.c index cc6822d..b33cc3e 100644 --- a/nss/nss_files/files-init.c +++ b/nss/nss_files/files-init.c @@ -20,53 +20,36 @@ #include -static union -{ - struct traced_file file; - char buf[sizeof (struct traced_file) + sizeof ("/etc/passwd")]; -} pwd_traced_file; - -static union -{ - struct traced_file file; - char buf[sizeof (struct traced_file) + sizeof ("/etc/group")]; -} grp_traced_file; - -static union -{ - struct traced_file file; - char buf[sizeof (struct traced_file) + sizeof ("/etc/hosts")]; -} hst_traced_file; - -static union -{ - struct traced_file file; - char buf[sizeof (struct traced_file) + sizeof ("/etc/resolv.conf")]; -} resolv_traced_file; - -static union -{ - struct traced_file file; - char buf[sizeof (struct traced_file) + sizeof ("/etc/services")]; -} serv_traced_file; +#define TF(id, filename, ...) \ +static union \ +{ \ + struct traced_file file; \ + char buf[sizeof (struct traced_file) + sizeof (filename)]; \ +} id##_traced_file = \ + { \ + .file = \ + { \ + .fname = filename, ## __VA_ARGS__ \ + } \ + } + +TF (pwd, "/etc/passwd"); +TF (grp, "/etc/group"); +TF (hst, "/etc/hosts"); +TF (resolv, "/etc/resolv.conf", .call_res_init = 1); +TF (serv, "/etc/services"); void _nss_files_init (void (*cb) (size_t, struct traced_file *)) { - strcpy (pwd_traced_file.file.fname, "/etc/passwd"); cb (pwddb, &pwd_traced_file.file); - strcpy (grp_traced_file.file.fname, "/etc/group"); cb (grpdb, &grp_traced_file.file); - strcpy (hst_traced_file.file.fname, "/etc/hosts"); cb (hstdb, &hst_traced_file.file); - resolv_traced_file.file.call_res_init = 1; - strcpy (resolv_traced_file.file.fname, "/etc/resolv.conf"); cb (hstdb, &resolv_traced_file.file); - strcpy (serv_traced_file.file.fname, "/etc/services"); cb (servdb, &serv_traced_file.file); } -- 2.7.4