source: trunk/gcc/libf2c/libU77/chmod_.c

Last change on this file was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 2.1 KB
Line 
1/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
2This file is part of GNU Fortran libU77 library.
3
4This library is free software; you can redistribute it and/or modify it
5under the terms of the GNU Library General Public License as published
6by the Free Software Foundation; either version 2 of the License, or
7(at your option) any later version.
8
9GNU Fortran is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12Library General Public License for more details.
13
14You should have received a copy of the GNU Library General Public
15License along with GNU Fortran; see the file COPYING.LIB. If
16not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17Boston, MA 02111-1307, USA. */
18
19
20/* This definitely shouldn't be done this way -- should canibalise
21 chmod(1) from GNU or BSD. */
22
23#ifdef HAVE_CONFIG_H
24#include "config.h"
25#endif
26#if HAVE_UNISTD_H
27# include <unistd.h>
28#endif
29#if HAVE_STDLIB_H
30# include <stdlib.h>
31#else
32# include <stdio.h>
33#endif
34#if STDC_HEADERS
35# include <string.h>
36#endif
37
38#include "f2c.h"
39
40#ifndef CHMOD_PATH
41#define CHMOD_PATH "/bin/chmod"
42#endif
43
44extern void s_cat (char *lp, char *rpp[], ftnlen rnp[], ftnlen * np,
45 ftnlen ll);
46void g_char (const char *a, ftnlen alen, char *b);
47
48integer
49G77_chmod_0 ( /* const */ char *name, /* const */ char *mode,
50 const ftnlen Lname, const ftnlen Lmode)
51{
52 char *buff;
53 int i;
54 ftnlen l, l2;
55 ftnlen six = 6;
56 address a[6];
57 ftnlen ii[6];
58 char chmod_path[] = CHMOD_PATH;
59 l = strlen (chmod_path);
60 buff = malloc (Lname + Lmode + l + 3 + 13 + 1);
61 if (!buff)
62 return -1;
63 ii[0] = l;
64 a[0] = chmod_path;
65 ii[1] = 1;
66 a[1] = " ";
67 ii[2] = Lmode;
68 a[2] = mode;
69 ii[3] = 2;
70 a[3] = " '";
71 for (l2 = Lname; (l2 > 1) && (name[l2 - 1] == ' ');)
72 l2--;
73 ii[4] = l2;
74 a[4] = name;
75 ii[5] = 13;
76 a[5] = "' 2>/dev/null";
77 s_cat (buff, a, ii, &six, Lname + Lmode + l + 3 + 13);
78 buff[Lname + Lmode + l + 3 + 13] = '\0';
79 i = system (buff);
80 free (buff);
81 return i;
82}
Note: See TracBrowser for help on using the repository browser.