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