Ignore:
Timestamp:
Nov 8, 1999, 2:43:13 PM (26 years ago)
Author:
sandervl
Message:

thread, SearchPath + handlemanager fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/oslibdos.cpp

    r1432 r1628  
    1 /* $Id: oslibdos.cpp,v 1.5 1999-10-24 22:51:22 sandervl Exp $ */
     1/* $Id: oslibdos.cpp,v 1.6 1999-11-08 13:43:12 sandervl Exp $ */
    22
    33/*
     
    263263  return TRUE;
    264264}
     265//******************************************************************************
     266//******************************************************************************
     267
     268#define OSLIB_SEARCHDIR         1
     269#define OSLIB_SEARCHCURDIR      2
     270#define OSLIB_SEARCHFILE        3
     271#define OSLIB_SEARCHENV         4
     272
     273DWORD OSLibDosSearchPath(DWORD cmd, char *path, char *name, char *full_name,
     274                         DWORD length_fullname)
     275{
     276  switch(cmd) {
     277  case OSLIB_SEARCHDIR:
     278        if(DosSearchPath(SEARCH_IGNORENETERRS, path,
     279                         name, full_name, length_fullname) != 0) {
     280                return 0;
     281        }
     282        return strlen(full_name);
     283
     284
     285  case OSLIB_SEARCHCURDIR:
     286        if(DosSearchPath(SEARCH_IGNORENETERRS | SEARCH_CUR_DIRECTORY, path,
     287                         name, full_name, length_fullname) != 0) {
     288                return 0;
     289        }
     290        return strlen(full_name);
     291
     292  case OSLIB_SEARCHFILE:
     293  {
     294    FILESTATUS3 fileinfo;
     295
     296        if(DosQueryPathInfo(name, FIL_STANDARD, &fileinfo, sizeof(fileinfo)) != 0) {
     297                return 0;
     298        }
     299        strncpy(full_name, name, length_fullname);
     300        return strlen(full_name);
     301  }
     302
     303  case OSLIB_SEARCHENV:
     304  {
     305        char *env = getenv(path);
     306        if(env == NULL)
     307                return 0;
     308
     309        while(*env != '=') env++;
     310        env++;
     311        while(*env == ' ') env++;
     312        if(DosSearchPath(SEARCH_IGNORENETERRS | SEARCH_ENVIRONMENT, env,
     313                         name, full_name, length_fullname) != 0) {
     314                return 0;
     315        }
     316        return strlen(full_name);
     317  }
     318  }
     319  return 0;
     320}
     321//******************************************************************************
     322//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.