v08i084: libhoward portability library, part 6 of 9
Brandon S. Allbery - comp.sources.misc
allbery at uunet.UU.NET
Mon Oct 2 00:45:28 AEST 1989
Posting-number: Volume 8, Issue 84
Submitted-by: howard at dahlbeck.ericsson.se (Howard Gayle)
Archive-name: libhoward/part06
#! /bin/sh
# This is a shell archive. Remove anything before this line, then feed it
# into a shell via "sh file" or similar. To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix at uunet.uu.net if you want that tool.
# If this archive is complete, you will see the following message at the end:
# "End of archive 6 (of 9)."
# Contents: ma2d.c ma2i.c ma2l.c malf0.c malf1.c mk-cc-lims.b mk-reg.b
# mopenp.3 mra2d.c mra2i.c mra2l.c mra2u.c mra2ul.c prefxi.c usage.h
# userfn.c
# Wrapped by howard at hasse on Mon Sep 25 07:08:11 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'ma2d.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'ma2d.c'\"
else
echo shar: Extracting \"'ma2d.c'\" \(3062 characters\)
sed "s/^X//" >'ma2d.c' <<'END_OF_FILE'
X/*
X * ma2d - convert Ada-syntax real literal to double, handle errors
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: ma2d.c,v 1.6 89/08/12 08:58:22 howard Exp $");
X
X#include <errno.h>
X#include <float.h>
X#include <limits.h>
X#include <string.h>
X#include <howard/a2.h>
X#include <howard/malf.h>
X#include <howard/registers.i>
X
XPUBLIC double ma2d (str, lim, synok, fn, end)
X bStrT str; /* Input string.*/
X bStrT lim; /* Don't pass this.*/
X boolT synok; /* Accept non-fatal syntax errors.*/
X bStrT fn; /* Field name, for error messages.*/
XR2 bStrT *end; /* End pointer stored here.*/
X
X/* Function:
X *
X * Algorithm:
X * Call a2d(). Switch on return code.
X * Returns:
X *
X * Notes:
X *
X */
X{
X bStrT ep; /* a2d() stores pointer to end of string here.*/
X double d; /* a2d() stores its result here.*/
XR3 int p1; /* Precision for printing str (up to syntax error).*/
XR4 int p2; /* Precision for printing str (after syntax error).*/
XR1 int s; /* Return code.*/
X
Xs = a2d (str, lim, synok, &d, &ep);
Xswitch (s)
X {
X case SUCCESS:
X break;
X case EDOM:
X p1 = ep - str;
X p2 = ((NULBSTR == lim) ? strlen (str) : lim - str) - p1;
X malf1 ("%s [%.*s|%.*s]: syntax error", fn, p1, str, p2, ep);
X break;
X case ERANGE:
X p1 = ((NULBSTR == lim) ? INT_MAX : lim - str);
X malf1 ("%s [%.*s] not in range [%G, %G]",
X fn, p1, str, -DBL_MAX, DBL_MAX);
X break;
X case EINVAL:
X if (NULBSTR == str) malf1 ("ma2d: null string argument");
X /* Falls through.*/
X default:
X malf1 ("ma2d: impossible error %d", s);
X }
Xif (((bStrT *) NULL) != end) *end = ep;
Xreturn (d);
X}
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: ma2d.c,v 1.6 89/08/12 08:58:22 howard Exp $");
XUSAGE ("real-numeric-literal [limit]");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
XbStrT end; /* Points to end of string.*/
Xdouble d; /* Returned by ma2d().*/
X
Xif (argc < 2) usage();
Xd = ma2d (argv[1], (2 == argc) ? NULBSTR : &argv[1][atoi (argv[2])], FALSE,
X S("real-numeric-literal"), &end);
XPRINTF ("%G\t%s\n", d, end);
Xmfflush (stdout, "Standard Output");
Xexit (SUCCESS);
X
X#ifdef lint
Xreturn (SUCCESS);
X#endif
X}
X#endif
END_OF_FILE
if test 3062 -ne `wc -c <'ma2d.c'`; then
echo shar: \"'ma2d.c'\" unpacked with wrong size!
fi
# end of 'ma2d.c'
fi
if test -f 'ma2i.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'ma2i.c'\"
else
echo shar: Extracting \"'ma2i.c'\" \(3052 characters\)
sed "s/^X//" >'ma2i.c' <<'END_OF_FILE'
X/*
X * ma2i - convert Ada-syntax integer literal to int, handle errors
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: ma2i.c,v 1.6 89/08/12 09:10:44 howard Exp $");
X
X#include <errno.h>
X#include <limits.h>
X#include <string.h>
X#include <howard/a2.h>
X#include <howard/malf.h>
X#include <howard/registers.i>
X
XPUBLIC int ma2i (str, lim, synok, fn, end)
X bStrT str; /* Input string.*/
X bStrT lim; /* Don't pass this.*/
X boolT synok; /* Accept non-fatal syntax errors.*/
X bStrT fn; /* Field name, for error messages.*/
XR2 bStrT *end; /* End pointer stored here.*/
X
X/* Function:
X *
X * Algorithm:
X * Call a2i() then switch on return code.
X * Returns:
X *
X * Notes:
X *
X */
X{
X bStrT ep; /* a2i() stores pointer to end of string here.*/
X int i; /* a2i() stores its result here.*/
XR3 int p1; /* Precision for printing str (up to syntax error).*/
XR4 int p2; /* Precision for printing str (after syntax error).*/
XR1 int s; /* Return code.*/
X
Xs = a2i (str, lim, synok, &i, &ep);
Xswitch (s)
X {
X case SUCCESS:
X break;
X case EDOM:
X p1 = ep - str;
X p2 = ((NULBSTR == lim) ? strlen (str) : lim - str) - p1;
X malf1 ("%s [%.*s|%.*s]: syntax error", fn, p1, str, p2, ep);
X break;
X case ERANGE:
X p1 = ((NULBSTR == lim) ? INT_MAX : lim - str);
X malf1 ("%s [%.*s] not in range [%d, %d]", fn, p1, str, INT_MIN, INT_MAX);
X break;
X case EINVAL:
X if (NULBSTR == str) malf1 ("ma2i: null string argument");
X /* Falls through.*/
X default:
X malf1 ("ma2i: impossible error %d", s);
X }
Xif (((bStrT *) NULL) != end) *end = ep;
Xreturn (i);
X}
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: ma2i.c,v 1.6 89/08/12 09:10:44 howard Exp $");
XUSAGE ("integer-numeric-literal [limit]");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
XbStrT end; /* Points to end of string.*/
Xint i; /* Returned by ma2i().*/
X
Xif (argc < 2) usage();
Xi = ma2i (argv[1], (2 == argc) ? NULBSTR : &argv[1][atoi (argv[2])], FALSE,
X S("integer-numeric-literal"), &end);
XPRINTF ("8#%o#\t10#%d#\t16#%X#\t%s\n", i, i, i, end);
Xmfflush (stdout, "Standard Output");
Xexit (SUCCESS);
X
X#ifdef lint
Xreturn (SUCCESS);
X#endif
X}
X#endif
END_OF_FILE
if test 3052 -ne `wc -c <'ma2i.c'`; then
echo shar: \"'ma2i.c'\" unpacked with wrong size!
fi
# end of 'ma2i.c'
fi
if test -f 'ma2l.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'ma2l.c'\"
else
echo shar: Extracting \"'ma2l.c'\" \(3037 characters\)
sed "s/^X//" >'ma2l.c' <<'END_OF_FILE'
X/*
X * ma2l - convert Ada-syntax integer literal to long, handle errors
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: ma2l.c,v 1.3 89/08/12 09:22:39 howard Exp $");
X
X#include <errno.h>
X#include <limits.h>
X#include <string.h>
X#include <howard/a2.h>
X#include <howard/malf.h>
X#include <howard/registers.i>
X
XPUBLIC long ma2l (str, lim, synok, fn, end)
X bStrT str; /* Input string.*/
X bStrT lim; /* Don't pass this.*/
X boolT synok; /* Accept non-fatal syntax errors.*/
X bStrT fn; /* Field name, for error messages.*/
XR2 bStrT *end; /* End pointer stored here.*/
X
X/* Function:
X *
X * Algorithm:
X *
X * Returns:
X *
X * Notes:
X *
X */
X{
X bStrT ep; /* a2l() stores pointer to end of string here.*/
X long l; /* a2l() stores its result here.*/
XR3 int p1; /* Precision for printing str (up to syntax error).*/
XR4 int p2; /* Precision for printing str (after syntax error).*/
XR1 int s; /* Return code.*/
X
Xs = a2l (str, lim, synok, &l, &ep);
Xswitch (s)
X {
X case SUCCESS:
X break;
X case EDOM:
X p1 = ep - str;
X p2 = ((NULBSTR == lim) ? strlen (str) : lim - str) - p1;
X malf1 ("%s [%.*s|%.*s]: syntax error", fn, p1, str, p2, ep);
X break;
X case ERANGE:
X p1 = ((NULBSTR == lim) ? INT_MAX : lim - str);
X malf1 ("%s [%.*s] not in range [%ld, %ld]",
X fn, p1, str, LONG_MIN, LONG_MAX);
X break;
X case EINVAL:
X if (NULBSTR == str) malf1 ("ma2l: null string argument");
X /* Falls through.*/
X default:
X malf1 ("ma2l: impossible error %d", s);
X }
Xif (((bStrT *) NULL) != end) *end = ep;
Xreturn (l);
X}
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: ma2l.c,v 1.3 89/08/12 09:22:39 howard Exp $");
XUSAGE ("integer-numeric-literal [limit]");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
XbStrT end; /* Points to end of string.*/
Xlong l; /* Returned by ma2l().*/
X
Xif (argc < 2) usage();
Xl = ma2l (argv[1], (2 == argc) ? NULBSTR : &argv[1][atoi (argv[2])], FALSE,
X S("integer-numeric-literal"), &end);
XPRINTF ("8#%lo#\t10#%ld#\t16#%lX#\t%s\n", l, l, l, end);
Xmfflush (stdout, "Standard Output");
Xexit (SUCCESS);
X
X#ifdef lint
Xreturn (SUCCESS);
X#endif
X}
X#endif
END_OF_FILE
if test 3037 -ne `wc -c <'ma2l.c'`; then
echo shar: \"'ma2l.c'\" unpacked with wrong size!
fi
# end of 'ma2l.c'
fi
if test -f 'malf0.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'malf0.c'\"
else
echo shar: Extracting \"'malf0.c'\" \(2751 characters\)
sed "s/^X//" >'malf0.c' <<'END_OF_FILE'
X/*
X * malf0 - malf (0, ...)
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: malf0.c,v 1.11 89/08/21 17:50:47 howard Exp $");
X
X#include <howard/malf.h>
X
X#ifdef NOVPRINTF
X/*VARARGS1*/
XPUBLIC void malf0 (a, b, c, d, e, f)
XcStrT a;
X{
Xmalf (0, a, b, c, d, e, f);
X}
X#else NOVPRINTF
X#include <varargs.h>
X#include <howard/registers.i>
X
X/*VARARGS0*/
XPUBLIC void malf0 (va_alist)
Xva_dcl
X
X/* Function:
X * malf0 (args...) == malf (0, args...)
X */
X{
Xextern bStrT _progn; /* Version string.*/
Xextern int errno; /* See intro(2).*/
Xextern int sys_nerr; /* Maximum value of errno for which a
X * text entry exists.*/
Xextern cStrT sys_errlist[]; /* Array of pointers to system error
X * text, indexed by errno.*/
Xextern cStrT ctime(); /* (3).*/
Xextern long time(); /* (3C).*/
XR1 int se = errno; /* Save errno.*/
X long ut; /* Current system time.*/
X va_list args;
XR2 cStrT a; /* Format string.*/
X
Xva_start (args);
Xa = va_arg (args, cStrT);
XFFLUSH (stdout);
XFPUTS ("\nWarning", stderr);
Xif (isatty (fileno (stderr)))
X {
X FPUTS (": ", stderr);
X putspn();
X }
Xelse
X {
X ut = time ((long *) NULL);
X FPRINTF (stderr, " message at %s", ctime (&ut));
X if (NULBSTR != _progn) FPRINTF (stderr, " from: %s\n ", _progn);
X }
X(void) vfprintf (stderr, a, args);
Xva_end (args);
XPUTC ('\n', stderr);
Xif (0 != se)
X {
X FPRINTF (stderr, " System message %d", se);
X if ((0 < se) && (se <= sys_nerr)) FPRINTF (stderr, ": %s", sys_errlist[se]);
X PUTC ('\n', stderr);
X }
XFFLUSH (stderr);
Xerrno = 0;
X}
X#endif NOVPRINTF
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: malf0.c,v 1.11 89/08/21 17:50:47 howard Exp $");
XUSAGE ("");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
Xextern int errno;
X
Xerrno = 10;
Xmalf0 ("%c %s %d %ld %f", '1', "2", 3, 4L, 5.0);
X}
X#endif
END_OF_FILE
if test 2751 -ne `wc -c <'malf0.c'`; then
echo shar: \"'malf0.c'\" unpacked with wrong size!
fi
# end of 'malf0.c'
fi
if test -f 'malf1.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'malf1.c'\"
else
echo shar: Extracting \"'malf1.c'\" \(2766 characters\)
sed "s/^X//" >'malf1.c' <<'END_OF_FILE'
X/*
X * malf1 - malf (1, ...)
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: malf1.c,v 1.8 89/08/21 17:50:50 howard Exp $");
X
X#include <howard/malf.h>
X
X#ifdef NOVPRINTF
X/*VARARGS1*/
XPUBLIC void malf1 (a, b, c, d, e, f)
XcStrT a;
X{
Xmalf (1, a, b, c, d, e, f);
X}
X#else NOVPRINTF
X#include <varargs.h>
X#include <howard/registers.i>
X
X/*VARARGS0*/
XPUBLIC void malf1 (va_alist)
Xva_dcl
X
X/* Function:
X * malf1 (args...) == malf (1, args...)
X */
X{
Xextern bStrT _progn; /* Version string.*/
Xextern int errno; /* See intro(2).*/
Xextern int sys_nerr; /* Maximum value of errno for which a
X * text entry exists.*/
Xextern cStrT sys_errlist[]; /* Array of pointers to system error
X * text, indexed by errno.*/
Xextern cStrT ctime(); /* (3).*/
Xextern long time(); /* (3C).*/
XR1 int se = errno; /* Save errno.*/
X long ut; /* Current system time.*/
X va_list args;
XR2 cStrT a; /* Format string.*/
X
Xva_start (args);
Xa = va_arg (args, cStrT);
XFFLUSH (stdout);
XFPUTS ("\nError", stderr);
Xif (isatty (fileno (stderr)))
X {
X FPUTS (": ", stderr);
X putspn();
X }
Xelse
X {
X ut = time ((long *) NULL);
X FPRINTF (stderr, " message at %s", ctime (&ut));
X if (NULBSTR != _progn) FPRINTF (stderr, " from: %s\n ", _progn);
X }
X(void) vfprintf (stderr, a, args);
Xva_end (args);
XPUTC ('\n', stderr);
Xif (0 != se)
X {
X FPRINTF (stderr, " System message %d", se);
X if ((0 < se) && (se <= sys_nerr)) FPRINTF (stderr, ": %s", sys_errlist[se]);
X PUTC ('\n', stderr);
X }
XFFLUSH (stderr);
Xif (_debug) abort();
Xexit (1);
X}
X#endif VPRINTF
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: malf1.c,v 1.8 89/08/21 17:50:50 howard Exp $");
XUSAGE ("");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
Xextern int errno;
X
Xerrno = 3;
Xmalf1 ("%c %s %d %ld %f", '1', "2", 3, 4L, 5.0);
X}
X#endif
END_OF_FILE
if test 2766 -ne `wc -c <'malf1.c'`; then
echo shar: \"'malf1.c'\" unpacked with wrong size!
fi
# end of 'malf1.c'
fi
if test -f 'mk-cc-lims.b' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mk-cc-lims.b'\"
else
echo shar: Extracting \"'mk-cc-lims.b'\" \(2539 characters\)
sed "s/^X//" >'mk-cc-lims.b' <<'END_OF_FILE'
X
X# mk-cc-lims - make the cc-lims.i include file for this C compiler
X#
X# $Header: mk-cc-lims.b,v 1.6 89/09/21 19:22:19 howard Exp $
X#
X# Copyright 1989 Howard Lee Gayle
X# This file is written in the ISO 8859/1 character set.
X#
X# This program is free software; you can redistribute it and/or modify
X# it under the terms of the GNU General Public License version 1,
X# as published by the Free Software Foundation.
X#
X# This program is distributed in the hope that it will be useful,
X# but WITHOUT ANY WARRANTY; without even the implied warranty of
X# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X# GNU General Public License for more details.
X#
X# You should have received a copy of the GNU General Public License
X# along with this program; if not, write to the Free Software
X# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X#
X# Shell variables:
X# t - temporary file
X# u - usage string
X
XCMDNAME=mk-cc-lims
Xexport CMDNAME
Xu='Usage: $CMDNAME c-compiler cc-lims.i'
Xif [ $# -ne 2 ]
Xthen
X echo "$u" 1>&2
X exit 1
Xfi
Xt=lims$$.c
Xecho '/*' > $2
Xecho ' * cc-lims.i - C compiler limitations file' >> $2
Xecho ' *' >> $2
Xecho ' * This file was generated automatically by:' >> $2
Xecho ' * $Header: mk-cc-lims.b,v 1.6 89/09/21 19:22:19 howard Exp $' >> $2
Xecho ' */' >> $2
Xecho '' >> $2
Xecho 'main(){extern TYPE x();x(0);}' > $t
X
Xif $1 -S -DTYPE='signed char' $t
Xthen
X echo '/*#define NOSCHAR 1 /* Comment in if no signed char type.*/' >> $2
Xelse
X echo '#define NOSCHAR 1 /* Comment in if no signed char type.*/' >> $2
Xfi
X
Xif $1 -S -DTYPE='unsigned char' $t
Xthen
X echo '/*#define NOUCHAR 1 /* Comment in if no unsigned char type.*/' >> $2
Xelse
X echo '#define NOUCHAR 1 /* Comment in if no unsigned char type.*/' >> $2
Xfi
X
Xif $1 -S -DTYPE='unsigned long' $t
Xthen
X echo '/*#define NOULONG 1 /* Comment in if no unsigned long type.*/' >> $2
Xelse
X echo '#define NOULONG 1 /* Comment in if no unsigned long type.*/' >> $2
Xfi
X
Xif $1 -S -DTYPE='unsigned short' $t
Xthen
X echo '/*#define NOUSHRT 1 /* Comment in if no unsigned short type.*/' >> $2
Xelse
X echo '#define NOUSHRT 1 /* Comment in if no unsigned short type.*/' >> $2
Xfi
X
Xif $1 -S -DTYPE='void' $t
Xthen
X echo '/*#define NOVOID 1 /* Comment in if no void type.*/' >> $2
Xelse
X echo '#define NOVOID 1 /* Comment in if no void type.*/' >> $2
Xfi
X
Xif $1 -S -DTYPE='void *' $t
Xthen
X echo '/*#define NOVOIDP 1 /* Comment in if no void * type.*/' >> $2
Xelse
X echo '#define NOVOIDP 1 /* Comment in if no void * type.*/' >> $2
Xfi
X
Xrm $t lims$$.s
END_OF_FILE
if test 2539 -ne `wc -c <'mk-cc-lims.b'`; then
echo shar: \"'mk-cc-lims.b'\" unpacked with wrong size!
fi
# end of 'mk-cc-lims.b'
fi
if test -f 'mk-reg.b' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mk-reg.b'\"
else
echo shar: Extracting \"'mk-reg.b'\" \(2374 characters\)
sed "s/^X//" >'mk-reg.b' <<'END_OF_FILE'
X
X# mk-reg - make registers.i file
X#
X# $Header: mk-reg.b,v 1.4 89/09/20 12:21:49 howard Exp $
X#
X# Copyright 1989 Howard Lee Gayle
X# This file is written in the ISO 8859/1 character set.
X#
X# This program is free software; you can redistribute it and/or modify
X# it under the terms of the GNU General Public License version 1,
X# as published by the Free Software Foundation.
X#
X# This program is distributed in the hope that it will be useful,
X# but WITHOUT ANY WARRANTY; without even the implied warranty of
X# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X# GNU General Public License for more details.
X#
X# You should have received a copy of the GNU General Public License
X# along with this program; if not, write to the Free Software
X# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X#
X# Shell variables:
X# a - output string
X# b - output string
X# c - .c temporary file
X# i - loop counter
X# m - max number of registers
X# r - number of registers to try
X# o - old .s file
X# s - .s file
X# u - usage string
X
XCMDNAME=mk-reg
Xexport CMDNAME
Xu="Usage: $CMDNAME c-compiler registers.i"
Xc=reg$$.c
Xm=32
Xo=reg$$.sO
Xr=0
Xs=reg$$.s
Xif [ $# -ne 2 ]
Xthen
X echo "$u" 1>&2
X exit 1
Xfi
Xwhile [ $r -le $m ]
Xdo
X echo "$r register(s)" 1>&2
X echo 't(){' > $c
X i=1
X while [ $i -le $m ]
X do
X if [ $i -le $r ]
X then
X a='register '
X else
X a=
X fi
X if [ 0 -eq `expr $i % 2` ]
X then
X b='char *'
X else
X b='int '
X fi
X echo "$a${b}v$i;" >> $c
X i=`expr $i + 1`
X done
X echo 'return(' >> $c
X i=1
X while [ $i -le $m ]
X do
X if [ 0 -eq `expr $i % 2` ]
X then
X b='*'
X else
X b=
X fi
X echo "${b}v$i +" >> $c
X i=`expr $i + 1`
X done
X echo '0);}' >> $c
X $1 -S $c
X if [ 0 -eq $r ]
X then
X mv -f $s $o
X elif cmp -s $s $o
X then
X break
X else
X mv -f $s $o
X fi
X r=`expr $r + 1`
Xdone
Xecho '/*' > $2
Xecho ' * registers.i - portable allocation of register variables' >> $2
Xecho ' *' >> $2
Xecho ' * This file was generated automatically by:' >> $2
Xecho ' * $Header: mk-reg.b,v 1.4 89/09/20 12:21:49 howard Exp $' >> $2
Xecho ' */' >> $2
Xecho '' >> $2
Xi=1
Xwhile [ $i -le $m ]
Xdo
X if [ $i -lt $r ]
X then
X a=' register'
X else
X a=
X fi
X echo "#define R$i$a" >> $2
X i=`expr $i + 1`
Xdone
Xrm -f $c $o $s
END_OF_FILE
if test 2374 -ne `wc -c <'mk-reg.b'`; then
echo shar: \"'mk-reg.b'\" unpacked with wrong size!
fi
# end of 'mk-reg.b'
fi
if test -f 'mopenp.3' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mopenp.3'\"
else
echo shar: Extracting \"'mopenp.3'\" \(2401 characters\)
sed "s/^X//" >'mopenp.3' <<'END_OF_FILE'
X.\" $Header: mopenp.3,v 1.1 89/08/13 16:20:15 howard Exp $
X.TH MOPENP "3 -lhoward" "$Revision: 1.1 $" "Howard\'s C library" "Howard\'s C library"
X.SH NAME
Xmopenp \- search path for file and open it
X.SH SYNOPSIS
X.nf
X.BR "#include <" stdio.h ">"
X.BR "#include <" howard/port.h ">"
X.BR "#include <" howard/malf.h ">"
X.fi
X.LP
XstreamT mopenp (
X.IR path ,
X.IR separator ,
X.IR simple ,
X.IR suffix ,
X.IR mode ,
X.IR buffer ,
X.IR length )
X.nf
X.RI "bStrT " path ;
X.RI "rcharT " separator ;
X.RI "bStrT " simple ;
X.RI "bStrT " suffix ;
X.RI "bStrT " mode ;
X.RI "bStrT " buffer ;
X.BI "unsigned " length;
X.SH COPYRIGHT
XCopyright \(co 1989 Howard Lee Gayle
X.SH DESCRIPTION
X.I Mopenp
Xsearches the directory search path in
X.I path
Xfor a file named
X.I simple
Xwith suffix
X.IR suffix ,
Xopens the file by calling
X.IR fopen (3S)
Xwith the given
X.IR mode ,
Xthen returns the stream.
XThe directories in the search path are separated by the
X.I separator
Xcharacter.
XEach directory may end in "/", but need not do so.
XThe full file name is assembled in the area to which
X.I buffer
Xpoints.
X.I Length
Xgives the number of bytes in this area.
X.SH RETURNS
XOn success, the stream corresponding to the opened file.
XOn error,
X.I mopenp
Xcalls
X.IR malf1 ,
Xso there is no return.
X.SH EXAMPLE
XThis very contrived example searches first /usr/local/include,
Xthen /usr/include for stdio.h, and opens it for reading.
X.nf
X streamT is;
X byteT fnb[MFILE];
X is = mopenp (S("/usr/local/include:/usr/include"), ':',
X S("stdio"), S(".h"), S("r"), fnb, MFILE);
X.fi
X.SH "SEE ALSO"
X.IR fopen (3S),
X.IR malf "(3 -lhoward)."
X.SH LICENSE
XThis program is free software; you can redistribute it and/or modify
Xit under the terms of the GNU General Public License version 1,
Xas published by the Free Software Foundation.
X.PP
XThis program is distributed in the hope that it will be useful,
Xbut WITHOUT ANY WARRANTY; without even the implied warranty of
XMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
XGNU General Public License for more details.
X.PP
XYou should have received a copy of the GNU General Public License
Xalong with this program; if not, write to the Free Software
XFoundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X.SH AUTHOR
XHoward Gayle,
XTN/ETX/T/BG,
XEricsson Telecom AB,
XS-126 25 Stockholm,
XSweden,
Xhoward at ericsson.se,
Xuunet!ericsson.se!howard,
XPhone: +46 8 719 5565,
XFAX: +46 8 719 9598,
XTelex: 14910 ERIC S
END_OF_FILE
if test 2401 -ne `wc -c <'mopenp.3'`; then
echo shar: \"'mopenp.3'\" unpacked with wrong size!
fi
# end of 'mopenp.3'
fi
if test -f 'mra2d.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mra2d.c'\"
else
echo shar: Extracting \"'mra2d.c'\" \(2457 characters\)
sed "s/^X//" >'mra2d.c' <<'END_OF_FILE'
X/*
X * mra2d - convert Ada-syntax real literal to double, check range
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: mra2d.c,v 1.5 89/08/12 10:43:12 howard Exp $");
X
X#include <limits.h>
X#include <howard/a2.h>
X#include <howard/malf.h>
X#include <howard/registers.i>
X
XPUBLIC double mra2d (str, lim, synok, fn, lo, hi, end)
XbStrT str; /* Input string.*/
XbStrT lim; /* Don't pass this.*/
XboolT synok; /* Accept non-fatal syntax errors.*/
XbStrT fn; /* Field name, for error messages.*/
Xdouble lo; /* Minimum legal value.*/
Xdouble hi; /* Maximum legal value.*/
XbStrT *end; /* End pointer stored here.*/
X
X/* Function:
X *
X * Algorithm:
X * Call ma2d() then do a range check.
X * Returns:
X *
X * Notes:
X *
X */
X{
Xdouble d; /* Returned by ma2d().*/
X
Xd = ma2d (str, lim, synok, fn, end);
Xif ((d < lo) || (d > hi))
X malf1 ("%s [%.*s] not in range [%G, %G]", fn,
X (NULBSTR == lim) ? INT_MAX : lim - str, str, lo, hi);
Xreturn (d);
X}
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: mra2d.c,v 1.5 89/08/12 10:43:12 howard Exp $");
XUSAGE ("real-numeric-literal lo hi");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
XbStrT end; /* End of string.*/
Xdouble d; /* Returned by mra2d().*/
X
Xif (4 != argc) usage();
Xd = mra2d (argv[1], NULBSTR, TRUE, S("real-numeric-literal"),
X ma2d (argv[2], NULBSTR, FALSE, S("lo"), (bStrT *) NULL),
X ma2d (argv[3], NULBSTR, FALSE, S("hi"), (bStrT *) NULL),
X &end);
XPRINTF ("%G\t%s\n", d, end);
Xmfflush (stdout, "Standard Output");
Xexit (SUCCESS);
X
X#ifdef lint
Xreturn (SUCCESS);
X#endif
X}
X#endif
END_OF_FILE
if test 2457 -ne `wc -c <'mra2d.c'`; then
echo shar: \"'mra2d.c'\" unpacked with wrong size!
fi
# end of 'mra2d.c'
fi
if test -f 'mra2i.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mra2i.c'\"
else
echo shar: Extracting \"'mra2i.c'\" \(2470 characters\)
sed "s/^X//" >'mra2i.c' <<'END_OF_FILE'
X/*
X * mra2i - convert Ada-syntax integer literal to int, check range
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: mra2i.c,v 1.5 89/08/13 07:35:40 howard Exp $");
X
X#include <limits.h>
X#include <howard/a2.h>
X#include <howard/malf.h>
X#include <howard/registers.i>
X
XPUBLIC int mra2i (str, lim, synok, fn, lo, hi, end)
XbStrT str; /* Input string.*/
XbStrT lim; /* Don't pass this.*/
XboolT synok; /* Accept non-fatal syntax errors.*/
XbStrT fn; /* Field name, for error messages.*/
Xint lo; /* Minimum legal value.*/
Xint hi; /* Maximum legal value.*/
XbStrT *end; /* End pointer stored here.*/
X
X/* Function:
X *
X * Algorithm:
X * Call ma2i() then range check.
X * Returns:
X *
X * Notes:
X *
X */
X{
XR1 int i; /* Returned by ma2i().*/
X
Xi = ma2i (str, lim, synok, fn, end);
Xif ((i < lo) || (i > hi))
X malf1 ("%s [%.*s] not in range [%d, %d]", fn,
X (NULBSTR == lim) ? INT_MAX : lim - str, str, lo, hi);
Xreturn (i);
X}
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: mra2i.c,v 1.5 89/08/13 07:35:40 howard Exp $");
XUSAGE ("integer-numeric-literal lo hi");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
XbStrT end; /* End of string.*/
Xint i; /* Returned by mra2i().*/
X
Xif (4 != argc) usage();
Xi = mra2i (argv[1], NULBSTR, TRUE, S("integer-numeric-literal"),
X ma2i (argv[2], NULBSTR, FALSE, S("lo"), (bStrT *) NULL),
X ma2i (argv[3], NULBSTR, FALSE, S("hi"), (bStrT *) NULL),
X &end);
XPRINTF ("8#%o#\t10#%d#\t16#%X#\t%s\n", i, i, i, end);
Xmfflush (stdout, "Standard Output");
Xexit (SUCCESS);
X
X#ifdef lint
Xreturn (SUCCESS);
X#endif
X}
X#endif
END_OF_FILE
if test 2470 -ne `wc -c <'mra2i.c'`; then
echo shar: \"'mra2i.c'\" unpacked with wrong size!
fi
# end of 'mra2i.c'
fi
if test -f 'mra2l.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mra2l.c'\"
else
echo shar: Extracting \"'mra2l.c'\" \(2476 characters\)
sed "s/^X//" >'mra2l.c' <<'END_OF_FILE'
X/*
X * mra2u - convert Ada-syntax integer literal to long, check range
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: mra2l.c,v 1.2 89/08/13 08:05:51 howard Exp $");
X
X#include <limits.h>
X#include <howard/a2.h>
X#include <howard/malf.h>
X#include <howard/registers.i>
X
XPUBLIC long mra2l (str, lim, synok, fn, lo, hi, end)
XbStrT str; /* Input string.*/
XbStrT lim; /* Don't pass this.*/
XboolT synok; /* Accept non-fatal syntax errors.*/
XbStrT fn; /* Field name, for error messages.*/
Xlong lo; /* Minimum legal value.*/
Xlong hi; /* Maximum legal value.*/
XbStrT *end; /* End pointer stored here.*/
X
X/* Function:
X *
X * Algorithm:
X * Call ma2l() then range check.
X * Returns:
X *
X * Notes:
X *
X */
X{
Xlong l; /* Returned by ma2l().*/
X
Xl = ma2l (str, lim, synok, fn, end);
Xif ((l < lo) || (l > hi))
X malf1 ("%s [%.*s] not in range [%ld, %ld]", fn,
X (NULBSTR == lim) ? INT_MAX : lim - str, str, lo, hi);
Xreturn (l);
X}
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: mra2l.c,v 1.2 89/08/13 08:05:51 howard Exp $");
XUSAGE ("integer-numeric-literal lo hi");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
XbStrT end; /* End of string.*/
Xlong l; /* Returned by mra2l().*/
X
Xif (4 != argc) usage();
Xl = mra2l (argv[1], NULBSTR, TRUE, S("integer-numeric-literal"),
X ma2l (argv[2], NULBSTR, FALSE, S("lo"), (bStrT *) NULL),
X ma2l (argv[3], NULBSTR, FALSE, S("hi"), (bStrT *) NULL),
X &end);
XPRINTF ("8#%lo#\t10#%ld#\t16#%lX#\t%s\n", l, l, l, end);
Xmfflush (stdout, "Standard Output");
Xexit (SUCCESS);
X
X#ifdef lint
Xreturn (SUCCESS);
X#endif
X}
X#endif
END_OF_FILE
if test 2476 -ne `wc -c <'mra2l.c'`; then
echo shar: \"'mra2l.c'\" unpacked with wrong size!
fi
# end of 'mra2l.c'
fi
if test -f 'mra2u.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mra2u.c'\"
else
echo shar: Extracting \"'mra2u.c'\" \(2511 characters\)
sed "s/^X//" >'mra2u.c' <<'END_OF_FILE'
X/*
X * mra2u - convert Ada-syntax integer literal to unsigned, check range
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: mra2u.c,v 1.4 89/08/13 07:46:02 howard Exp $");
X
X#include <limits.h>
X#include <howard/a2.h>
X#include <howard/malf.h>
X#include <howard/registers.i>
X
XPUBLIC unsigned mra2u (str, lim, synok, fn, lo, hi, end)
XbStrT str; /* Input string.*/
XbStrT lim; /* Don't pass this.*/
XboolT synok; /* Accept non-fatal syntax errors.*/
XbStrT fn; /* Field name, for error messages.*/
Xunsigned lo; /* Minimum legal value.*/
Xunsigned hi; /* Maximum legal value.*/
XbStrT *end; /* End pointer stored here.*/
X
X/* Function:
X *
X * Algorithm:
X * Call ma2u() then range check.
X * Returns:
X *
X * Notes:
X *
X */
X{
XR1 unsigned u; /* Returned by ma2u().*/
X
Xu = ma2u (str, lim, synok, fn, end);
Xif ((u < lo) || (u > hi))
X malf1 ("%s [%.*s] not in range [%u, %u]", fn,
X (NULBSTR == lim) ? INT_MAX : lim - str, str, lo, hi);
Xreturn (u);
X}
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: mra2u.c,v 1.4 89/08/13 07:46:02 howard Exp $");
XUSAGE ("integer-numeric-literal lo hi");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
XbStrT end; /* End of string.*/
Xunsigned u; /* Returned by mra2u().*/
X
Xif (4 != argc) usage();
Xu = mra2u (argv[1], NULBSTR, TRUE, S("integer-numeric-literal"),
X ma2u (argv[2], NULBSTR, FALSE, S("lo"), (bStrT *) NULL),
X ma2u (argv[3], NULBSTR, FALSE, S("hi"), (bStrT *) NULL),
X &end);
XPRINTF ("8#%o#\t10#%u#\t16#%X#\t%s\n", u, u, u, end);
Xmfflush (stdout, "Standard Output");
Xexit (SUCCESS);
X
X#ifdef lint
Xreturn (SUCCESS);
X#endif
X}
X#endif
END_OF_FILE
if test 2511 -ne `wc -c <'mra2u.c'`; then
echo shar: \"'mra2u.c'\" unpacked with wrong size!
fi
# end of 'mra2u.c'
fi
if test -f 'mra2ul.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mra2ul.c'\"
else
echo shar: Extracting \"'mra2ul.c'\" \(2508 characters\)
sed "s/^X//" >'mra2ul.c' <<'END_OF_FILE'
X/*
X * mra2u - convert Ada-syntax integer literal to unsigned long, check range
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: mra2ul.c,v 1.2 89/08/13 08:20:50 howard Exp $");
X
X#include <limits.h>
X#include <howard/a2.h>
X#include <howard/malf.h>
X#include <howard/registers.i>
X
XPUBLIC ulongT mra2ul (str, lim, synok, fn, lo, hi, end)
XbStrT str; /* Input string.*/
XbStrT lim; /* Don't pass this.*/
XboolT synok; /* Accept non-fatal syntax errors.*/
XbStrT fn; /* Field name, for error messages.*/
XulongT lo; /* Minimum legal value.*/
XulongT hi; /* Maximum legal value.*/
XbStrT *end; /* End pointer stored here.*/
X
X/* Function:
X *
X * Algorithm:
X * Call ma2ul() then range check.
X * Returns:
X *
X * Notes:
X *
X */
X{
XulongT l; /* Returned by ma2ul().*/
X
Xl = ma2ul (str, lim, synok, fn, end);
Xif ((l < lo) || (l > hi))
X malf1 ("%s [%.*s] not in range [%lu, %lu]", fn,
X (NULBSTR == lim) ? INT_MAX : lim - str, str, lo, hi);
Xreturn (l);
X}
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: mra2ul.c,v 1.2 89/08/13 08:20:50 howard Exp $");
XUSAGE ("integer-numeric-literal lo hi");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
XbStrT end; /* End of string.*/
XulongT l; /* Returned by mra2ul().*/
X
Xif (4 != argc) usage();
Xl = mra2ul (argv[1], NULBSTR, TRUE, S("integer-numeric-literal"),
X ma2ul (argv[2], NULBSTR, FALSE, S("lo"), (bStrT *) NULL),
X ma2ul (argv[3], NULBSTR, FALSE, S("hi"), (bStrT *) NULL),
X &end);
XPRINTF ("8#%lo#\t10#%lu#\t16#%lX#\t%s\n", l, l, l, end);
Xmfflush (stdout, "Standard Output");
Xexit (SUCCESS);
X
X#ifdef lint
Xreturn (SUCCESS);
X#endif
X}
X#endif
END_OF_FILE
if test 2508 -ne `wc -c <'mra2ul.c'`; then
echo shar: \"'mra2ul.c'\" unpacked with wrong size!
fi
# end of 'mra2ul.c'
fi
if test -f 'prefxi.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'prefxi.c'\"
else
echo shar: Extracting \"'prefxi.c'\" \(2330 characters\)
sed "s/^X//" >'prefxi.c' <<'END_OF_FILE'
X/*
X * prefxi - Test if one string is prefix of another. Ignore case.
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: prefxi.c,v 1.1 89/08/19 10:31:17 howard Exp $");
X
X#include <ctype.h>
X#include <howard/malf.h>
X#include <howard/registers.i>
X
XPUBLIC bStrT prefxi (p, s)
XR1 bStrT p; /* The candidate prefix.*/
XR2 bStrT s; /* The string to test.*/
X
X/* Function:
X * Test if p is a prefix of s.
X * Algorithm:
X * Compare the strings character by character.
X * Returns:
X * If p is a prefix of s, a pointer to the character in s
X * just after the last character of the prefix.
X * If p is not a prefix of s, NULBSTR.
X * Notes:
X *
X */
X{
XR3 rcharT a; /* Current character from p.*/
XR4 rcharT b; /* Current character from s.*/
X
Xif (NULBSTR == p) malf1 ("prefxi: NULL prefix");
Xif (NULBSTR == s) malf1 ("prefxi: NULL string");
Xfor (;;)
X {
X a = B(*p);
X if (EOS == a) return (s);
X if (isascii (a) && isupper (a)) a = tolower (a);
X b = B(*s);
X if (isascii (b) && isupper (b)) b = tolower (b);
X if (a != b) return (NULBSTR);
X ++p;
X ++s;
X }
X}
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: prefxi.c,v 1.1 89/08/19 10:31:17 howard Exp $");
XUSAGE ("prefix string");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
XbStrT r; /* Returned by prefxi().*/
X
Xif (3 != argc) usage();
Xr = prefxi (argv[1], argv[2]);
Xif (NULBSTR != r) PUTS (r);
Xmfflush (stdout, S("Standard Output"));
Xexit (SUCCESS);
X
X#ifdef lint
Xreturn (SUCCESS);
X#endif
X}
X#endif
END_OF_FILE
if test 2330 -ne `wc -c <'prefxi.c'`; then
echo shar: \"'prefxi.c'\" unpacked with wrong size!
fi
# end of 'prefxi.c'
fi
if test -f 'usage.h' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'usage.h'\"
else
echo shar: Extracting \"'usage.h'\" \(268 characters\)
sed "s/^X//" >'usage.h' <<'END_OF_FILE'
X/* usage.h - For usage() funtion to print usage string and exit.
X *
X * $Header: usage.h,v 1.1 88/08/21 09:02:44 howard Exp $
X *
X * Prerequisites: howard/port.h, howard/version.h.
X */
X#define USAGE(x) bStrT _usage = ((bStrT)(x)) /* Usage string.*/
XPUBLIC void usage();
END_OF_FILE
if test 268 -ne `wc -c <'usage.h'`; then
echo shar: \"'usage.h'\" unpacked with wrong size!
fi
# end of 'usage.h'
fi
if test -f 'userfn.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'userfn.c'\"
else
echo shar: Extracting \"'userfn.c'\" \(2371 characters\)
sed "s/^X//" >'userfn.c' <<'END_OF_FILE'
X/*
X * userfn - get user's full name
X */
X
X#ifndef lint
Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
X#endif lint
X
X/*
X * This program is free software; you can redistribute it and/or modify
X * it under the terms of the GNU General Public License version 1,
X * as published by the Free Software Foundation.
X *
X * This program is distributed in the hope that it will be useful,
X * but WITHOUT ANY WARRANTY; without even the implied warranty of
X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
X * GNU General Public License for more details.
X *
X * You should have received a copy of the GNU General Public License
X * along with this program; if not, write to the Free Software
X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
X */
X
X#include <stdio.h>
X#include <howard/port.h>
X#include <howard/version.h>
X
XMODVER ("@(#)$Header: userfn.c,v 1.2 89/08/20 11:30:07 howard Exp $");
X
X#include <pwd.h>
X#include <howard/malf.h>
X#include <howard/registers.i>
X
XPUBLIC bStrT userfn (fnb)
XR3 bStrT fnb; /* Store full name here.*/
X
X/* Function:
X *
X * Algorithm:
X * Try getlogin() for the login name. Otherwise use the real user ID
X * to get the password entry. Call getpwf().
X * Returns:
X *
X * Notes:
X * 1) The idea with getlogin() is that sometimes several lines in
X * the password file have the same UID. If getlogin() comes
X * back with a login name, then getpwnam() should return the
X * corresponding password entry.
X */
X{
XR1 cStrT ln; /* Login name of user.*/
XR2 struct passwd *pwp; /* Returned by getpwuid(). See getpwent(3).*/
Xextern cStrT getlogin(); /* (3).*/
Xextern int getuid(); /* (2).*/
X
Xif (NULBSTR == fnb) malf1 ("userfn: no buffer");
Xln = getlogin();
Xpwp = ((NULCSTR == ln) ? getpwuid (getuid()) : getpwnam (ln));
Xreturn ((((struct passwd *) NULL) == pwp) ? NULBSTR : getpwf (pwp, fnb));
X}
X
X#ifdef TEST
X#include <howard/usage.h>
X
XMAINVER ("@(#)$Header: userfn.c,v 1.2 89/08/20 11:30:07 howard Exp $");
XUSAGE ("");
X
XPUBLIC int main (argc, argv)
Xint argc; /* Number of arguments.*/
XbStrT *argv; /* Points to array of argument strings.*/
X{
XbyteT fnb[1024]; /* Full name buffer.*/
X
Xif (1 != argc) usage();
X(void) userfn (fnb);
XPUTS (fnb);
Xmfflush (stdout, S("Standard Output"));
Xexit (SUCCESS);
X
X#ifdef lint
Xreturn (SUCCESS);
X#endif
X}
X#endif
END_OF_FILE
if test 2371 -ne `wc -c <'userfn.c'`; then
echo shar: \"'userfn.c'\" unpacked with wrong size!
fi
# end of 'userfn.c'
fi
echo shar: End of archive 6 \(of 9\).
cp /dev/null ark6isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 9 archives.
rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0
More information about the Comp.sources.misc
mailing list