/* * Ausdrucken der Environment Variablen, die diesem Programm bergeben * wurden, mit Option zum rekursiven Drucken der Varialblen. * * 1.2.1989 Ralf Meister */ #include "stdio.h" #include "stdlib.h" /* Definition der Struktur der Basepage, nur die erforderlichen Eintrge */ typedef struct pd PD; struct pd { char res1[36]; /* Bereich, der uns nicht interessiert */ PD *p_parent; /* Zeiger auf Basepage des Vater's */ long res2; char *p_env; /* Zeiger auf Environment Bereich */ char res3[80]; char p_cmdline[128]; }; /* Drucke die Environment Variablen aus */ void printenv(ptr) register char *ptr; { puts("\nList of environment variables:"); while(*ptr) /* solange nicht '\0' */ { puts(ptr); /* String ausgeben */ while(*ptr++); /* Hinter das Stringende setzen */ } } void main(argc,argv) int argc; char *argv[]; { extern PD *_pbase; PD *pbase; int waitforkey=0,rekursiv=0; char *odata,option; int next; puts("PRINTENV v1.0 (C) Ralf Meister"); for(next=1;(odata=argopt(argc,argv,"",&next,&option))!=NULL;) switch(option) { case 'h': case 'H': puts("PRINTENV [-w][-h][-r]"); puts("print environment variables of this program"); puts(" -w wait for key before terminating"); puts(" -h print this tiny help message"); puts(" -r print environment variables recursive"); break; case 'w': case 'W': waitforkey=1; break; case 'r': case 'R': rekursiv=1; break; default : fputs("invalid option ",stderr); fputc(option,stderr); fputs("\n",stderr); break; } if(rekursiv) /* Rekursiv durch die Basepages gehen */ { pbase=_pbase; /* Anfangen bei 'unserer' Basepage */ while(pbase!=NULL) { printenv(pbase->p_env); pbase=pbase->p_parent; } } else /* Nur unsere Environment Variablen drucken */ printenv(_pbase->p_env); /* Ende des Programms, evtl. noch auf Tastendruck warten */ if(waitforkey) getch(); }