home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
-
- extern char *malloc ();
- extern char *strsave ();
-
-
- struct stack_st {
- struct stack_st *next;
- char *filename;
- };
-
-
- int
- push ( stack , filename )
- struct stack_st **stack;
- char *filename;
- {
- struct stack_st *p , **pp;
-
- p = (struct stack_st *) malloc ( sizeof ( struct stack_st ) );
- if ( p == NULL )
- return ( 0 );
- p->filename = strsave ( filename );
- if ( p->filename == NULL ) {
- free ( p );
- return ( 0 );
- }
- p->next = NULL;
- for ( pp = stack; *pp != NULL; pp = &(*pp)->next ) ;
- *pp = p;
- return ( 1 );
- }
-
-
- char *
- pop ( stack )
- struct stack_st **stack;
- {
- char *filename;
- struct stack_st *p , **pp;
- static char buf[ 512 ];
-
- if ( *stack == NULL )
- return ( NULL );
- for ( pp = stack; (*pp)->next != NULL; pp = &(*pp)->next ) ;
- strcpy ( buf , (*pp)->filename );
- free ( (*pp)->next );
- *pp = NULL;
- return ( buf );
- }
-