]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgfortran/runtime/pause.c
Update copyright years.
[thirdparty/gcc.git] / libgfortran / runtime / pause.c
CommitLineData
1028b2bd 1/* Implementation of the PAUSE statement.
cbe34bb5 2 Copyright (C) 2002-2017 Free Software Foundation, Inc.
6de9cd9a
DN
3 Contributed by Paul Brook <paul@nowt.org>
4
1028b2bd 5This file is part of the GNU Fortran runtime library (libgfortran).
6de9cd9a 6
57dea9f6
TM
7Libgfortran is free software; you can redistribute it and/or
8modify it under the terms of the GNU General Public
6de9cd9a 9License as published by the Free Software Foundation; either
748086b7 10version 3 of the License, or (at your option) any later version.
57dea9f6
TM
11
12Libgfortran is distributed in the hope that it will be useful,
6de9cd9a
DN
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
57dea9f6 15GNU General Public License for more details.
6de9cd9a 16
748086b7
JJ
17Under Section 7 of GPL version 3, you are granted additional
18permissions described in the GCC Runtime Library Exception, version
193.1, as published by the Free Software Foundation.
20
21You should have received a copy of the GNU General Public License and
22a copy of the GCC Runtime Library Exception along with this program;
23see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
24<http://www.gnu.org/licenses/>. */
6de9cd9a 25
36ae8a61 26#include "libgfortran.h"
6de9cd9a 27#include <string.h>
19f0e98f
DE
28
29#ifdef HAVE_UNISTD_H
1028b2bd 30#include <unistd.h>
19f0e98f
DE
31#endif
32
6de9cd9a 33
6de9cd9a
DN
34static void
35do_pause (void)
36{
37 char buff[4];
1028b2bd
JB
38 estr_write ("To resume execution, type go. "
39 "Other input will terminate the job.\n");
6de9cd9a
DN
40
41 fgets(buff, 4, stdin);
42 if (strncmp(buff, "go\n", 3) != 0)
6d1b0f92 43 stop_string ('\0', 0);
1028b2bd 44 estr_write ("RESUMED\n");
6de9cd9a
DN
45}
46
6d1b0f92 47/* A numeric PAUSE statement. */
7d7b8bfe 48
6d1b0f92 49extern void pause_numeric (GFC_INTEGER_4);
7d7b8bfe
RH
50export_proto(pause_numeric);
51
6de9cd9a
DN
52void
53pause_numeric (GFC_INTEGER_4 code)
54{
6d1b0f92 55 st_printf ("PAUSE %d\n", (int) code);
6de9cd9a
DN
56 do_pause ();
57}
58
6d1b0f92
JD
59/* A character string or blank PAUSE statement. */
60
7d7b8bfe
RH
61extern void pause_string (char *string, GFC_INTEGER_4 len);
62export_proto(pause_string);
6de9cd9a
DN
63
64void
65pause_string (char *string, GFC_INTEGER_4 len)
66{
1028b2bd
JB
67 estr_write ("PAUSE ");
68 ssize_t w = write (STDERR_FILENO, string, len);
69 (void) sizeof (w); /* Avoid compiler warning about not using write
70 return val. */
71 estr_write ("\n");
6de9cd9a
DN
72
73 do_pause ();
74}