gno/usr.man/man3/parsearg.3
1997-02-27 07:32:31 +00:00

82 lines
1.9 KiB
Groff

.\"
.\" $Id: parsearg.3,v 1.1 1997/02/27 07:32:24 gdr Exp $
.\"
.TH GNO_COMMAND 3 "27 January 1997" GNO "Library Routines"
.SH NAME
.BR ~GNO_COMMAND ,
.BR ~GNO_PARSEARG ,
.BR ~GNO_FREEARG
\- command line parsing and startup from assembly code
.SH SYNOPSIS
.BR ~GNO_COMMAND
.br
.BR ~GNO_PARSEARG
subroutine (4:\fIcommandline\fR,4:\fIargptr\fR)
.br
.BR ~GNO_FREEARG
subroutine (4:\fIargv\fR,2:\fIargc\fR)
.SH DESCRIPTION
.BR ~GNO_COMMAND
emulates the startup code of a C program, and acts as a wrapper for the
.BR ~GNO_PARSEARG
and
.BR ~GNO_FREEARG
functions, below. To use this routine, immediately execute a JML to
.BR ~GNO_COMMAND
from your first segment. Ensure you have a function
.BR main ()
that conforms to the following C prototype:
.nf
int \fBmain\fR (int \fIargc\fR, char **\fIargv\fR);
.fi
.LP
.BR ~GNO_PARSEARG
will take the command line passed to a utility and parse it into an
.IR argc ,
.IR argv
structure like those used in C programs. This was written
.IR not
as a replacement for a C parser, but for use by assembly language
programmers writing shell commands.
.LP
.IR commandline
is the raw command line string as passed by the calling shell in the
X and Y registers.
.IR argptr
is a pointer to an
.IR argv []-style
array.
.LP
.BR ~GNO_FREEARG
frees the region allocated by
.BR ~GNO_PARSEARG .
.IR argv
and
.IR argc
should be the region pointed to by
.IR argptr
and the return value of
.BR ~GNO_PARSEARG ,
respectively.
.SH RETURN VALUE
.BR ~GNO_COMMAND
returns in the accumulator the value returned by
.BR main ().
.LP
.BR ~GNO_PARSEARG
returns in the accumulator the number of arguments found.
.LP
.BR ~GNO_FREEARG
does not return a value.
.SH HISTORY
These routines first appeared in GNO v1.0. They are based on actual
.BR gsh (1)
parsing code.
.SH CAVEATS
.BR ~GNO_PARSEARG
.IR assumes
that the ByteWorks Memory Manager has been started up and is usable.
No such assumption is made with
.BR ~GNO_COMMAND .