source: trunk/libs/newlib/src/libgloss/m68k/io-system.c @ 544

Last change on this file since 544 was 444, checked in by satin@…, 7 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 1.6 KB
RevLine 
[444]1/*
2 * io-system.c --
3 *
4 * Copyright (c) 2006 CodeSourcery Inc
5 *
6 * The authors hereby grant permission to use, copy, modify, distribute,
7 * and license this software and its documentation for any purpose, provided
8 * that existing copyright notices are retained in all copies and that this
9 * notice is included verbatim in any distributions. No written agreement,
10 * license, or royalty fee is required for any of the authorized uses.
11 * Modifications to this software may be copyrighted by their authors
12 * and need not follow the licensing terms described here, provided that
13 * the new terms are clearly indicated on the first page of each file where
14 * they apply.
15 */
16
17#include <stdlib.h>
18#include <string.h>
19#include <errno.h>
20#include <sys/wait.h>
21#define IO _system
22#include "io.h"
23
24/*
25 * system: execute command on (remote) host
26 * input parameters:
27 *   0 : command ptr
28 *   1 : command length
29 * output parameters:
30 *   0 : result
31 *   1 : errno
32 */
33
34int _system (const char *command)
35{
36#if HOSTED
37  int e;
38  gdb_parambuf_t parameters;
39 
40  parameters[0] = (uint32_t) command;
41  parameters[1] = command ? (uint32_t) strlen (command) + 1 : 0;
42  __hosted (HOSTED_SYSTEM, parameters);
43  errno = __hosted_from_gdb_errno (parameters[1]);
44  e = parameters[0];
45  if (e >= 0 && command)
46    {
47      /* We have to convert e, an exit status to the encoded status of
48         the command.  To avoid hard coding the exit status, we simply
49         loop until we find the right position.  */
50      int exit_code;
51
52      for (exit_code = e; e && WEXITSTATUS (e) != exit_code; e <<= 1)
53        continue;
54    }
55 
56  return e;
57#else
58  if (!command)
59    return 0;
60  errno = ENOSYS;
61  return -1;
62#endif
63}
Note: See TracBrowser for help on using the repository browser.