//
//	Legato Code Examples
//	--------------------
//
//	Enumerate Folder
//	----------------
//
//	Group:		File System
//	Title:		Enumerate Folder
//	Description:	Demonstrates basic folder enumeration via GetFirstFile and associated routines.
//	Revised:	12/16/2014
//
//	(c) Novaworks, LLC
//

							// Declarations

    handle      hEnum;
    string      nTarget;
    string      s1, s2, s3;
    int         rc, files, folders;
    qword       size, total, time, mt;
   
							// Set Up Folder to Enumerate
    nTarget = "C:\\Windows\\*.*";			// Put address here
    hEnum = GetFirstFile(nTarget);
    if (hEnum == 0) {
      MessageBox('X', "Could not open path %s", nTarget);
      exit();
      }
    AddMessage("Directory for %s", nTarget);
    AddMessage("");
    AddMessage("-------Modified-------  --Type--  ----Size----   --Name-----------------------------");

    s1 = GetName(hEnum);                                // Get the Folders
    while (s1 != "") {
      s2 = GetFileAttributeString(hEnum);
      rc = InString(s2, "d");
      if (rc > 0) {
        folders++;
        mt = GetFileModifiedTime(hEnum);
        s3 = FormatDate(mt, 0x02000031);
        AddMessage("%-22s  %8s           -- : [%s]", s3, s2, s1);
        }
      GetNextFile(hEnum);
      s1 = GetName(hEnum);
      }
    CloseFile(hEnum);

    hEnum = GetFirstFile(nTarget);                      // Get the Files
    s1 = GetName(hEnum);
    while (s1 != "") {
      s2 = GetFileAttributeString(hEnum);
      rc = InString(s2, "d");
      if (rc < 0) {
        files++;
        size = GetFileSize(hEnum);
        total += size;
        mt = GetFileModifiedTime(hEnum);
        s3 = FormatDate(mt, 0x02000031);
        AddMessage("%-22s  %8s %12a : %s", s3, s2, size, s1);
        }
      GetNextFile(hEnum);
      s1 = GetName(hEnum);
      }

    AddMessage("");
    AddMessage("Total %a file(s) for %a bytes and %a folder(s)", files, total, folders);

    CloseFile(hEnum);




