VirtualBox

source: kBuild/vendor/gnumake/3.82-cvs/amiga.c@ 2581

Last change on this file since 2581 was 2580, checked in by bird, 12 years ago

Importing the make-3-82 CVS tag with --auto-props but no keywords.

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1/* Running commands on Amiga
2Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
32005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
4This file is part of GNU Make.
5
6GNU Make is free software; you can redistribute it and/or modify it under the
7terms of the GNU General Public License as published by the Free Software
8Foundation; either version 3 of the License, or (at your option) any later
9version.
10
11GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License along with
16this program. If not, see <http://www.gnu.org/licenses/>. */
17
18#include "make.h"
19#include "variable.h"
20#include "amiga.h"
21#include <assert.h>
22#include <exec/memory.h>
23#include <dos/dostags.h>
24#include <proto/exec.h>
25#include <proto/dos.h>
26
27static const char Amiga_version[] = "$VER: Make 3.74.3 (12.05.96) \n"
28 "Amiga Port by A. Digulla (digulla@home.lake.de)";
29
30int
31MyExecute (char **argv)
32{
33 char * buffer, * ptr;
34 char ** aptr;
35 int len = 0;
36 int status;
37
38 for (aptr=argv; *aptr; aptr++)
39 {
40 len += strlen (*aptr) + 4;
41 }
42
43 buffer = AllocMem (len, MEMF_ANY);
44
45 if (!buffer)
46 fatal (NILF, "MyExecute: Cannot allocate space for calling a command");
47
48 ptr = buffer;
49
50 for (aptr=argv; *aptr; aptr++)
51 {
52 if (((*aptr)[0] == ';' && !(*aptr)[1]))
53 {
54 *ptr ++ = '"';
55 strcpy (ptr, *aptr);
56 ptr += strlen (ptr);
57 *ptr ++ = '"';
58 }
59 else if ((*aptr)[0] == '@' && (*aptr)[1] == '@' && !(*aptr)[2])
60 {
61 *ptr ++ = '\n';
62 continue;
63 }
64 else
65 {
66 strcpy (ptr, *aptr);
67 ptr += strlen (ptr);
68 }
69 *ptr ++ = ' ';
70 *ptr = 0;
71 }
72
73 ptr[-1] = '\n';
74
75 status = SystemTags (buffer,
76 SYS_UserShell, TRUE,
77 TAG_END);
78
79 FreeMem (buffer, len);
80
81 if (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
82 status = 20;
83
84 /* Warnings don't count */
85 if (status == 5)
86 status = 0;
87
88 return status;
89}
90
91char *
92wildcard_expansion (char *wc, char *o)
93{
94# define PATH_SIZE 1024
95 struct AnchorPath * apath;
96
97 if ( (apath = AllocMem (sizeof (struct AnchorPath) + PATH_SIZE,
98 MEMF_CLEAR))
99 )
100 {
101 apath->ap_Strlen = PATH_SIZE;
102
103 if (MatchFirst (wc, apath) == 0)
104 {
105 do
106 {
107 o = variable_buffer_output (o, apath->ap_Buf,
108 strlen (apath->ap_Buf));
109 o = variable_buffer_output (o, " ",1);
110 } while (MatchNext (apath) == 0);
111 }
112
113 MatchEnd (apath);
114 FreeMem (apath, sizeof (struct AnchorPath) + PATH_SIZE);
115 }
116
117 return o;
118}
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette