This is ptn.c in view mode; [Download] [Up]
/* C code for using PTN_LIB_PATH environment variable */
#include <stdio.h>
#include "pcn_c_hdr.h"
#include "pcn_types.h"
#define MAX_LIB_PATH 128 /* Max length of path to .lib files */
#define MAX_PATH_LENGTH 1024 /* max length of any file path */
extern FILE * _p_open_file_in_pcn_path();
#ifndef DEFAULT_PTN_LIB_PATH
#define DEFAULT_PTN_LIB_PATH ""
#endif
static char _p_lib_path_string[MAX_PATH_LENGTH];
static lib_path_length=0;
static char *lib_path[MAX_PATH_LENGTH];
/*
* _p_init_lib_path()
*
* This sets up the (local) lib_path data structure which is used for
* searching for pam files.
*
* We first initialize _p_lib_path_string with the lib path
*/
void _p_init_lib_path()
{
char *p1, *p2;
int done;
char *s;
static char *default_ptn_lib_path = DEFAULT_PTN_LIB_PATH;
_p_lib_path_string[0] = '\0';
s = (char *) getenv("PTN_LIB_PATH");
if (s == (char *) NULL)
s = default_ptn_lib_path;
if ((strlen(s) + 1) >= MAX_PATH_LENGTH)
{
printf("The PTN_LIB_PATH string is too long");
exit(1);
}
strcpy(_p_lib_path_string, s);
/*
* The _p_lib_path_string variable should be a colon separated
* list of paths. There should be no spaces or tabs in the path, and
* all paths should be absolute paths.
*/
lib_path_length = 0;
if (_p_lib_path_string[0] != '\0')
{
p1 = _p_lib_path_string;
for (done = 0; !done ;)
{
if (lib_path_length >= MAX_LIB_PATH)
{
printf("Warning: PTN_LIB_PATH environment variable has too many components\n");
break;
}
p2 = (char *) strchr(p1, ':');
if (p2 == (char *) NULL)
done = 1;
else
*p2++ = '\0';
lib_path[lib_path_length++] = p1;
p1 = p2;
}
}
}
lib_path_len(len)
int_t *len;
{
*len = (int_t) lib_path_length;
}
lib_next_file(file,findex,path)
char file[], path[]; int_t *findex;
{
sprintf(path,"%s/%s",lib_path[*findex],file);
}
try_open(file,r)
char file[]; int_t *r;
{
FILE *fd;
if((fd=fopen(file,"r"))==NULL)
*r=0;
else {
*r=1;
fclose(fd);
}
}
void _p_open_pcnfile(fbase, file, found)
char *fbase, *file;
int_t *found;
{
FILE *fd;
char *p;
*found = 0;
if ( (fd = _p_open_file_in_pcn_path(".", fbase, file)) != NULL )
{
*found = 1;
p = strrchr(file,'.');
p[0] = '\0'; /* cut the extention .pcn */
fclose(fd);
}
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.