dovecot-2.0: Added t_readlink().
dovecot at dovecot.org
dovecot at dovecot.org
Sat Jan 23 12:37:40 EET 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/749e7f1df078
changeset: 10571:749e7f1df078
user: Timo Sirainen <tss at iki.fi>
date: Sat Jan 23 12:37:14 2010 +0200
description:
Added t_readlink().
diffstat:
2 files changed, 23 insertions(+)
src/lib/abspath.c | 21 +++++++++++++++++++++
src/lib/abspath.h | 2 ++
diffs (39 lines):
diff -r cd29a6801e75 -r 749e7f1df078 src/lib/abspath.c
--- a/src/lib/abspath.c Fri Jan 22 18:19:41 2010 +0200
+++ b/src/lib/abspath.c Sat Jan 23 12:37:14 2010 +0200
@@ -42,3 +42,24 @@ int t_get_current_dir(const char **dir_r
*dir_r = dir;
return 0;
}
+
+int t_readlink(const char *path, const char **dest_r)
+{
+ /* @UNSAFE */
+ ssize_t ret;
+ char *dest;
+ size_t size = 128;
+
+ dest = t_buffer_get(size);
+ while ((ret = readlink(path, dest, size)) >= (ssize_t)size) {
+ size = nearest_power(size+1);
+ dest = t_buffer_get(size);
+ }
+ if (ret < 0)
+ return -1;
+
+ dest[ret] = '\0';
+ t_buffer_alloc(ret + 1);
+ *dest_r = dest;
+ return 0;
+}
diff -r cd29a6801e75 -r 749e7f1df078 src/lib/abspath.h
--- a/src/lib/abspath.h Fri Jan 22 18:19:41 2010 +0200
+++ b/src/lib/abspath.h Sat Jan 23 12:37:14 2010 +0200
@@ -9,5 +9,7 @@ const char *t_abspath_to(const char *pat
/* Returns current directory, allocated from data stack. */
int t_get_current_dir(const char **dir_r);
+/* Returns symlink destination, allocated from data stack. */
+int t_readlink(const char *path, const char **dest_r);
#endif
More information about the dovecot-cvs
mailing list