diff options
author | Karel Zak | 2012-12-23 22:44:05 +0100 |
---|---|---|
committer | Karel Zak | 2012-12-23 22:44:05 +0100 |
commit | 4226f910d45455856ee5b9855d1d9ce39b513aad (patch) | |
tree | 56183c14e47b5a9b3def30e86fde53e1c2d83d6a | |
parent | sulogin: remove consoles.c from libcommon (diff) | |
download | kernel-qcow2-util-linux-4226f910d45455856ee5b9855d1d9ce39b513aad.tar.gz kernel-qcow2-util-linux-4226f910d45455856ee5b9855d1d9ce39b513aad.tar.xz kernel-qcow2-util-linux-4226f910d45455856ee5b9855d1d9ce39b513aad.zip |
sulogin: don't use {de,con}structor attributes
We're not Russian roulette players, so don't use such ugly things at all..
Reported-by: Dave Reisner <d@falconindy.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r-- | login-utils/sulogin-consoles.c | 8 | ||||
-rw-r--r-- | login-utils/sulogin-consoles.h | 7 | ||||
-rw-r--r-- | login-utils/sulogin.c | 4 |
3 files changed, 17 insertions, 2 deletions
diff --git a/login-utils/sulogin-consoles.c b/login-utils/sulogin-consoles.c index 3729be448..e1d36711c 100644 --- a/login-utils/sulogin-consoles.c +++ b/login-utils/sulogin-consoles.c @@ -98,7 +98,6 @@ static uint32_t emergency_flags; # define MNT_PROCFS 0x0001 # define MNT_DEVTMPFS 0x0002 -static __attribute__((__destructor__)) void emergency_do_umounts(void) { if (emergency_flags & MNT_DEVTMPFS) @@ -107,7 +106,6 @@ void emergency_do_umounts(void) umount2("/proc", MNT_DETACH); } -static __attribute__((__constructor__)) void emergency_do_mounts(void) { struct stat rt, xt; @@ -143,6 +141,12 @@ void emergency_do_mounts(void) } } } + +#else /* !USE_SULOGIN_EMERGENCY_MOUNT */ + +void emergency_do_umounts(void) { } +void emergency_do_mounts(void) { } + #endif /* USE_SULOGIN_EMERGENCY_MOUNT */ /* diff --git a/login-utils/sulogin-consoles.h b/login-utils/sulogin-consoles.h index c713bad1d..c2f95eac7 100644 --- a/login-utils/sulogin-consoles.h +++ b/login-utils/sulogin-consoles.h @@ -21,6 +21,8 @@ * * Author: Werner Fink <werner@suse.de> */ +#ifndef UTIL_LINUX_SULOGIN_CONSOLES_H +#define UTIL_LINUX_SULOGIN_CONSOLES_H #include <sys/types.h> #include <stdint.h> @@ -45,3 +47,8 @@ struct console { extern int detect_consoles(const char *device, int fallback, struct list_head *consoles); + +extern void emergency_do_umounts(void); +extern void emergency_do_mounts(void); + +#endif /* UTIL_LINUX_SULOGIN_CONSOLES_H */ diff --git a/login-utils/sulogin.c b/login-utils/sulogin.c index 1a47e740f..02fa8db57 100644 --- a/login-utils/sulogin.c +++ b/login-utils/sulogin.c @@ -834,6 +834,10 @@ int main(int argc, char **argv) mask_signal(SIGINT, SIG_IGN, &saved_sigint); mask_signal(SIGHUP, SIG_IGN, &saved_sighup); + + emergency_do_mounts(); + atexit( emergency_do_umounts ); + /* * See if we need to open an other tty device. */ |