(root)/
gcc-13.2.0/
gcc/
ada/
argv-lynxos178-raven-cert.c
       1  /****************************************************************************
       2   *                                                                          *
       3   *                         GNAT COMPILER COMPONENTS                         *
       4   *                                                                          *
       5   *                                A R G V                                   *
       6   *                                                                          *
       7   *                          C Implementation File                           *
       8   *                                                                          *
       9   *         Copyright (C) 1992-2023, Free Software Foundation, Inc.          *
      10   *                                                                          *
      11   * GNAT is free software;  you can  redistribute it  and/or modify it under *
      12   * terms of the  GNU General Public License as published  by the Free Soft- *
      13   * ware  Foundation;  either version 3,  or (at your option) any later ver- *
      14   * sion.  GNAT is distributed in the hope that it will be useful, but WITH- *
      15   * OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY *
      16   * or FITNESS FOR A PARTICULAR PURPOSE.                                     *
      17   *                                                                          *
      18   * As a special exception under Section 7 of GPL version 3, you are granted *
      19   * additional permissions described in the GCC Runtime Library Exception,   *
      20   * version 3.1, as published by the Free Software Foundation.               *
      21   *                                                                          *
      22   * You should have received a copy of the GNU General Public License and    *
      23   * a copy of the GCC Runtime Library Exception along with this program;     *
      24   * see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    *
      25   * <http://www.gnu.org/licenses/>.                                          *
      26   *                                                                          *
      27   * GNAT was originally developed  by the GNAT team at  New York University. *
      28   * Extensive contributions were provided by Ada Core Technologies Inc.      *
      29   *                                                                          *
      30   ****************************************************************************/
      31  
      32  /* Routines for accessing command line arguments from both the runtime
      33     library and from the compiler itself.  In the former case, gnat_argc
      34     and gnat_argv are the original argc and argv values as stored by the
      35     binder generated main program, and these routines are accessed from
      36     the Ada.Command_Line package.  In the compiler case, gnat_argc and
      37     gnat_argv are the values as modified by toplev, and these routines
      38     are accessed from the Osint package.  */
      39  
      40  /* This version is for the ravenscar-cert runtime in LynxOS-178, with
      41     minimal support for Ada.Command_Line.Command_Name */
      42  
      43  #include <sys/types.h>
      44  #include <stdlib.h>
      45  #include <string.h>
      46  
      47  #ifdef __cplusplus
      48  extern "C" {
      49  #endif
      50  
      51  /* argc and argv of the main program are saved under gnat_argc and gnat_argv,
      52     envp of the main program is saved under gnat_envp.
      53     While gnat_argc and gnat_envp are not needed, they are referenced from
      54     the binder-generated file so they need to be defined here */
      55  
      56  int gnat_argc = 0;
      57  char **gnat_argv = NULL;
      58  char **gnat_envp = NULL;
      59  
      60  int
      61  __gnat_len_arg (int arg_num)
      62  {
      63    if (gnat_argv != NULL)
      64      return strlen (gnat_argv[arg_num]);
      65    else
      66      return 0;
      67  }
      68  
      69  void
      70  __gnat_fill_arg (char *a, int i)
      71  {
      72    if (gnat_argv != NULL)
      73      strncpy (a, gnat_argv[i], strlen(gnat_argv[i]));
      74  }
      75  
      76  #ifdef __cplusplus
      77  }
      78  #endif