]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgfortran/runtime/pause.c
Error printing thread safety, remove GFORTRAN_USE_STDERR
[thirdparty/gcc.git] / libgfortran / runtime / pause.c
CommitLineData
1028b2bd
JB
1/* Implementation of the PAUSE statement.
2 Copyright 2002, 2005, 2007, 2009, 2010, 2011 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>
1028b2bd 28#include <unistd.h>
6de9cd9a 29
6de9cd9a
DN
30static void
31do_pause (void)
32{
33 char buff[4];
1028b2bd
JB
34 estr_write ("To resume execution, type go. "
35 "Other input will terminate the job.\n");
6de9cd9a
DN
36
37 fgets(buff, 4, stdin);
38 if (strncmp(buff, "go\n", 3) != 0)
6d1b0f92 39 stop_string ('\0', 0);
1028b2bd 40 estr_write ("RESUMED\n");
6de9cd9a
DN
41}
42
6d1b0f92 43/* A numeric PAUSE statement. */
7d7b8bfe 44
6d1b0f92 45extern void pause_numeric (GFC_INTEGER_4);
7d7b8bfe
RH
46export_proto(pause_numeric);
47
6de9cd9a
DN
48void
49pause_numeric (GFC_INTEGER_4 code)
50{
6d1b0f92 51 st_printf ("PAUSE %d\n", (int) code);
6de9cd9a
DN
52 do_pause ();
53}
54
6d1b0f92
JD
55/* A character string or blank PAUSE statement. */
56
7d7b8bfe
RH
57extern void pause_string (char *string, GFC_INTEGER_4 len);
58export_proto(pause_string);
6de9cd9a
DN
59
60void
61pause_string (char *string, GFC_INTEGER_4 len)
62{
1028b2bd
JB
63 estr_write ("PAUSE ");
64 ssize_t w = write (STDERR_FILENO, string, len);
65 (void) sizeof (w); /* Avoid compiler warning about not using write
66 return val. */
67 estr_write ("\n");
6de9cd9a
DN
68
69 do_pause ();
70}