[PATCH xserver 4/4] xfree86/parser: simplify #ifdef ladder
Emil Velikov
emil.l.velikov at gmail.com
Sun Apr 17 19:30:46 UTC 2016
Rather than 'hacking' around symbol names and providing macros such as
'Local' just fold things and make the code more readable.
Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
---
If people prefer we can split out the different implementations
(HAS_SAVED_IDS_AND_SETEUID vs not) to separate functions and call if
from xf86writeConfigFile(). I don't mind either way.
-Emil
hw/xfree86/parser/write.c | 31 +++++++++----------------------
1 file changed, 9 insertions(+), 22 deletions(-)
diff --git a/hw/xfree86/parser/write.c b/hw/xfree86/parser/write.c
index 8792783..9a24dd6 100644
--- a/hw/xfree86/parser/write.c
+++ b/hw/xfree86/parser/write.c
@@ -73,14 +73,7 @@
#define HAS_NO_UIDS
#endif
-#ifdef HAS_NO_UIDS
-#define doWriteConfigFile xf86writeConfigFile
-#define Local /**/
-#else
-#define Local static
-#endif
-
-Local int
+static int
doWriteConfigFile(const char *filename, XF86ConfigPtr cptr)
{
FILE *cf;
@@ -134,24 +127,19 @@ doWriteConfigFile(const char *filename, XF86ConfigPtr cptr)
return 1;
}
-#ifndef HAS_NO_UIDS
-
int
xf86writeConfigFile(const char *filename, XF86ConfigPtr cptr)
{
+#ifndef HAS_NO_UIDS
int ret;
-#if !defined(HAS_SAVED_IDS_AND_SETEUID)
- int pid, p;
- int status;
- void (*csig) (int);
-#else
- int ruid, euid;
-#endif
-
if (getuid() != geteuid()) {
#if !defined(HAS_SAVED_IDS_AND_SETEUID)
+ int pid, p;
+ int status;
+ void (*csig) (int);
+
/* Need to fork to change ruid without loosing euid */
csig = signal(SIGCHLD, SIG_DFL);
switch ((pid = fork())) {
@@ -178,6 +166,7 @@ xf86writeConfigFile(const char *filename, XF86ConfigPtr cptr)
return 0;
#else /* HAS_SAVED_IDS_AND_SETEUID */
+ int ruid, euid;
ruid = getuid();
euid = geteuid();
@@ -198,9 +187,7 @@ xf86writeConfigFile(const char *filename, XF86ConfigPtr cptr)
#endif /* HAS_SAVED_IDS_AND_SETEUID */
}
- else {
+ else
+#endif /* !HAS_NO_UIDS */
return doWriteConfigFile(filename, cptr);
- }
}
-
-#endif /* !HAS_NO_UIDS */
--
2.8.0
More information about the xorg-devel
mailing list