| /*---------------------------------------------------------------------------* |
| * 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 ); |
| } |