summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src
diff options
context:
space:
mode:
authorShehjar Tikoo <shehjart@gluster.com>2010-02-25 15:37:48 +0000
committerAnand V. Avati <avati@dev.gluster.com>2010-03-04 03:12:22 -0800
commit508075b079d731f7aa5fa36d7295fceeef2c3c1d (patch)
treef987692bd1f6e14a3d2b9bcd9652d1df0c5970af /libglusterfs/src
parent9fe5c6d391fd159fe27022ab806408831ed5b27f (diff)
core: New function: gf_dirent_for_namelen
Given the length of a name that needs to be stored in d_name, the new function allocates enough space for a gf_dirent_t and returns a ref. Signed-off-by: Shehjar Tikoo <shehjart@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 597 (miscellaneous fixes for xlators to work well with NFS xlator) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=597
Diffstat (limited to 'libglusterfs/src')
-rw-r--r--libglusterfs/src/gf-dirent.c19
-rw-r--r--libglusterfs/src/gf-dirent.h1
2 files changed, 20 insertions, 0 deletions
diff --git a/libglusterfs/src/gf-dirent.c b/libglusterfs/src/gf-dirent.c
index cd31464ff..0a3436949 100644
--- a/libglusterfs/src/gf-dirent.c
+++ b/libglusterfs/src/gf-dirent.c
@@ -49,6 +49,25 @@ gf_dirent_nb_size (gf_dirent_t *entries)
return (sizeof (struct gf_dirent_nb) + strlen (entries->d_name) + 1);
}
+gf_dirent_t *
+gf_dirent_for_namelen (int len)
+{
+ gf_dirent_t *gf_dirent = NULL;
+
+ /* TODO: use mem-pool */
+ gf_dirent = CALLOC (len, sizeof(char));
+ if (!gf_dirent)
+ return NULL;
+
+ INIT_LIST_HEAD (&gf_dirent->list);
+
+ gf_dirent->d_off = 0;
+ gf_dirent->d_ino = -1;
+ gf_dirent->d_type = 0;
+
+ return gf_dirent;
+}
+
gf_dirent_t *
gf_dirent_for_name (const char *name)
diff --git a/libglusterfs/src/gf-dirent.h b/libglusterfs/src/gf-dirent.h
index 2c10f8fbc..0e13c0325 100644
--- a/libglusterfs/src/gf-dirent.h
+++ b/libglusterfs/src/gf-dirent.h
@@ -57,5 +57,6 @@ gf_dirent_t *gf_dirent_for_name (const char *name);
void gf_dirent_free (gf_dirent_t *entries);
int gf_dirent_serialize (gf_dirent_t *entries, char *buf, size_t size);
int gf_dirent_unserialize (gf_dirent_t *entries, const char *buf, size_t size);
+gf_dirent_t * gf_dirent_for_namelen (int len);
#endif /* _GF_DIRENT_H */