diff options
Diffstat (limited to 'shell/getopt_r.ads')
-rw-r--r-- | shell/getopt_r.ads | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/shell/getopt_r.ads b/shell/getopt_r.ads new file mode 100644 index 0000000..d802054 --- /dev/null +++ b/shell/getopt_r.ads @@ -0,0 +1,96 @@ +-- +-- REENTRANT GETOPT +-- SPECIFICATION +-- $Id$ +-- +-- Based upon getopt by Nasser Abbasi. +-- modifications to support reentrancy by Joel Sherrill. +-- +-- Copyright (C) 1998 Nasser Abbasi <nabbasi@pacbell.net> +-- Copyright (C) 2011 Joel Sherrill <joe.sherrill@oarcorp.com> +-- +-- This is free software; you can redistribute it and/or modify it under +-- terms of the GNU General Public License as published by the Free Soft- +-- ware Foundation; either version 2, or (at your option) any later ver- +-- sion. GETOPT is distributed in the hope that it will be useful, but WITH +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +-- for more details. Free Software Foundation, 59 Temple Place - Suite +-- 330, Boston, MA 02111-1307, USA. +-- +-- As a special exception, if other files instantiate generics from this +-- unit, or you link this unit with other files to produce an executable, +-- this unit does not by itself cause the resulting executable to be +-- covered by the GNU General Public License. This exception does not +-- however invalidate any other reasons why the executable file might be +-- covered by the GNU Public License. +-- +------------------------------------------------------------------------------ +-- +-- change history: +-- +-- name changes +-- ---------- -------------------------------------------------------------- +-- NMA021899 created +-- NMA030299 Changed header to make it modified GPL +-- +-- description: +-- +-- This package is an Ada implementation of getopt() as specified by the +-- document "The Single UNIX Specification, Version 2", Copyright 1997 The +-- Open Group +-- +-- This describes the items involveed using example +-- +-- +-- curopt +-- | +-- V +-- "-f foo -dbc -k" +-- ^ +-- | +-- optind +-- +-- optind is position (index) that tells which command line argument is +-- being processed now. +-- curopt tells which optchar is being processed within one command line +-- argument. This is needed only if more that one optchar are stuck +-- togother in one argument with no space, as in -df where both d and f +-- are valid optchar and d takes no optarg. +-- +-- Compiler used: GCC 4.5.2 targeting i386-rtems4.10 +-- Platform: Fedora 14/x86_64 +-- + + +with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; +with Command_Line_Arguments; use Command_Line_Arguments; + +package Getopt_R is + + pragma Elaborate_Body; + + type Reentrant is + record + Optind : Argument_Count_type; + Optarg : Unbounded_String; + Optopt : Character := ' '; + Opterr : Integer := 1; + Curopt : Natural := 2; + Argc : Argument_Count_Type; + Argv : Argument_Vector_Type; + end record; + + type Reentrant_Ptr is access all Reentrant; + + procedure Initialize ( + R : Reentrant_Ptr; + Argc : Argument_Count_Type; + Argv : Argument_Vector_Type); + + function Getopt ( + R : Reentrant_Ptr; + Optstring : String + ) return Integer; + +end Getopt_R; |