1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
From e6d875ff19ba7f23e68a2131d9abe2de3f39d001 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Sat, 9 Oct 2010 20:34:08 +0000
Subject: [PATCH] Avoid posix_fallocate() so it works on uClibc
It seems like the possix_fallocate() does not need to be provided on
all implementations (see "Application Usage" in
http://www.opengroup.org/onlinepubs/009695399/functions/posix_fallocate.html )
I'm not too familiar with the code but it looks like _DConfEngine->shm
is a mmap to a file with 1 char size. If thats the case then something
like this would work:
---
engine/dconf-engine.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/engine/dconf-engine.c b/engine/dconf-engine.c
index cf57431..8eb3fa7 100644
--- a/engine/dconf-engine.c
+++ b/engine/dconf-engine.c
@@ -144,7 +144,11 @@ dconf_engine_setup_user (DConfEngine *engine)
if (fd >= 0)
{
- if (posix_fallocate (fd, 0, 1) == 0)
+ struct stat st;
+ int r = fstat(fd, &st);
+ if (r == 0 && st.st_size == 0)
+ r = write(fd, "", 1);
+ if (r == 0)
{
engine->shm = mmap (NULL, 1, PROT_READ, MAP_SHARED, fd, 0);
--
1.7.3.1
|