This example creates a directory named "HIDEME", makes it hidden, and finally deletes it.

#define INCL_DOSFILEMGR   /* File Manager values */
#define INCL_DOSERRORS    /* DOS Error values    */
#include <os2.h>
#include <stdio.h>
#include <string.h>

int main(VOID) {
   UCHAR       achNewDir[256]  = "\\HIDEME";           /* Directory name    */
   FILESTATUS3 fsts3PathInfo   = {{0}};                /* Directory info    */
   ULONG       ulBufferSize    = sizeof(FILESTATUS3);  /* Buffer size       */
   APIRET      rc              = NO_ERROR;             /* Return code       */

   rc = DosCreateDir(achNewDir, (PEAOP2) NULL);        /* Create directory
                                                          with no EAs       */
   if (rc != NO_ERROR) {
      printf("DosCreateDir error: return code = %u\n", rc);
      return 1;
   } else {
      printf("Directory %s created.\n",achNewDir);
   }

   rc = DosQueryPathInfo(achNewDir, FIL_STANDARD,
                        &fsts3PathInfo, ulBufferSize); /* Get standard info */
   if (rc != NO_ERROR) {
      printf("DosQueryPathInfo error: return code = %u\n", rc);
      return 1;
   }

   fsts3PathInfo.attrFile  = FILE_HIDDEN;   /* Add HIDDEN attribute to path */

   rc = DosSetPathInfo(achNewDir,           /* Change directory info on     */
                       FIL_STANDARD,        /* the disk using the buffer    */
                       &fsts3PathInfo,      /* we just updated.             */
                       ulBufferSize,
                       DSPI_WRTTHRU );      /* Write data before returning  */
   if (rc != NO_ERROR) {
       printf("DosSetPathInfo error: return code = %u\n", rc);
       return 1;
   } else {
       printf("Directory %s hidden.\n",achNewDir);
   }
       /* Delete the hidden directory.  If this step is omitted, the directory
          can still be manipulated by standard OS/2 commands like CHDIR and
          RMDIR, it will just not be displayed in a DIR command without the
          /AH display option specified.                                     */

   rc = DosDeleteDir (achNewDir);
   if (rc != NO_ERROR) {
       printf ("DosDeleteDir error : return code = %u\n", rc);
       return 1;
   } else {
       printf("Directory %s deleted.\n",achNewDir);
   }

   return NO_ERROR;
}


[Back] [Next]