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] - Diff between revs 158 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 158 Rev 816
/*
/*
 * io-system.c --
 * io-system.c --
 *
 *
 * Copyright (c) 2006 CodeSourcery Inc
 * Copyright (c) 2006 CodeSourcery Inc
 *
 *
 * The authors hereby grant permission to use, copy, modify, distribute,
 * The authors hereby grant permission to use, copy, modify, distribute,
 * and license this software and its documentation for any purpose, provided
 * and license this software and its documentation for any purpose, provided
 * that existing copyright notices are retained in all copies and that this
 * that existing copyright notices are retained in all copies and that this
 * notice is included verbatim in any distributions. No written agreement,
 * notice is included verbatim in any distributions. No written agreement,
 * license, or royalty fee is required for any of the authorized uses.
 * license, or royalty fee is required for any of the authorized uses.
 * Modifications to this software may be copyrighted by their authors
 * Modifications to this software may be copyrighted by their authors
 * and need not follow the licensing terms described here, provided that
 * and need not follow the licensing terms described here, provided that
 * the new terms are clearly indicated on the first page of each file where
 * the new terms are clearly indicated on the first page of each file where
 * they apply.
 * they apply.
 */
 */
 
 
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include <errno.h>
#include <errno.h>
#include <sys/wait.h>
#include <sys/wait.h>
#define IO _system
#define IO _system
#include "io.h"
#include "io.h"
 
 
/*
/*
 * system: execute command on (remote) host
 * system: execute command on (remote) host
 * input parameters:
 * input parameters:
 *   0 : command ptr
 *   0 : command ptr
 *   1 : command length
 *   1 : command length
 * output parameters:
 * output parameters:
 *   0 : result
 *   0 : result
 *   1 : errno
 *   1 : errno
 */
 */
 
 
int _system (const char *command)
int _system (const char *command)
{
{
#if HOSTED
#if HOSTED
  int e;
  int e;
  gdb_parambuf_t parameters;
  gdb_parambuf_t parameters;
 
 
  parameters[0] = (uint32_t) command;
  parameters[0] = (uint32_t) command;
  parameters[1] = command ? (uint32_t) strlen (command) + 1 : 0;
  parameters[1] = command ? (uint32_t) strlen (command) + 1 : 0;
  __hosted (HOSTED_SYSTEM, parameters);
  __hosted (HOSTED_SYSTEM, parameters);
  errno = __hosted_from_gdb_errno (parameters[1]);
  errno = __hosted_from_gdb_errno (parameters[1]);
  e = parameters[0];
  e = parameters[0];
  if (e >= 0 && command)
  if (e >= 0 && command)
    {
    {
      /* We have to convert e, an exit status to the encoded status of
      /* We have to convert e, an exit status to the encoded status of
         the command.  To avoid hard coding the exit status, we simply
         the command.  To avoid hard coding the exit status, we simply
         loop until we find the right position.  */
         loop until we find the right position.  */
      int exit_code;
      int exit_code;
 
 
      for (exit_code = e; e && WEXITSTATUS (e) != exit_code; e <<= 1)
      for (exit_code = e; e && WEXITSTATUS (e) != exit_code; e <<= 1)
        continue;
        continue;
    }
    }
 
 
  return e;
  return e;
#else
#else
  if (!command)
  if (!command)
    return 0;
    return 0;
  errno = ENOSYS;
  errno = ENOSYS;
  return -1;
  return -1;
#endif
#endif
}
}
 
 

powered by: WebSVN 2.1.0

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