Changeset 3102


Ignore:
Timestamp:
Aug 11, 2018, 9:58:20 PM (7 years ago)
Author:
Andreas Schnellbacher
Message:
Location:
trunk/src/gui
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/src/gui/common/file.c

    r3099 r3102  
    306306// -----------------------------------------------------------------------------
    307307
     308APIRET FileInTree( PSZ pszFile, PSZ pszPath, PSZ pszBuffer, ULONG ulBuflen)
     309{
     310         APIRET         rc = NO_ERROR;
     311         APIRET         rcx = ERROR_FILE_NOT_FOUND;
     312
     313         ULONG          ulFilecount;
     314         HDIR           hdir;
     315         CHAR           szTmp[ _MAX_PATH];
     316
     317         FILEFINDBUF3   ffb3;
     318         FILESTATUS3    fs3;
     319
     320do
     321   {
     322   // check parameters
     323   if ((!pszFile) || (!*pszFile))
     324      {
     325      rc = ERROR_INVALID_PARAMETER;
     326      break;
     327      }
     328   if ((!pszPath) || (!*pszPath))
     329      {
     330      rc = ERROR_INVALID_PARAMETER;
     331      break;
     332      }
     333   if (!pszBuffer)
     334      {
     335      rc = ERROR_INVALID_PARAMETER;
     336      break;
     337      }
     338
     339   // does path exist?
     340   rc = DosQueryPathInfo( pszPath, FIL_QUERYFULLNAME, szTmp, sizeof( szTmp));
     341   if (rc != NO_ERROR)
     342      break;
     343
     344// DPRINTF(( "%s -> : %s\n", __FUNCTION__, pszPath));
     345
     346   // determine filename
     347   strcpy( szTmp, pszPath);
     348   if (*(pszPath + strlen( pszPath) - 1) != '\\')
     349      strcat( szTmp, "\\");
     350   strcat( szTmp, pszFile);
     351
     352   // find filename in specified dir
     353   if (FileExists( szTmp))
     354      {
     355      // file found in specified dir
     356
     357      // does buffer fit?
     358      if ((strlen( szTmp) + 1) > ulBuflen)
     359      {
     360      rc = ERROR_BUFFER_OVERFLOW;
     361      break;
     362      }
     363
     364      // hand over result
     365      strcpy( pszBuffer, szTmp);
     366
     367      break;
     368      }
     369
     370   // search all subdirectories
     371
     372   // determine dirmask
     373   strcpy( szTmp, pszPath);
     374   if (*(pszPath + strlen( pszPath) - 1) != '\\')
     375      strcat( szTmp, "\\");
     376   strcat( szTmp, "*");
     377
     378   ulFilecount = 1;
     379   hdir        = HDIR_CREATE;
     380   rc = DosFindFirst( szTmp,
     381                      &hdir,
     382                      MUST_HAVE_DIRECTORY | FILE_ARCHIVED | FILE_SYSTEM | FILE_HIDDEN | FILE_READONLY,
     383                      &ffb3,
     384                      sizeof( ffb3),
     385                      &ulFilecount,
     386                      FIL_STANDARD);
     387   if (rc != NO_ERROR)
     388      break;
     389
     390   while (rc == NO_ERROR)
     391      {
     392      // handle subdirectories
     393      if (strcmp( ffb3.achName, ".") && strcmp( ffb3.achName, ".."))
     394         {
     395         // determine filename
     396         strcpy( szTmp, pszPath);
     397         if (*(pszPath + strlen( pszPath) - 1) != '\\')
     398            strcat( szTmp, "\\");
     399         strcat( szTmp, ffb3.achName);
     400
     401         // recursive call to subdirectory
     402         rcx = FileInTree( pszFile, szTmp, pszBuffer, ulBuflen);
     403         if (rcx == NO_ERROR)
     404            {
     405            // file found in subdir
     406            break;
     407            }
     408         }
     409
     410      // search next subdir
     411      rc = DosFindNext( hdir,
     412                        &ffb3,
     413                        sizeof( ffb3),
     414                        &ulFilecount);
     415      }
     416   DosFindClose( hdir);
     417
     418   if (rcx == NO_ERROR)
     419      // file found in subdir
     420      break;
     421
     422   } while (FALSE);
     423
     424return rc;
     425}
     426
     427// -----------------------------------------------------------------------------
     428
    308429APIRET GetNextFile( PSZ pszFileMask, PHDIR phdir, PSZ pszNextFile, ULONG ulBuflen)
    309430{
  • TabularUnified trunk/src/gui/common/file.h

    r2695 r3102  
    3535
    3636APIRET FileInPath( PSZ pszEnvName, PSZ pszFilename, PSZ pszBuffer, ULONG ulBuflen);
     37APIRET FileInTree( PSZ pszFile, PSZ pszPath, PSZ pszBuffer, ULONG ulBuflen);
    3738
    3839APIRET GetNextFile( PSZ pszFileMask, PHDIR phdir,
  • TabularUnified trunk/src/gui/nepmdlib/nepmdlib.c

    r3101 r3102  
    20482048      pszEnvVarName = "PATH";
    20492049
    2050    // search !
     2050   // search
    20512051   strupr( pszEnvVarName);
    20522052   rc = DosSearchPath( SEARCH_IGNORENETERRS |
     
    20652065// ------------------------------------------------------------------------------
    20662066
     2067APIRET EXPENTRY NepmdSearchTree( PSZ pszFile, PSZ pszPath, PSZ pszBuffer, ULONG ulBuflen)
     2068{
     2069
     2070         APIRET         rc = NO_ERROR;
     2071
     2072FUNCENTER;
     2073
     2074do
     2075   {
     2076   // init return value first
     2077   if (pszBuffer)
     2078      memset( pszBuffer, 0, ulBuflen);
     2079
     2080   // check parms
     2081   if ((!pszFile) || (!pszPath) || (!pszBuffer))
     2082      {
     2083      rc = ERROR_INVALID_PARAMETER;
     2084      break;
     2085      }
     2086
     2087   // search
     2088   rc = FileInTree( pszFile, pszPath, pszBuffer, ulBuflen);
     2089
     2090   } while (FALSE);
     2091
     2092FUNCEXITRC;
     2093return _getRexxError( rc, pszBuffer, ulBuflen);
     2094}
     2095
     2096// ------------------------------------------------------------------------------
     2097
    20672098APIRET EXPENTRY NepmdSetFrameWindowPos(  HWND hwndFrame, ULONG x, ULONG y, ULONG cx, ULONG cy, ULONG flags)
    20682099{
  • TabularUnified trunk/src/gui/nepmdlib/nepmdlib.def

    r3099 r3102  
    6767 NepmdScanEnv
    6868 NepmdSearchPath
     69 NepmdSearchTree
    6970 NepmdSetFrameWindowPos
    7071 NepmdWriteConfigValue
  • TabularUnified trunk/src/gui/nepmdlib/nepmdlib.e

    r3101 r3102  
    186186include 'scanenv.e'
    187187include 'searchpath.e'
     188include 'searchtree.e'
    188189include 'setframewindowpos.e'
    189190include 'writeconfigvalue.e'
Note: See TracChangeset for help on using the changeset viewer.