/*
 * TeXWhereIs.c - a simple file to show how evpaths.lib routines work.
 *
 * Copyright © 1994,1995 by Giuseppe Ghibò
 *
 * Version 1.1 - 5 May 1995
 *
 * -----------------------------------------------------------------------
 * 
 * Compile with:
 *
 *    SC OPT LINK NOSTKCHK LIB EVPaths.lib TeXWhereIs
 * or
 *    SC OPT LINK NOSTKCHK LIB EVPaths_no.lib TeXWhereIs
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include "evpaths.h"

#define BUFLEN 256
#define EVPBUF 8192L

char *default_path = ".,TeX:inputs,TeX:texinputs";

//char *default_path[] = { ".",
//			  "TeX:inputs",
//			  "TeX:texinputs",
//			  NULL };

void main(int argc, char **argv)
{
	struct EnvVarPath *var;
	char buf[BUFLEN], *s;
	FILE *fh;

	if (argc < 2)
	{
		fprintf(stderr,"TeXWhereIs v1.0 - © 1994 by Giuseppe Ghibò\n");
		fprintf(stderr,"Usage:\n");
		fprintf(stderr,"\tTeXWhereIs ENVVAR filename [-p]\n");
		fprintf(stderr,"Example:\n");
		fprintf(stderr,"\tTeXWhereIs MFINPUTS cmr10.mf\n");
		fprintf(stderr,"Search the file `cmr10.mf' in the path specified by the environment\n");
		fprintf(stderr,"variable `MFINPUTS' and then show where it is located. If the flag `-p'\n");
		fprintf(stderr,"also specified then TeXWhereIs shows also the expanded entries of the\n");
		fprintf(stderr,"specified environment variable.\n");
		exit(1);
	}

/* argv[1] = ENV VAR NAME, argv[2] = FILE NAME */

	var = Alloc_EnvVarPath(argv[1], EVPBUF);

/* note that Init_EnvVarPath() must be executed only once for each env var, unless
   we call Free_EnvVarPath().
   Here follow some alternatives for Init_EnvVarPath().
*/

//	Init_EnvVarPath(var, NULL, NULL);
//	Init_EnvVarPath(var, default_path, ENVPATH_DEFARR);
//	Init_EnvVarPath(var, default_path, ENVPATH_DEFSTR);
//	Init_EnvVarPath(var, default_path, ENVPATH_DEFSTR | ENVPATH_APPEND_PATH );

	Init_EnvVarPath(var, default_path, ENVPATH_DEFSTR | ENVPATH_APPEND_PATH | ENVPATH_CURRENTDIR_FIRST);

	if (argv[3][0] == '-' && argv[3][1] == 'p')
	{
		int i = 0;
		printf("The environment variable: %s has length %ld\n",argv[1],GetVarLength(argv[1]));
		
		while (var->storage.strings[i] != NULL)
			printf("%d -> `%s'\n", i, var->storage.strings[i++]);

	}

	if (s = EVP_FileSearch(argv[2], var, buf, 256))
		printf("File found: `%s'\n",s);
        else
		printf("No file found.\n");

/*
	if (fh = EVP_fopen(argv[2],var,buf,256,"r"))
	{
		char p, q;

		printf("File found: `%s'\n",buf);
		p = getc(fh);
		q = getc(fh);

		printf("First two char: '%c%c'\n",p,q);
	}
	else
		printf("No file found.\n");
*/

	Free_EnvVarPath(var); /* don't forget this!!! */
}
