|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T f
Length: 5436 (0x153c) Types: TextFile Names: »flagdecode.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦this⟧ »EUUGD11/euug-87hel/sec8/sps/flagdecode.c«
# include "sps.h" # include "flags.h" /* FLAGDECODE - Looks at the argument list and sets various internal switches */ flagdecode ( argc, argv ) register int argc ; register char **argv ; { register char *chp ; union flaglist *plist ; union flaglist *tlist ; union flaglist *ulist ; static char usage[] = "sps - Unknown option %s\nUsage - sps [ -defgijkoqrsvwyABFNPSTUWZ ][ process|tty|user ] ...\n"; union flaglist *getflgsp() ; extern struct flags Flg ; plist = tlist = ulist = (union flaglist*)0 ; for ( argv++ ; --argc ; argv++ ) { chp = *argv ; while ( *chp ) switch ( *chp++ ) { case '-' : /* Separation character */ continue ; case 'd' : case 'D' : /* List disc orientated information */ Flg.flg_d = 1 ; Flg.flg_v = 0 ; continue ; case 'e' : case 'E' : /* List environment strings */ Flg.flg_e = 1 ; continue ; case 'f' : /* List the father's process id */ Flg.flg_f = 1 ; continue ; case 'g' : case 'G' : /* List the process group id */ Flg.flg_g = 1 ; continue ; case 'i' : case 'I' : /* Initialise (super-user only) */ Flg.flg_i = 1 ; continue ; case 'j' : case 'J' : /* The next argument specifies the name of the information file */ if ( argc <= 1 ) prexit( "sps - Name of an information file expected after `-j' flag\n" ) ; argc-- ; Flg.flg_j = *++argv ; continue ; case 'k' : case 'K' : /* Use a disc file such as /vmcore rather than /dev/{k}mem for accessing kernel data. The next argument specifies the file name. */ if ( argc <= 1 ) prexit( "sps - Name of a memory dump file expected after `-k' flag\n" ) ; argc-- ; Flg.flg_k = *++argv ; Flg.flg_o = 1 ; continue ; case 'l' : case 'v' : case 'L' : case 'V' : /* Verbose output */ Flg.flg_d = 0 ; Flg.flg_v = 1 ; continue ; case 'o' : case 'O' : /* Avoid looking at the swap device */ Flg.flg_o = 1 ; continue ; case 'q' : case 'Q' : /* Show only the user time, not the user + system times together. */ Flg.flg_q = 1 ; continue ; case 'r' : case 'R' : /* Repeat output every n seconds. The next argument specifies n which defaults to 5 if omitted. */ Flg.flg_r = 1 ; if ( argc > 1 ) { if ( **++argv >= '0' && **argv <= '9' ) { argc-- ; Flg.flg_rdelay = atoi( *argv ) ; continue ; } argv-- ; } Flg.flg_rdelay = 0 ; continue ; case 's' : /* Next argument specifies a symbol file rather than the default /vmunix. */ if ( argc <= 1 ) prexit( "sps - Name of a symbol file expected after `-s' flag\n" ) ; argc-- ; Flg.flg_s = *++argv ; continue ; case 'w' : /* Wide output, exceeding 79 columns */ Flg.flg_w = 1 ; continue ; case 'y' : case 'Y' : /* List current tty information */ Flg.flg_y = 1 ; continue ; case 'a' : case 'A' : /* List all processes */ Flg.flg_AZ = 1 ; Flg.flg_A = 1 ; continue ; case 'b' : case 'B' : /* List only busy processes */ Flg.flg_AZ = 1 ; Flg.flg_B = 1 ; continue ; case 'F' : /* List only foreground processes */ Flg.flg_AZ = 1 ; Flg.flg_F = 1 ; continue ; case 'n' : case 'N' : /* No processes, just the summary line*/ Flg.flg_AZ = 1 ; Flg.flg_N = 1 ; continue ; case 'p' : case 'P' : /* List only the given process ids */ Flg.flg_AZ = 1 ; Flg.flg_P = 1 ; if ( !plist ) plist=Flg.flg_Plist=getflgsp( argc ); while ( argc > 1 ) { if ( **++argv == '-' ) { --argv ; break ; } --argc ; plist->f_chp = *argv ; (++plist)->f_chp = (char*)0 ; } continue ; case 'S' : /* List only stopped processes */ Flg.flg_AZ = 1 ; Flg.flg_S = 1 ; continue ; case 't' : case 'T' : /* List only processes attached to the specified terminals */ Flg.flg_AZ = 1 ; Flg.flg_T = 1 ; if ( !tlist ) tlist=Flg.flg_Tlist=getflgsp( argc ); while ( argc > 1 ) { if ( **++argv == '-' ) { --argv ; break ; } --argc ; tlist->f_chp = *argv ; (++tlist)->f_chp = (char*)0 ; } continue ; case 'u' : case 'U' : /* List only processes belonging to the specified users */ Flg.flg_AZ = 1 ; Flg.flg_U = 1 ; if ( !ulist ) ulist=Flg.flg_Ulist=getflgsp( argc ); while ( argc > 1 ) { if ( **++argv == '-' ) { --argv ; break ; } --argc ; ulist->f_chp = *argv ; (++ulist)->f_chp = (char*)0 ; } continue ; case 'W' : /* List only waiting processes */ Flg.flg_AZ = 1 ; Flg.flg_W = 1 ; continue ; case 'z' : case 'Z' : /* List only zombie processes */ Flg.flg_AZ = 1 ; Flg.flg_Z = 1 ; continue ; default : prexit( usage, *argv ) ; /* NOTREACHED */ } } }