Path: utzoo!attcan!uunet!tut.cis.ohio-state.edu!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!xanth!cs.odu.edu!Amiga-Request From: Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator) Newsgroups: comp.sources.amiga Subject: v90i202: env 1.1 - print out all environment variables, Part01/01 Message-ID: <13080@xanth.cs.odu.edu> Date: 8 Jul 90 15:36:52 GMT Sender: tadguy@cs.odu.edu Reply-To: peterc@softway.sw.oz.au (Peter Chubb) Lines: 249 Approved: tadguy@cs.odu.edu (Tad Guy) X-Mail-Submissions-To: Amiga@cs.odu.edu X-Post-Discussions-To: comp.sys.amiga Submitted-by: peterc@softway.sw.oz.au (Peter Chubb) Posting-number: Volume 90, Issue 202 Archive-name: unix/env-1.1/part01 ENV is a utility to print out the values of all 1.3 Environment variables. It has been optimised for size, and takes less than 488 bytes. Moreover, unlike other routines I have seen for handling environment variables, it copes with variables with embedded newlines. #!/bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'Makefile' <<'END_OF_FILE' X# X# Makefile for env X# X# $Header: local:src/MINE/cmd/env/RCS/Makefile,v 1.2 90/05/26 12:55:30 peterc Exp $ X# X# $Log: Makefile,v $ X# Revision 1.2 90/05/26 12:55:30 peterc X# Added RCS goo X# X# X# Xenv: env.o X blink from env.o to env nd X protect env +p X Xenv.o: env.c X lc -cus -v -O env.c X X Xinstall: env X copy env local:bin X Xclean: X rm -f env.o X Xclobber: clean X rm -f env X X.DEFAULT: X co $@ END_OF_FILE if test 389 -ne `wc -c <'Makefile'`; then echo shar: \"'Makefile'\" unpacked with wrong size! fi # end of 'Makefile' fi if test -f 'env.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'env.c'\" else echo shar: Extracting \"'env.c'\" \(1689 characters\) sed "s/^X//" >'env.c' <<'END_OF_FILE' X/************************************************************************ X * env.c -- print all the environment * X * * X * Copyright 1990 Peter Chubb * X * All rights reserved * X * * X ************************************************************************/ X Xstatic char RCSID[] = "$Id: env.c,v 1.1 90/05/26 12:46:48 peterc Exp $"; X X/* X * X * $Log: env.c,v $ X * Revision 1.1 90/05/26 12:46:48 peterc X * Initial revision X * X * X */ X X# include X# include X# include X# include X X# define ENVDIR "ENV:" X# define BUFSIZ 512 X Xvoid X_main() X{ X BPTR lck; X BPTR Op; X BPTR Ep; X struct FileInfoBlock *FB = AllocMem(sizeof(struct FileInfoBlock), 0); X long Status = 0; X register char *p; X register char *q; X int len; X struct DosLibrary *DOSBase; X char *buf = AllocMem(BUFSIZ, 0); X X if (!(DOSBase = (struct DosLibrary *) OpenLibrary("dos.library", 0))) X return; X X Op = Output(); X X lck = Lock(ENVDIR, SHARED_LOCK); X if (lck) X { X Status = Examine(lck, FB); X if (Status) X while (ExNext(lck, FB)) X { X if (FB->fib_EntryType >= 0) X continue; X Write(Op, FB->fib_FileName, strlen(FB->fib_FileName)); X Write(Op, "=", 1); X for (p = ENVDIR, q = buf; *p; *q++ = *p++) X ; X for (p = FB->fib_FileName; *p; *q++ = *p++) X ; X *q = '\0'; X X if ((Ep = Open(buf, MODE_OLDFILE)) != (BPTR)0) X { X if ((len = Read(Ep, buf, BUFSIZ)) > 0) X { X Write(Op, buf, len); X } X Close(Ep); X } X Write(Op, "\n", 1); X } X UnLock(lck); X } X X CloseLibrary((struct Library *)DOSBase); X FreeMem(buf, BUFSIZ); X FreeMem(FB, sizeof (*FB)); X} END_OF_FILE if test 1689 -ne `wc -c <'env.c'`; then echo shar: \"'env.c'\" unpacked with wrong size! fi # end of 'env.c' fi if test -f 'env.doc' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'env.doc'\" else echo shar: Extracting \"'env.doc'\" \(1311 characters\) sed "s/^X//" >'env.doc' <<'END_OF_FILE' X ENV -- print out environment variables. X X ENV is a 484 byte program that prints out the values of all the X 1.3 Environment variables. It is fully reentrant (i.e., X can be made resident). X XTo use, just type X env X X The result is a list of environment variables in the form X NAME=Value, one per line. X XBUGS: X Environment variables whose values are greater than 511 bytes X long are truncated at 511 bytes. X XAUTHOR: X Peter Chubb (peterc@softway.oz.au) X X X Copyright 1990 Peter Chubb X All rights reserved. X This program and its associated documentation may not be X distributed for profit. It may be distributed provided X a) no charge is made other than for reasonable copying and X media expenses, X b) no change is made to the source, documentation or binary, X that is not clearly marked as being a change, and X c) all files are provided. These comprise: X env.doc -- this documentation file X env -- the program binary X Makefile-- to make the program X env.c -- the program source. X X This program is not warranted, or guaranteed. X You get exactly what you paid for -- a copy of the program to X do as you wish with. If it crashes your machine, writes rude X letters to your spouse, or explodes in your face ... caveat X emptor! However, to the best of my knowledge and belief it X works as advertised. END_OF_FILE if test 1311 -ne `wc -c <'env.doc'`; then echo shar: \"'env.doc'\" unpacked with wrong size! fi # end of 'env.doc' fi if test -f 'env.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'env.uu'\" else echo shar: Extracting \"'env.uu'\" \(711 characters\) sed "s/^X//" >'env.uu' <<'END_OF_FILE' Xbegin 500 env XM```#\P`````````"``````````$```!@````#````^D```!@3E7_\$CG-S`@Y XM/````01R`"QX``1.KO\Z)$`@2B](`"@@/````@!R`$ZN_SHO0``D0_H!.'``[ XM3J[]V"9`($LO2``@(`MG``$<)&\`*"9(+$M.KO_$+@!#^@$>(@ET_DZN_ZPL! XM`$J&9P``UB(&)`I.KO^:2H!G``#`8```K"`J`'A*@&H``*(D;P`H)F\`($'JH XM``@B2$H99OQ3B9/(+T@`'"(')`@F"2Q+3J[_T"('0_H`S"0)=@%.KO_01_H`I XMNB1O`"1@`A3;2A-F^B9O`!Q@`A3;2A-F^D(2)F\`("1O`"0B"BQ+)#P```/MQ XM3J[_XBH`2H5G("(%)`HF/````@!.KO_62H!O""(')@!.KO_0(@5.KO_<(@=!J XM^@!F)`AV`4ZN_]`D;P`H(@8D"BQ+3J[_E$J`9@#_2"(&+$M.KO^F(DLL>``$Q XM3J[^8B)O`"0@/````@!.KO\N(DH@/````01.KO\N3-\,[$Y=3G5D;W,N;&EB* XM0!%3E8Z```]``H````#\@```^H````,)$ED.B!E;G8N8RQV(#$N,2`Y& XB,"\P-2\R-B`Q,CHT-CHT."!P971E. Mail comments to the moderator at . Post requests for sources, and general discussion to comp.sys.amiga.