version 1.20, 2006/02/08 02:11:19 |
version 1.21, 2006/09/13 02:26:13 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/parse/load.c,v 1.19 2006/02/05 08:28:04 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/parse/load.c,v 1.20 2006/02/08 02:11:19 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
Line 224 void env_init() { |
|
Line 224 void env_init() { |
|
ASIRLOADPATH[i] = NULL; |
ASIRLOADPATH[i] = NULL; |
} |
} |
|
|
|
#if defined(VISUAL) |
|
#define R_OK 4 |
|
#endif |
|
|
void searchasirpath(char *name,char **pathp) |
void searchasirpath(char *name,char **pathp) |
{ |
{ |
char **p; |
char **p; |
char *q; |
char *q; |
int l; |
int l,ret; |
#if !defined(VISUAL) |
|
struct stat sbuf; |
struct stat sbuf; |
|
|
if ( (name[0] == '/') || ( name[0] == '.') || strchr(name,':') |
if ( (name[0] == '/') || ( name[0] == '.') || strchr(name,':') |
|| !ASIRLOADPATH[0] ) { |
|| !ASIRLOADPATH[0] ) { |
if ( access(name,R_OK) >= 0 ) { |
if ( access(name,R_OK) >= 0 ) { |
stat(name,&sbuf); |
ret = stat(name,&sbuf); |
if ( (sbuf.st_mode & S_IFMT) != S_IFDIR ) |
if ( ret == 0 && (sbuf.st_mode & S_IFMT) != S_IFDIR ) |
*pathp = name; |
*pathp = name; |
else |
else |
*pathp = 0; |
*pathp = 0; |
Line 247 void searchasirpath(char *name,char **pathp) |
|
Line 250 void searchasirpath(char *name,char **pathp) |
|
l = strlen(*p)+strlen(name)+2; |
l = strlen(*p)+strlen(name)+2; |
q = (char *)ALLOCA(l); sprintf(q,"%s/%s",*p,name); |
q = (char *)ALLOCA(l); sprintf(q,"%s/%s",*p,name); |
if ( access(q,R_OK) >= 0 ) { |
if ( access(q,R_OK) >= 0 ) { |
stat(q,&sbuf); |
ret = stat(q,&sbuf); |
if ( (sbuf.st_mode & S_IFMT) != S_IFDIR ) { |
if ( ret == 0 && (sbuf.st_mode & S_IFMT) != S_IFDIR ) { |
*pathp = (char *)MALLOC(l); strcpy(*pathp,q); |
*pathp = (char *)MALLOC(l); strcpy(*pathp,q); |
return; |
return; |
} |
} |
Line 256 void searchasirpath(char *name,char **pathp) |
|
Line 259 void searchasirpath(char *name,char **pathp) |
|
} |
} |
*pathp = 0; |
*pathp = 0; |
} |
} |
#else |
|
if ( (name[0] == '/') || ( name[0] == '.') || strchr(name,':') |
|
|| !ASIRLOADPATH[0] ) |
|
*pathp = name; |
|
else { |
|
for ( p = ASIRLOADPATH; *p; p++ ) { |
|
l = strlen(*p)+strlen(name)+2; |
|
q = (char *)ALLOCA(l); sprintf(q,"%s/%s",*p,name); |
|
if ( access(q,04) >= 0 ) { |
|
*pathp = (char *)MALLOC(l); strcpy(*pathp,q); |
|
return; |
|
} |
|
} |
|
*pathp = 0; |
|
} |
|
#endif |
|
} |
} |
|
|
#define DELIM '/' |
#define DELIM '/' |