[BACK]Return to load.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / parse

Diff for /OpenXM_contrib2/asir2000/parse/load.c between version 1.20 and 1.21

version 1.20, 2006/02/08 02:11:19 version 1.21, 2006/09/13 02:26:13
Line 45 
Line 45 
  * 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 '/'

Legend:
Removed from v.1.20  
changed lines
  Added in v.1.21

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>