#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 );
}
