VirtualBox

source: kBuild/vendor/gnumake/3.82/amiga.c

最後變更 在這個檔案是 2579,由 bird 提交於 13 年 前

Importing make-3.82.tar.bz2 (md5sum 1a11100f3c63fcf5753818e59d63088f) with --auto-props but no keywords.

  • 屬性 svn:eol-style 設為 native
檔案大小: 2.6 KB
 
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 ([email protected])";
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}
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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