14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------* 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * PFileWrap.c * 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Copyright 2007, 2008 Nuance Communciations, Inc. * 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the 'License'); * 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * you may not use this file except in compliance with the License. * 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * You may obtain a copy of the License at * 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 * 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software * 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * distributed under the License is distributed on an 'AS IS' BASIS, * 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * See the License for the specific language governing permissions and * 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * limitations under the License. * 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/ 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <stdio.h> 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include <stdarg.h> 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "LCHAR.h" 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pendian.h" 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "PFile.h" 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "plog.h" 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pstdio.h" 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ptypes.h" 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileClose( PFile *self ) 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fclose ( (FILE *)self ); 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( ESR_SUCCESS ); 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileRead ( PFile *self, void *buffer, size_t size, size_t *count ) 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode read_status; 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t items_read; 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int ferror_status; 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project items_read = fread ( buffer, size, *count, (FILE *)self ); 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( items_read > 0 ) 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project read_status = ESR_SUCCESS; 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *count = items_read; 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ferror_status = ferror ( (FILE *)self ); 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( ferror_status == 0 ) 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project read_status = ESR_SUCCESS; 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *count = items_read; 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project read_status = ESR_READ_ERROR; 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( read_status ); 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileWrite ( PFile *self, const void *buffer, size_t size, size_t *count ) 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode write_status; 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t items_written; 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project items_written = fwrite ( buffer, size, *count, (FILE *)self ); 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( items_written == ( *count ) ) 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project write_status = ESR_SUCCESS; 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *count = items_written; 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project write_status = ESR_READ_ERROR; 884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( write_status ); 904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileFlush ( PFile *self ) 954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode flush_status; 974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t flush_ok; 984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project flush_ok = fflush ( (FILE *)self ); 1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( flush_ok == 0 ) 1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project flush_status = ESR_SUCCESS; 1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project flush_status = ESR_FLUSH_ERROR; 1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( flush_status ); 1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileSeek ( PFile *self, long offset, int origin ) 1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode seek_status; 1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t seek_ok; 1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project seek_ok = fseek ( (FILE *)self, offset, origin ); 1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( seek_ok == 0 ) 1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project seek_status = ESR_SUCCESS; 1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project seek_status = ESR_SEEK_ERROR; 1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( seek_status ); 1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileGetPosition ( PFile *self, size_t *position ) 1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode get_status; 1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project long ftell_result; 1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ftell_result = ftell ( (FILE *)self ); 1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( ftell_result >= 0 ) 1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *position = (size_t)ftell_result; 1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project get_status = ESR_SUCCESS; 1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project get_status = ESR_INVALID_STATE; 1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( get_status ); 1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileIsEOF ( PFile *self, ESR_BOOL *isEof ) 1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifdef NO_FEOF 1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project long posCur; /* remember current file position */ 1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project long posEnd; /* end of file position */ 1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project posCur = ftell ( self ); 1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fseek ( self, 0, SEEK_END ); 1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project posEnd = ftell ( self ); 1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( posCur == posEnd ) 1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *isEof = ESR_TRUE; 1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *isEof = ESR_FALSE; 1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fseek ( self, posCur, SEEK_SET ); /* restore position in file */ 1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#else 1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int is_eof; 1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project is_eof = feof ( (FILE *)self ); 1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( is_eof != 0 ) 1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *isEof = ESR_TRUE; 1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *isEof = ESR_FALSE; 1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif 1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( ESR_SUCCESS ); 1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileIsErrorSet ( PFile *self, ESR_BOOL *isError ) 1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int is_error; 1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project is_error = ferror ( (FILE *)self ); 1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( is_error != 0 ) 1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *isError = ESR_TRUE; 1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *isError = ESR_FALSE; 1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( ESR_SUCCESS ); 1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileClearError ( PFile *self ) 2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project clearerr ( (FILE *)self ); 2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( ESR_SUCCESS ); 2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileVfprintf ( PFile *self, int *result, const LCHAR *format, va_list args ) 2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int bytes_printed; 2124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project bytes_printed = vfprintf ( (FILE *)self, format, args ); 2144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( result != NULL ) 2164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *result = bytes_printed; 2174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( ESR_SUCCESS ); 2184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileFgetc ( PFile *self, LINT *result ) 2234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode fgetc_status; 2254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int error_status; 2264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *result = fgetc ( (FILE *)self ); 2284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( ( *result ) != EOF ) 2304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fgetc_status = ESR_SUCCESS; 2324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 2344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project error_status = ferror ( (FILE *)self ); 2364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( error_status == 0 ) 2384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fgetc_status = ESR_SUCCESS; 2394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 2404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fgetc_status = ESR_INVALID_STATE; 2414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( fgetc_status ); 2434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode PFileFgets ( PFile *self, LCHAR *string, int n, LCHAR **result ) 2484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode fgets_status; 2504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int error_status; 2514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR *temp; 2524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project temp = fgets ( string, n, (FILE *)self ); 2544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( temp != NULL ) 2564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fgets_status = ESR_SUCCESS; 2584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( result != NULL ) 2604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *result = temp; 2614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 2634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project error_status = ferror ( (FILE *)self ); 2654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( error_status == 0 ) 2674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fgets_status = ESR_SUCCESS; 2694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( result != NULL ) 2714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *result = NULL; 2724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 2744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fgets_status = ESR_INVALID_STATE; 2754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( fgets_status ); 2774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectPFile *pfopen ( const LCHAR *filename, const LCHAR *mode ) 2824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PFile *result; 2844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project result = (PFile *)fopen ( filename, mode ); 2864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( result ); 2874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectsize_t pfread ( void *buffer, size_t size, size_t count, PFile *stream ) 2924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 2944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = PFileRead ( stream, buffer, size, &count ); 2964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( rc != ESR_SUCCESS ) 2984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( 0 ); 2994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( count ); 3004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectsize_t pfwrite ( const void *buffer, size_t size, size_t count, PFile *stream ) 3054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 3074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = PFileWrite ( stream, buffer, size, &count ); 3094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( rc != ESR_SUCCESS ) 3104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( 0 ); 3114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( count ); 3124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint pfclose ( PFile *stream ) 3174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fclose ( (FILE *)stream ); 3204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( 0 ); 3224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid prewind (PFile *stream) 3274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PFileSeek ( stream, 0, SEEK_SET ); 3304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint pfseek ( PFile *stream, long offset, int origin ) 3354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 3374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = PFileSeek ( stream, offset, origin ); 3394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( rc != ESR_SUCCESS ) 3414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( 1 ); 3424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( 0 ); 3434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectlong pftell ( PFile *stream ) 3484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 3504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t result; 3514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = PFileGetPosition ( stream, &result ); 3534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( rc != ESR_SUCCESS ) 3554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( -1 ); 3564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( result ); 3574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint pfeof ( PFile *stream ) 3624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL eof; 3644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PFileIsEOF ( stream, &eof ); 3664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( ! eof ) 3684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( 0 ); 3694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( 1 ); 3704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint pferror ( PFile *stream ) 3754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL error; 3774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PFileIsErrorSet ( stream, &error ); 3794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( ! error ) 3814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( 0 ); 3824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( 1 ); 3834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid pclearerr ( PFile *stream ) 3884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PFileClearError ( stream ); 3914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint pfflush ( PFile *stream ) 3964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 3984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = PFileFlush ( stream ); 4004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( rc != ESR_SUCCESS ) 4024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( PEOF ); 4034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( 0 ); 4044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLCHAR* pfgets ( LCHAR *string, int n, PFile *self ) 4094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR *result; 4114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 4124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = PFileFgets ( self, string, n, &result ); 4144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( rc != ESR_SUCCESS ) 4164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( NULL ); 4174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( result ); 4184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectLINT pfgetc ( PFile *self ) 4234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 4254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LINT result; 4264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = PFileFgetc ( self, &result ); 4284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( rc != ESR_SUCCESS ) 4304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( PEOF ); 4314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( result ); 4324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint pfprintf ( PFile *stream, const LCHAR *format, ... ) 4374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 4394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int result; 4404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project va_list args; 4414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project va_start ( args, format ); 4434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = PFileVfprintf ( stream, &result, format, args ); 4444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project va_end ( args ); 4454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( rc != ESR_SUCCESS ) 4474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( -1 ); 4484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( result ); 4494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectint pvfprintf ( PFile *stream, const LCHAR *format, va_list argptr ) 4544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 4564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int result; 4574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = PFileVfprintf ( stream, &result, format, argptr ); 4594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( rc != ESR_SUCCESS ) 4614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( -1 ); 4624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( result ); 4634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode pf_convert_backslashes_to_forwardslashes ( LCHAR *string_to_convert ) 4674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 4694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int string_status; 4704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( string_to_convert != NULL ) 4724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project string_status = lstrreplace ( string_to_convert, L('\\'), L('/') ); 4744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( string_status == 0 ) 4764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_SUCCESS; 4774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 4784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_INVALID_ARGUMENT; 4794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 4814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_INVALID_ARGUMENT; 4834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( rc ); 4854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode pf_is_path_absolute ( const LCHAR* input_path, ESR_BOOL* isAbsolute ) 4904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 4924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR path [P_PATH_MAX]; 4934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( isAbsolute != NULL ) 4954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LSTRCPY ( path, input_path ); 4974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = pf_convert_backslashes_to_forwardslashes ( path ); 4984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( rc == ESR_SUCCESS ) 5004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 5014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( ( path [0] == '/' ) || ( ( LISALPHA ( path [0] ) ) && ( path [1] == ':' ) && ( path [2] == '/' ) ) ) 5024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *isAbsolute = ESR_TRUE; 5034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 5044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *isAbsolute = ESR_FALSE; 5054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 5064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 5074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 5084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 5094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_INVALID_ARGUMENT; 5104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 5114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ( rc ); 5124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 5134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 514