summaryrefslogtreecommitdiff
path: root/packages/util-linux-ng/util-linux-ng-2.14/util-linux-ng-replace-siginterrupt.patch
blob: 4b5eb73760819418b22d94d739e6f6ad0f4e6e0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Index: util-linux-ng-2.14/login-utils/login.c
===================================================================
--- util-linux-ng-2.14.orig/login-utils/login.c	2008-05-28 16:01:02.000000000 -0700
+++ util-linux-ng-2.14/login-utils/login.c	2009-03-04 18:31:42.000000000 -0800
@@ -358,6 +358,7 @@
     char *childArgv[10];
     char *buff;
     int childArgc = 0;
+    struct sigaction act;
 #ifdef HAVE_SECURITY_PAM_MISC_H
     int retcode;
     pam_handle_t *pamh = NULL;
@@ -373,7 +374,9 @@
     pid = getpid();
 
     signal(SIGALRM, timedout);
-    siginterrupt(SIGALRM,1);           /* we have to interrupt syscalls like ioclt() */
+    (void) sigaction(SIGALRM, NULL, &act);
+    act.sa_flags &= ~SA_RESTART;
+    sigaction(SIGALRM, &act, NULL);
     alarm((unsigned int)timeout);
     signal(SIGQUIT, SIG_IGN);
     signal(SIGINT, SIG_IGN);