⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pj_open_lib.cpp

📁 projapi是一个关于GIS行业投影转换的程序库
💻 CPP
字号:

#include "stdafx.h"

#define PJ_LIB__
#include "projects.h"
#include <stdio.h>
#include <string.h>
#ifndef UNICODE
#include <errno.h>
#endif

PJ_CVSID("$Id: pj_open_lib.c,v 1.5 2002/12/14 20:15:30 warmerda Exp $");

static const char *(*pj_finder)(const char *) = NULL;
static char * proj_lib_name =
#ifdef PROJ_LIB
PROJ_LIB;
#else
0;
#endif

/************************************************************************/
/*                           pj_set_finder()                            */
/************************************************************************/

void pj_set_finder( const char *(*new_finder)(const char *) )

{
    pj_finder = new_finder;
}

/************************************************************************/
/*                            pj_open_lib()                             */
/************************************************************************/

FILE * pj_open_lib(char *name, char *mode) 
{
	char fname[MAX_PATH_FILENAME+1];
        const char *sysname;
	FILE *fid;
	int n = 0;

	/* check if ~/name */
	if (*name == '~' && name[1] == DIR_CHAR)
	/*	if (sysname = getenv("HOME")) 
		{
			(void)strcpy(fname, sysname);
			fname[n = strlen(fname)] = DIR_CHAR;
			fname[++n] = '\0';
			(void)strcpy(fname+n, name + 1);
			sysname = fname;
		} else*/
			return NULL;

	/* or fixed path: /name, ./name or ../name */
	else if (*name == DIR_CHAR || (*name == '.' && name[1] == DIR_CHAR) ||
		(!strncmp(name, "..", 2) && name[2] == DIR_CHAR) )
		sysname = name;

        /* or try to use application provided file finder */
        else if( pj_finder != NULL && pj_finder( name ) != NULL )
            sysname = pj_finder( name );
        
	/* or is environment PROJ_LIB defined */
	else if (/*(sysname = getenv("PROJ_LIB")) || */(sysname = proj_lib_name)) 
	{
		(void)strcpy(fname, sysname);
		fname[n = strlen(fname)] = DIR_CHAR;
		fname[++n] = '\0';
		(void)strcpy(fname+n, name);
		sysname = fname;
	} 
	else /* just try it bare bones */
		sysname = name;

	if (fid = fopen(sysname, mode))
		errno = 0;
      
	return(fid);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -