[lxc-devel] [PATCH 04/21] Support both getline and fgetln
Stéphane Graber
stgraber at ubuntu.com
Thu Jan 3 17:24:05 UTC 2013
Some libc implementations don't have the getline function but instead
have an equivalent fgetln function.
Add code to detect both and use whatever is available.
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
configure.ac | 3 +++
src/lxc/attach.c | 5 +++++
src/lxc/parse.c | 5 +++++
3 files changed, 13 insertions(+)
diff --git a/configure.ac b/configure.ac
index 9b4c4b2..960d610 100644
--- a/configure.ac
+++ b/configure.ac
@@ -215,6 +215,9 @@ AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>])
# Check for optional headers
AC_CHECK_HEADERS([sys/signalfd.h])
+# Check for some functions
+AC_CHECK_FUNCS([getline fgetln])
+
# Check for some standard binaries
AC_PROG_GCC_TRADITIONAL
AC_PROG_SED
diff --git a/src/lxc/attach.c b/src/lxc/attach.c
index ec0e083..9adb8f9 100644
--- a/src/lxc/attach.c
+++ b/src/lxc/attach.c
@@ -80,7 +80,12 @@ struct lxc_proc_context_info *lxc_proc_get_context_info(pid_t pid)
}
found = 0;
+
+ #ifdef HAVE_GETLINE
while (getline(&line, &line_bufsz, proc_file) != -1) {
+ #else
+ while ((line = fgetln(proc_file, &line_bufsz))) {
+ #endif
ret = sscanf(line, "CapBnd: %llx", &info->capability_mask);
if (ret != EOF && ret > 0) {
found = 1;
diff --git a/src/lxc/parse.c b/src/lxc/parse.c
index 10510c9..cc6f146 100644
--- a/src/lxc/parse.c
+++ b/src/lxc/parse.c
@@ -29,6 +29,7 @@
#include <dirent.h>
#include "parse.h"
+#include "config.h"
#include <lxc/log.h>
lxc_log_define(lxc_parse, lxc);
@@ -79,7 +80,11 @@ int lxc_file_for_each_line(const char *file, lxc_file_cb callback, void *data)
return -1;
}
+ #ifdef HAVE_GETLINE
while (getline(&line, &len, f) != -1) {
+ #else
+ while ((line = fgetln(f, &len))) {
+ #endif
err = callback(line, data);
if (err)
break;
--
1.8.0
More information about the lxc-devel
mailing list