OpenCoverage

suspend.def

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/bash/src/builtins/suspend.def
Source codeSwitch to Preprocessed file
LineSourceCount
1This file is suspend.def, from which is created suspend.c.-
2It implements the builtin "suspend" in Bash.-
3-
4Copyright (C) 1987-2015 Free Software Foundation, Inc.-
5-
6This file is part of GNU Bash, the Bourne Again SHell.-
7-
8Bash is free software: you can redistribute it and/or modify-
9it under the terms of the GNU General Public License as published by-
10the Free Software Foundation, either version 3 of the License, or-
11(at your option) any later version.-
12-
13Bash is distributed in the hope that it will be useful,-
14but WITHOUT ANY WARRANTY; without even the implied warranty of-
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
16GNU General Public License for more details.-
17-
18You should have received a copy of the GNU General Public License-
19along with Bash. If not, see <http://www.gnu.org/licenses/>.-
20-
21$PRODUCES suspend.c-
22-
23$BUILTIN suspend-
24$DEPENDS_ON JOB_CONTROL-
25$FUNCTION suspend_builtin-
26$SHORT_DOC suspend [-f]-
27Suspend shell execution.-
28-
29Suspend the execution of this shell until it receives a SIGCONT signal.-
30Unless forced, login shells cannot be suspended.-
31-
32Options:-
33 -f force the suspend, even if the shell is a login shell-
34-
35Exit Status:-
36Returns success unless job control is not enabled or an error occurs.-
37$END-
38-
39#include <config.h>-
40-
41#if defined (JOB_CONTROL)-
42#if defined (HAVE_UNISTD_H)-
43# ifdef _MINIX-
44# include <sys/types.h>-
45# endif-
46# include <unistd.h>-
47#endif-
48-
49#include "../bashtypes.h"-
50#include <signal.h>-
51#include "../bashintl.h"-
52#include "../shell.h"-
53#include "../jobs.h"-
54#include "common.h"-
55#include "bashgetopt.h"-
56-
57static sighandler suspend_continue __P((int));-
58-
59static SigHandler *old_cont;-
60#if 0-
61static SigHandler *old_stop;-
62#endif-
63-
64/* Continue handler. */-
65static sighandler-
66suspend_continue (sig)-
67 int sig;-
68{-
69 set_signal_handler (SIGCONT, old_cont);-
70#if 0-
71 set_signal_handler (SIGSTOP, old_stop);-
72#endif-
73 SIGRETURN (0);
never executed: return;
0
74}-
75-
76/* Suspending the shell. If -f is the arg, then do the suspend-
77 no matter what. Otherwise, complain if a login shell. */-
78int-
79suspend_builtin (list)-
80 WORD_LIST *list;-
81{-
82 int opt, force;-
83-
84 reset_internal_getopt ();-
85 force = 0;-
86 while ((opt = internal_getopt (list, "f")) != -1)
(opt = interna...t, "f")) != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
87 switch (opt)-
88 {-
89 case 'f':
never executed: case 'f':
0
90 force++;-
91 break;
never executed: break;
0
92 CASE_HELPOPT;
never executed: return (258);
never executed: case -99:
0
93 default:
never executed: default:
0
94 builtin_usage ();-
95 return (EX_USAGE);
never executed: return (258);
0
96 }-
97 -
98 list = loptend;-
99-
100 if (job_control == 0)
job_control == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
101 {-
102 sh_nojobs (_("cannot suspend"));-
103 return (EXECUTION_FAILURE);
never executed: return (1);
0
104 }-
105-
106 if (force == 0)
force == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
107 {-
108 no_args (list);-
109-
110 if (login_shell)
login_shellDescription
TRUEnever evaluated
FALSEnever evaluated
0
111 {-
112 builtin_error (_("cannot suspend a login shell"));-
113 return (EXECUTION_FAILURE);
never executed: return (1);
0
114 }-
115 }
never executed: end of block
0
116-
117 /* XXX - should we put ourselves back into the original pgrp now? If so,-
118 call end_job_control() here and do the right thing in suspend_continue-
119 (that is, call restart_job_control()). */-
120 old_cont = (SigHandler *)set_signal_handler (SIGCONT, suspend_continue);-
121#if 0-
122 old_stop = (SigHandler *)set_signal_handler (SIGSTOP, SIG_DFL);-
123#endif-
124 killpg (shell_pgrp, SIGSTOP);-
125 return (EXECUTION_SUCCESS);
never executed: return (0);
0
126}-
127-
128#endif /* JOB_CONTROL */-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2