TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: All
from: Phil Crown
date: 1995-12-12 17:50:52
subject: PFILEFINDBUF3

Can anyone tell me why this does not work?  It will print the first file
found, but nothing else.  The problems seem to be in getting a pointer to
the next oNextEntryOffset;

#define INCL_DOS
#include 
#include 
#include 
#include 

#define FILES_TO_GET       100    // Nbr of files to search for at a time
#define FF_BUFFSIZE        (sizeof( FILEFINDBUF3 ) * FILES_TO_GET)

VOID ProcessDirectory   (PSZ szDirBase, PSZ szDirectory);

// --------------------------------------------------------------------

VOID ProcessDirectory(PSZ szDirBase, PSZ szDirectory)
{
  PFILEFINDBUF3     pffb          = malloc( FF_BUFFSIZE );
  PFILEFINDBUF3     pff;
  PSZ               szFileSpec    = malloc( CCHMAXPATH + 1 );
  INT               i;

  if( pffb && szFileSpec ) {

    HDIR        hdir        = HDIR_SYSTEM;
    ULONG       ulMaxFiles  = FILES_TO_GET;
    PCH         pchEndPath;
    APIRET      rc;

    (void) strcpy( szFileSpec, szDirBase );

    if( szDirectory ) {
      (void) strcat( szFileSpec, "\\" );
      (void) strcat( szFileSpec, szDirectory );
    }

    pchEndPath = szFileSpec + strlen( szFileSpec );
    (void) strcat( szFileSpec, "\\*.*" );

    rc = DosFindFirst( szFileSpec, &hdir, FILE_NORMAL | FILE_DIRECTORY,
                       pffb, FF_BUFFSIZE, &ulMaxFiles, FIL_STANDARD );
    *pchEndPath = 0;

    while( !rc ) {
      pff = pffb;
      for(i = 0; i < ulMaxFiles; i++) {
        printf("%s\n", pff->achName);
        pff += pff->oNextEntryOffset;   // should point to next entry?
      }
      rc = DosFindNext( hdir, pffb, FF_BUFFSIZE, &ulMaxFiles );
    }
    DosFindClose( hdir );
    DosSleep( 5 );
  }
  if( pffb )
    free( pffb );
  if( szFileSpec )
    free( szFileSpec );
}

int main()
{
  PCHAR   base  = "g:";
  PCHAR   dir   = NULL;

  ProcessDirectory(base, dir);
  return 0;
}

phil.crown{at}bluecafe.com


--- Blue Wave/Max v2.22b
* Origin: * MacSavvy OS/2 BBS * Dallas, Texas * 214-250-4479 * (1:124/1208)
SEEN-BY: 270/101 620/243 711/401 409 410 413 430 807 808 809 934 955 712/407
SEEN-BY: 712/515 517 628 713/888 800/1 7877/2809
@PATH: 124/1208 1 396/1 270/101 712/515 711/808 809 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.