/*---------------------------------------------------------------------------* * PFileWrapUNIX_OS_Specific.c * * * * 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. * * * *---------------------------------------------------------------------------*/ #include <sys/types.h> #include <sys/stat.h> #include "errno.h" #include "PFileSystemImpl.h" #include "PANSIFileSystem.h" #include "PANSIFileSystemImpl.h" #include "phashtable.h" #include "LCHAR.h" #include "plog.h" ESR_ReturnCode pf_make_dir ( const LCHAR* path ) { ESR_ReturnCode rc; passert(path!=NULL); if ( mkdir ( path, S_IRWXU|S_IRWXG|S_IRWXO ) == 0) { rc = ESR_SUCCESS; } else { switch (errno) { case EEXIST: rc = ESR_IDENTIFIER_COLLISION; break; case ENOENT: rc = ESR_NO_MATCH_ERROR; break; default: PLogError ( L("ESR_INVALID_STATE") ); rc = ESR_INVALID_STATE; break; } } return ( rc ); } ESR_ReturnCode pf_get_cwd ( LCHAR* path, size_t *len ) { ESR_ReturnCode rc; if ( path != NULL ) { if ( getcwd ( path, *len ) != NULL) { rc = ESR_SUCCESS; } else { switch ( errno ) { case ERANGE: rc = ESR_BUFFER_OVERFLOW; break; case ENOMEM: rc = ESR_OUT_OF_MEMORY; break; default: PLogError(L("ESR_INVALID_STATE")); rc = ESR_INVALID_STATE; break; } } } else { rc = ESR_INVALID_ARGUMENT; PLogError(ESR_rc2str(rc)); } return ( rc ); } ESR_ReturnCode pf_change_dir ( const LCHAR* path ) { ESR_ReturnCode rc; passert ( path != NULL ); passert ( *path != '\0' ); if ( chdir ( path ) == 0 ) rc = ESR_SUCCESS; else rc = ESR_NO_MATCH_ERROR; return ( rc ); }