OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [libgloss/] [m68k/] [io-system.c] - Blame information for rev 158

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 148 jeremybenn
/*
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
 
34
int _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
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.