/*---------------------------------------------------------------------------- * RTTTL_CheckFileType() *---------------------------------------------------------------------------- * Purpose: * Check the file type to see if we can parse it * * Inputs: * pEASData - pointer to overall EAS data structure * handle - pointer to file handle * * Outputs: * * * Side Effects: * *---------------------------------------------------------------------------- */ static EAS_RESULT RTTTL_CheckFileType (S_EAS_DATA *pEASData, EAS_FILE_HANDLE fileHandle, EAS_VOID_PTR *ppHandle, EAS_I32 offset) { S_RTTTL_DATA data; S_RTTTL_DATA *pData; /* see if we can parse the header */ data.fileHandle = fileHandle; data.fileOffset = offset; *ppHandle= NULL; if (RTTTL_ParseHeader (pEASData, &data, EAS_FALSE) == EAS_SUCCESS) { /* check for static memory allocation */ if (pEASData->staticMemoryModel) pData = EAS_CMEnumData(EAS_CM_RTTTL_DATA); else pData = EAS_HWMalloc(pEASData->hwInstData, sizeof(S_RTTTL_DATA)); if (!pData) return EAS_ERROR_MALLOC_FAILED; EAS_HWMemSet(pData, 0, sizeof(S_RTTTL_DATA)); /* return a pointer to the instance data */ pData->fileHandle = fileHandle; pData->fileOffset = offset; pData->state = EAS_STATE_OPEN; *ppHandle = pData; } return EAS_SUCCESS; }
/*---------------------------------------------------------------------------- * EAS_HWInit * * Initialize host wrapper interface * *---------------------------------------------------------------------------- */ EAS_RESULT EAS_HWInit (EAS_HW_DATA_HANDLE *pHWInstData) { #if defined(_DEBUG) && !defined(MSC) EnableHeapDebug(); #endif #ifdef BUFFERED_FILE_ACCESS EAS_ReportX(_EAS_SEVERITY_INFO, "EAS_HWInit: Buffered file access\n"); #else EAS_ReportX(_EAS_SEVERITY_INFO, "EAS_HWInit: Memory mapped file access\n"); #endif /* simulate failure */ if (errorConditions[eInitError]) return EAS_FAILURE; /* need to track file opens for duplicate handles */ *pHWInstData = malloc(sizeof(EAS_HW_INST_DATA)); if (!(*pHWInstData)) return EAS_ERROR_MALLOC_FAILED; EAS_HWMemSet(*pHWInstData, 0, sizeof(EAS_HW_INST_DATA)); return EAS_SUCCESS; }
/*---------------------------------------------------------------------------- * EAS_HWInit * * Initialize host wrapper interface * *---------------------------------------------------------------------------- */ EAS_RESULT EAS_HWInit (EAS_HW_DATA_HANDLE *pHWInstData) { /* need to track file opens for duplicate handles */ #ifndef _STATIC_MEMORY *pHWInstData = malloc(sizeof(EAS_HW_INST_DATA)); if (!(*pHWInstData)) return EAS_ERROR_MALLOC_FAILED; #else *pHWInstData = &fileData; #endif EAS_HWMemSet(*pHWInstData, 0, sizeof(EAS_HW_INST_DATA)); return EAS_SUCCESS; }
/*---------------------------------------------------------------------------- * EAS_HWInit * * Initialize host wrapper interface * *---------------------------------------------------------------------------- */ EAS_RESULT EAS_HWInit (EAS_HW_DATA_HANDLE *pHWInstData) { EAS_HW_FILE *file; int i; /* need to track file opens for duplicate handles */ *pHWInstData = malloc(sizeof(EAS_HW_INST_DATA)); if (!(*pHWInstData)) return EAS_ERROR_MALLOC_FAILED; EAS_HWMemSet(*pHWInstData, 0, sizeof(EAS_HW_INST_DATA)); file = (*pHWInstData)->files; for (i = 0; i < EAS_MAX_FILE_HANDLES; i++) { file->fd = -1; file++; } return EAS_SUCCESS; }