1*8a106958SDamjan Jovanovic /************************************************************** 2*8a106958SDamjan Jovanovic * 3*8a106958SDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*8a106958SDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*8a106958SDamjan Jovanovic * distributed with this work for additional information 6*8a106958SDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*8a106958SDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*8a106958SDamjan Jovanovic * "License"); you may not use this file except in compliance 9*8a106958SDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*8a106958SDamjan Jovanovic * 11*8a106958SDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*8a106958SDamjan Jovanovic * 13*8a106958SDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*8a106958SDamjan Jovanovic * software distributed under the License is distributed on an 15*8a106958SDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*8a106958SDamjan Jovanovic * KIND, either express or implied. See the License for the 17*8a106958SDamjan Jovanovic * specific language governing permissions and limitations 18*8a106958SDamjan Jovanovic * under the License. 19*8a106958SDamjan Jovanovic * 20*8a106958SDamjan Jovanovic *************************************************************/ 21*8a106958SDamjan Jovanovic 22*8a106958SDamjan Jovanovic 23*8a106958SDamjan Jovanovic 24*8a106958SDamjan Jovanovic #include <precomp.h> 25*8a106958SDamjan Jovanovic #include <cosv/persist.hxx> 26*8a106958SDamjan Jovanovic 27*8a106958SDamjan Jovanovic // NOT FULLY DECLARED SERVICES 28*8a106958SDamjan Jovanovic #include <cosv/streamstr.hxx> 29*8a106958SDamjan Jovanovic #include <cosv/ploc.hxx> 30*8a106958SDamjan Jovanovic 31*8a106958SDamjan Jovanovic 32*8a106958SDamjan Jovanovic #ifdef WNT 33*8a106958SDamjan Jovanovic #include <io.h> 34*8a106958SDamjan Jovanovic 35*8a106958SDamjan Jovanovic namespace csv 36*8a106958SDamjan Jovanovic { 37*8a106958SDamjan Jovanovic namespace ploc 38*8a106958SDamjan Jovanovic { 39*8a106958SDamjan Jovanovic 40*8a106958SDamjan Jovanovic bool Exists() const41*8a106958SDamjan JovanovicPersistent::Exists() const 42*8a106958SDamjan Jovanovic { 43*8a106958SDamjan Jovanovic return access( StrPath(), 00) == 0; 44*8a106958SDamjan Jovanovic } 45*8a106958SDamjan Jovanovic 46*8a106958SDamjan Jovanovic } // namespace ploc 47*8a106958SDamjan Jovanovic } // namespace csv 48*8a106958SDamjan Jovanovic 49*8a106958SDamjan Jovanovic 50*8a106958SDamjan Jovanovic #elif defined(UNX) 51*8a106958SDamjan Jovanovic #include <unistd.h> 52*8a106958SDamjan Jovanovic 53*8a106958SDamjan Jovanovic /* 54*8a106958SDamjan Jovanovic #ifndef __SUNPRO_CC 55*8a106958SDamjan Jovanovic #include <unistd.h> 56*8a106958SDamjan Jovanovic #else 57*8a106958SDamjan Jovanovic #define F_OK 0 // Test for existence of File 58*8a106958SDamjan Jovanovic extern int access(const char *, int); 59*8a106958SDamjan Jovanovic #endif 60*8a106958SDamjan Jovanovic */ 61*8a106958SDamjan Jovanovic 62*8a106958SDamjan Jovanovic namespace csv 63*8a106958SDamjan Jovanovic { 64*8a106958SDamjan Jovanovic namespace ploc 65*8a106958SDamjan Jovanovic { 66*8a106958SDamjan Jovanovic 67*8a106958SDamjan Jovanovic bool Exists() const68*8a106958SDamjan JovanovicPersistent::Exists() const 69*8a106958SDamjan Jovanovic { 70*8a106958SDamjan Jovanovic return access( StrPath(), F_OK ) == 0; 71*8a106958SDamjan Jovanovic } 72*8a106958SDamjan Jovanovic 73*8a106958SDamjan Jovanovic 74*8a106958SDamjan Jovanovic } // namespace ploc 75*8a106958SDamjan Jovanovic } // namespace csv 76*8a106958SDamjan Jovanovic 77*8a106958SDamjan Jovanovic #else 78*8a106958SDamjan Jovanovic #error For using csv::ploc there has to be defined: WNT or UNX. 79*8a106958SDamjan Jovanovic #endif 80*8a106958SDamjan Jovanovic 81*8a106958SDamjan Jovanovic namespace csv 82*8a106958SDamjan Jovanovic { 83*8a106958SDamjan Jovanovic namespace ploc 84*8a106958SDamjan Jovanovic { 85*8a106958SDamjan Jovanovic 86*8a106958SDamjan Jovanovic const char * StrPath() const87*8a106958SDamjan JovanovicPersistent::StrPath() const 88*8a106958SDamjan Jovanovic { 89*8a106958SDamjan Jovanovic if (sPath.empty() ) 90*8a106958SDamjan Jovanovic { 91*8a106958SDamjan Jovanovic #ifndef CSV_NO_MUTABLE 92*8a106958SDamjan Jovanovic StreamStr & rsPath = sPath; 93*8a106958SDamjan Jovanovic #else 94*8a106958SDamjan Jovanovic StreamStr & rsPath = const_cast< StreamStr& >(sPath); 95*8a106958SDamjan Jovanovic #endif 96*8a106958SDamjan Jovanovic rsPath.seekp(0); 97*8a106958SDamjan Jovanovic rsPath << MyPath(); 98*8a106958SDamjan Jovanovic if (MyPath().IsDirectory()) 99*8a106958SDamjan Jovanovic rsPath.pop_back(1); // Remove closing delimiter. 100*8a106958SDamjan Jovanovic } 101*8a106958SDamjan Jovanovic return sPath.c_str(); 102*8a106958SDamjan Jovanovic } 103*8a106958SDamjan Jovanovic 104*8a106958SDamjan Jovanovic } // namespace ploc 105*8a106958SDamjan Jovanovic } // namespace csv 106