/*---------------------------------------------------------------------------*
 *  pstdio.h  *
 *                                                                           *
 *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
 *                                                                           *
 *  Licensed under the Apache License, Version 2.0 (the 'License');          *
 *  you may not use this file except in compliance with the License.         *
 *                                                                           *
 *  You may obtain a copy of the License at                                  *
 *      http://www.apache.org/licenses/LICENSE-2.0                           *
 *                                                                           *
 *  Unless required by applicable law or agreed to in writing, software      *
 *  distributed under the License is distributed on an 'AS IS' BASIS,        *
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 
 *  See the License for the specific language governing permissions and      *
 *  limitations under the License.                                           *
 *                                                                           *
 *---------------------------------------------------------------------------*/

#ifndef PSTDIO_H
#define PSTDIO_H



#include <stdio.h>
#include "PortPrefix.h"
#include "ptypes.h"
#include "PFile.h"
#include "ESR_ReturnCode.h"

/**
 * File table structure for memory FS
 */
typedef struct FileRecord_t
{
  /**
   * file name
      */
  char name[80];
  /**
   * pointer to the file data
   */
  unsigned char *start;
  /**
      * real size of the file
      */
  int size;
  /**
      * total size in memory
      */
  int memsize;
  /**
   * mode: 0/1: text/binary
   */
  int mode;
}
FileRecord;

#ifdef _WIN32

#include "direct.h"
#include "stdlib.h"

/**
 * @addtogroup ESR_PortableModule ESR_Portable API functions
 *
 * @{
 */

/**
 * Platform-independant maximum filename path length.
 */
#define P_PATH_MAX _MAX_PATH

/**
 * Platform-independant maximum command-line length. In reality this value is shell-specific
 * and is around 32k for WindowsNT however we can't spare that much stack-space and we assume
 * such a large value will never actually occur so we settle for 4k instead.
 */
#define P_CMDLINE_MAX 4000
/**
 * @}
 */

#else

#if defined(PATH_MAX)
#define P_PATH_MAX PATH_MAX
#elif defined(MAXPATHLEN)
#define P_PATH_MAX MAXPATHLEN
#else
#error "Cannot determine value for P_PATH_MAX."
#endif /* PATH_MAX */

#endif /* _WIN32 */

#endif