broehl@watale.UUCP (Bernie Roehl) (09/04/86)
These programs will allow you to manipulate PATH and Dpath for a PC etc etc. PUSHENV - push something on the start of the variable POPENV - pop something off the start of the variable ADDENV - add something to the end of the variable REMENV - remove something from the end of the variable # This is a shell archive. Remove anything before this line, # then unpack it by saving it in a file and typing "sh file". # # Wrapped by watale!broehl on Thu Sep 4 14:36:25 EDT 1986 # Contents: addenv.c popenv.c pushenv.c remenv.c echo x - addenv.c sed 's/^@//' > "addenv.c" <<'@//E*O*F addenv.c//' #include <stdio.h> #include <stdlib.h> #include <direct.h> #include "getargs.h" #include "masdos.h" int Arg_Debug = 0; ARG Argtab[] = { { 'z', ARG_FBOOLEAN, &Arg_Debug, "Debug Mode" } }; #define ARG_TABSIZE ( sizeof(Argtab) / sizeof(ARG) ) void usage() { fprintf( stderr, "Usage: AddEnv [%cZ] env_var string_to_add\n", ARG_Switch ); fprintf( stderr, "\n"); fprintf( stderr, "Set the environment variable SWITCHAR to the character\n"); fprintf( stderr, "you wish to use for the Switch Character\n"); fprintf( stderr, "\n" ); fprintf( stderr, "Case of the command line switches %s important\n", ARG_ICase ? "is not" : "is" ); fprintf( stderr, "\n" ); fprintf( stderr, "(C) 1986 Michael A. Shiels\n"); fprintf( stderr, "\n" ); } main( argc, argv ) int argc; char *argv[]; { char ndir[1000], *ndirs = ndir; char *dirs; argc = getargs( argc, argv, Argtab, ARG_TABSIZE ); ctlc(); if( argc != 3 ) { usage(); exit(1); } dirs = getenv(argv[1]); if( Arg_Debug ) fprintf( stderr, "Current %s=%s\n", argv[1], getenv(argv[1]) ); sprintf( ndirs, "%s=", argv[1] ); if( dirs ) { strcat( ndirs, dirs ); strcat( ndirs, ";" ); } strcat( ndirs, argv[2] ); putdenv(ndir); exit(); } @//E*O*F addenv.c// chmod u=rw,g=r,o=r addenv.c echo x - popenv.c sed 's/^@//' > "popenv.c" <<'@//E*O*F popenv.c//' #include <stdio.h> #include <stdlib.h> #include <direct.h> #include "getargs.h" #include "masdos.h" int Arg_Debug = 0; ARG Argtab[] = { { 'z', ARG_FBOOLEAN, &Arg_Debug, "Debug Mode" } }; #define ARG_TABSIZE ( sizeof(Argtab) / sizeof(ARG) ) void usage() { fprintf( stderr, "Usage: Popenv [%cZ] env_var\n", ARG_Switch ); fprintf( stderr, "\n"); fprintf( stderr, "Set the environment variable SWITCHAR to the character\n"); fprintf( stderr, "you wish to use for the Switch Character\n"); fprintf( stderr, "\n" ); fprintf( stderr, "Case of the command line switches %s important\n", ARG_ICase ? "is not" : "is" ); fprintf( stderr, "\n" ); fprintf( stderr, "(C) 1986 Michael A. Shiels\n"); fprintf( stderr, "\n" ); } main( argc, argv ) int argc; char *argv[]; { char ndir[1000], *ndirs = ndir; char dir[1000], *dirs, *p, *dira, *dirb; argc = getargs( argc, argv, Argtab, ARG_TABSIZE ); ctlc(); if( argc != 2 ) { usage(); exit(1); } p = getenv( argv[1] ); strcpy( (dirs = dir), p ); if( Arg_Debug ) fprintf( stderr, "Current %s=%s\n", argv[1], dirs ); dira = next( &dirs, ';', -1 ); if( dira == '\0' ) { fprintf( stderr, "PopEnv: Nothing to Pop.\n" ); exit(1); } dirb = next( &dirs, '\0', -1 ); if( dirb ) { sprintf( ndirs, "%s=", argv[1] ); strcat( ndirs, dirb ); } else sprintf( ndirs, "%s", argv[1] ); putdenv(ndir); exit(); } @//E*O*F popenv.c// chmod u=rw,g=r,o=r popenv.c echo x - pushenv.c sed 's/^@//' > "pushenv.c" <<'@//E*O*F pushenv.c//' #include <stdio.h> #include <stdlib.h> #include <direct.h> #include "getargs.h" #include "masdos.h" int Arg_Debug = 0; ARG Argtab[] = { { 'z', ARG_FBOOLEAN, &Arg_Debug, "Debug Mode" } }; #define ARG_TABSIZE ( sizeof(Argtab) / sizeof(ARG) ) void usage() { fprintf( stderr, "Usage: PushEnv [%cZ] env_var string_to_add\n", ARG_Switch ); fprintf( stderr, "\n"); fprintf( stderr, "Set the environment variable SWITCHAR to the character\n"); fprintf( stderr, "you wish to use for the Switch Character\n"); fprintf( stderr, "\n" ); fprintf( stderr, "Case of the command line switches %s important\n", ARG_ICase ? "is not" : "is" ); fprintf( stderr, "\n" ); fprintf( stderr, "(C) 1986 Michael A. Shiels\n"); fprintf( stderr, "\n" ); } main( argc, argv ) int argc; char *argv[]; { char ndir[1000], *ndirs = ndir; char *dirs; argc = getargs( argc, argv, Argtab, ARG_TABSIZE ); ctlc(); if( argc != 3 ) { usage(); exit(1); } dirs = getenv(argv[1]); if( Arg_Debug ) fprintf( stderr, "Current %s=%s\n", argv[1], getenv(argv[1]) ); sprintf( ndirs, "%s=", argv[1] ); strcat( ndirs, argv[2] ); if( dirs ) { strcat( ndirs, ";" ); strcat( ndirs, dirs ); } putdenv(ndir); exit(); } @//E*O*F pushenv.c// chmod u=rw,g=r,o=r pushenv.c echo x - remenv.c sed 's/^@//' > "remenv.c" <<'@//E*O*F remenv.c//' #include <stdio.h> #include <stdlib.h> #include <direct.h> #include "getargs.h" #include "masdos.h" int Arg_Debug = 0; ARG Argtab[] = { { 'z', ARG_FBOOLEAN, &Arg_Debug, "Debug Mode" } }; #define ARG_TABSIZE ( sizeof(Argtab) / sizeof(ARG) ) void usage() { fprintf( stderr, "Usage: RemEnv [%cZ] env_var\n", ARG_Switch ); fprintf( stderr, "\n"); fprintf( stderr, "Set the environment variable SWITCHAR to the character\n"); fprintf( stderr, "you wish to use for the Switch Character\n"); fprintf( stderr, "\n" ); fprintf( stderr, "Case of the command line switches %s important\n", ARG_ICase ? "is not" : "is" ); fprintf( stderr, "\n" ); fprintf( stderr, "(C) 1986 Michael A. Shiels\n"); fprintf( stderr, "\n" ); } main( argc, argv ) int argc; char *argv[]; { char ndir[1000], *ndirs = ndir; char dir[1000], *dirs, *p, *dira, *dirb; argc = getargs( argc, argv, Argtab, ARG_TABSIZE ); ctlc(); if( argc != 2 ) { usage(); exit(1); } p = getenv( argv[1] ); strcpy( (dirs = dir), p ); if( Arg_Debug ) fprintf( stderr, "Current %s=%s\n", argv[1], dirs ); dirs = strrev( dirs ); dira = next( &dirs, ';', -1 ); if( dira ) dira = strrev( dira ); if( dira == '\0' ) { fprintf( stderr, "RemEnv: Nothing to Pop.\n" ); exit(1); } dirb = next( &dirs, '\0', -1 ); if( dirb) dirb = strrev( dirb ); if( dirb ) { sprintf( ndirs, "%s=", argv[1] ); strcat( ndirs, dirb ); } else sprintf( ndirs, "%s", argv[1] ); putdenv(ndir); exit(); } @//E*O*F remenv.c// chmod u=rw,g=r,o=r remenv.c echo Inspecting for damage in transit... temp=/tmp/shar$$; dtemp=/tmp/.shar$$ trap "rm -f $temp $dtemp; exit" 0 1 2 3 15 cat > $temp <<\!!! 61 177 1225 addenv.c 70 215 1400 popenv.c 61 177 1226 pushenv.c 75 235 1498 remenv.c 267 804 5349 total !!! wc addenv.c popenv.c pushenv.c remenv.c | sed 's=[^ ]*/==' | diff -b $temp - >$dtemp if [ -s $dtemp ] then echo "Ouch [diff of wc output]:" ; cat $dtemp else echo "No problems found." fi exit 0 -- Michael A. Shiels clyde-\ decvax-\\ ihnp4-\\\ +++-----> watmath!watale!broehl tektronix-/// ubc-vision-// utzoo-/