dovecot-2.0-sslstream: Added t_readlink().

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 13 02:57:31 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0-sslstream/rev/749e7f1df078
changeset: 10572: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