diff options
author | Jeff Layton <jlayton@redhat.com> | 2007-09-27 06:53:53 -0400 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2007-09-28 11:39:56 +1000 |
commit | 4c337e2131123c339bc4921779b57b69b77be2fd (patch) | |
tree | 2aa76fb9609a81e3945bc8cd2cf21c209e5054b0 /support/export/export.c | |
parent | 1cecd88106230fc9a8c3527bcdf4195150e9ad64 (diff) | |
download | nfs-utils-4c337e2131123c339bc4921779b57b69b77be2fd.tar.gz nfs-utils-4c337e2131123c339bc4921779b57b69b77be2fd.tar.xz nfs-utils-4c337e2131123c339bc4921779b57b69b77be2fd.zip |
rpc.mountd: make exportent->e_hostname a dynamically-allocated string
This makes the e_hostname field of the exportent into a pointer to a
dynamically allocated string. This is necessary since this is field is
often filled out from the m_hostname. This too adds a few
micro-optimizations as we can avoid copying the string in some places
and simply pass a pointer to the original string instead.
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Acked-by: Steve Dickson <steved@redhat.com>
Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'support/export/export.c')
-rw-r--r-- | support/export/export.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/support/export/export.c b/support/export/export.c index 74e1d1b..93c58b6 100644 --- a/support/export/export.c +++ b/support/export/export.c @@ -85,6 +85,8 @@ export_init(nfs_export *exp, nfs_client *clp, struct exportent *nep) struct exportent *e = &exp->m_export; dupexportent(e, nep); + if (nep->e_hostname) + e->e_hostname = xstrdup(nep->e_hostname); exp->m_exported = 0; exp->m_xtabent = 0; @@ -109,6 +111,8 @@ export_dup(nfs_export *exp, struct hostent *hp) new = (nfs_export *) xmalloc(sizeof(*new)); memcpy(new, exp, sizeof(*new)); dupexportent(&new->m_export, &exp->m_export); + if (exp->m_export.e_hostname) + new->m_export.e_hostname = xstrdup(exp->m_export.e_hostname); clp = client_dup(exp->m_client, hp); clp->m_count++; new->m_client = clp; @@ -244,6 +248,7 @@ export_freeall(void) free(exp->m_export.e_mountpoint); if (exp->m_export.e_fslocdata) xfree(exp->m_export.e_fslocdata); + xfree(exp->m_export.e_hostname); xfree(exp); } exportlist[i] = NULL; |