/*****  名前ジェネレータ namegen    *****/
/*****  nestfile.c                  *****/



#include <stdio.h>
#include "nestfile.h"
#include "put.h"


#define TRUE            1
#define FALSE           0

static FILE         *fp_stack[NESTMAX];
static int          fp_stack_top = 0;



FILE *fopen_nest(char *filename,        /* オープンするファイル名へのptr    */
                 int *stat,             /* ステータス出力用                 */
                 int display_filename_f /* TRUEならファイル名を表示         */
                 ){

    int             i;

    if (display_filename_f != FALSE){
        for (i = 0 ; i < fp_stack_top ; i ++){  /* ネスティングレベルに応じ */
            putstr("  ", stderr);               /* インデントを付けて       */
        }
        putstr(filename, stderr);               /* ファイル名表示           */
        putstr("\n", stderr);
    }

    if (fp_stack_top < NESTMAX){
        fp_stack[fp_stack_top] = fopen(filename, "r");
        fp_stack_top ++;
        *stat = NO_ERROR;
    }
    else{
        *stat = STACK_OVERFLOW;
    }
    return fp_stack[fp_stack_top-1];    /* オープンしたファイルのfpを返す   */
}



FILE *fclose_nest(int *stat             /* ステータス出力用                 */
                  ){

    fp_stack_top --;
    fclose(fp_stack[fp_stack_top]);
    *stat = NO_ERROR;
    if (fp_stack_top == 0){
        return NULL;
    }
    else{
        return fp_stack[fp_stack_top-1];
    }
}


