]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgfortran/intrinsics/system.c
sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
[thirdparty/gcc.git] / libgfortran / intrinsics / system.c
CommitLineData
5b1374e9
TS
1/* Implementation of the SYSTEM intrinsic.
2 Copyright (C) 2004 Free Software Foundation, Inc.
3 Contributed by Tobias Schlüter.
4
57dea9f6 5This file is part of the GNU Fortran 95 runtime library (libgfortran).
5b1374e9 6
57dea9f6 7Libgfortran is free software; you can redistribute it and/or modify it under
5b1374e9
TS
8the terms of the GNU General Public License as published by the Free
9Software Foundation; either version 2, or (at your option) any later
10version.
11
12In addition to the permissions in the GNU General Public License, the
13Free Software Foundation gives you unlimited permission to link the
14compiled version of this file into combinations with other programs,
15and to distribute those combinations without any restriction coming
16from the use of this file. (The General Public License restrictions
17do apply in other respects; for example, they cover modification of
18the file, and distribution when not linked into a combined
19executable.)
20
57dea9f6
TM
21Libgfortran is distributed in the hope that it will be useful, but WITHOUT
22ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
5b1374e9
TS
23FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24for more details.
25
26You should have received a copy of the GNU General Public License
57dea9f6 27along with libgfortran; see the file COPYING. If not, write to the Free
fe2ae685
KC
28Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
2902110-1301, USA. */
5b1374e9
TS
30
31#include "config.h"
5b1374e9
TS
32
33#ifdef HAVE_STRING_H
34#include <string.h>
35#endif
36#ifdef HAVE_STDLIB_H
37#include <stdlib.h>
38#endif
39
8cfe17f9
AL
40#include "libgfortran.h"
41
7d7b8bfe
RH
42extern void system_sub (const char *fcmd, GFC_INTEGER_4 * status,
43 gfc_charlen_type cmd_len);
44iexport_proto(system_sub);
45
5b1374e9 46void
7d7b8bfe 47system_sub (const char *fcmd, GFC_INTEGER_4 *status, gfc_charlen_type cmd_len)
5b1374e9
TS
48{
49 char cmd[cmd_len + 1];
50 int stat;
51
25a5e756
FXC
52 /* Flush all I/O units before executing the command. */
53 flush_all_units();
54
5b1374e9
TS
55 memcpy (cmd, fcmd, cmd_len);
56 cmd[cmd_len] = '\0';
57
58 stat = system (cmd);
59 if (status)
60 *status = stat;
61}
7d7b8bfe
RH
62iexport(system_sub);
63
64extern GFC_INTEGER_4 PREFIX(system) (const char *, gfc_charlen_type);
65export_proto_np(PREFIX(system));
5b1374e9
TS
66
67GFC_INTEGER_4
7d7b8bfe 68PREFIX(system) (const char *fcmd, gfc_charlen_type cmd_len)
5b1374e9
TS
69{
70 GFC_INTEGER_4 stat;
7d7b8bfe 71 system_sub (fcmd, &stat, cmd_len);
5b1374e9
TS
72 return stat;
73}