| /************************************************************************ |
| * |
| * file.h - common file I/O definitions |
| * |
| * $Id$ |
| * |
| *************************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed |
| * with this work for additional information regarding copyright |
| * ownership. The ASF licenses this file to you 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. |
| * |
| * Copyright 2004-2006 Rogue Wave Software. |
| * |
| **************************************************************************/ |
| |
| #ifndef RW_FILE_H_INCLUDED |
| #define RW_FILE_H_INCLUDED |
| |
| |
| #include <testdefs.h> // for test config macros |
| |
| |
| #ifndef _MSC_VER |
| // POSIX special files: |
| // http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap10.html |
| # define DEV_CONSOLE "/dev/console" |
| # define DEV_NULL "/dev/null" |
| # define DEV_TTY "/dev/tty" |
| #else // if defined (_MSC_VER) |
| # define DEV_CONSOLE "CON:" |
| # define DEV_NULL "NUL:" |
| # define DEV_TTY "CON:" |
| #endif // _MSC_VER |
| |
| |
| #if _RWSTD_PATH_SEP == '/' |
| # define SLASH "/" |
| # define SHELL_MV "mv " |
| # define SHELL_RM_F "rm -f " |
| # define SHELL_RM_RF "rm -rf " |
| #else |
| # define SLASH "\\" |
| # define SHELL_MV "move /Y " |
| # define SHELL_RM_F "del /F " |
| # define SHELL_RM_RF "rmdir /Q /S " |
| #endif |
| |
| |
| // writes chars using symbolic names from the Portable Character Set (PCS) |
| // or using the <U00XX> notations for narrow characters outside that set |
| // if teh second argument is 0, writes out the CHARMAP section of the locale |
| // definition file for the Portable Character Set (in POSIX-compliant format) |
| _TEST_EXPORT void |
| pcs_write (void*, const char*); |
| |
| |
| // creates a unique temporary file name as if by calling tmpnam() |
| // but avoiding various platform-specific quirks (such as HP-UX |
| // failure when _REENTRANT is #defined or GNU glibc warnings) |
| _TEST_EXPORT |
| const char* rw_tmpnam (char*); |
| |
| // tries to open file named by the first argument and, if successful, |
| // allocates a block of storage sufficiently large to hold the file's |
| // entire contents, as determined by the stat() function; it then reads |
| // the contents of the file into the block of storage, returning a pointer |
| // to the block; if the second argument is non-0, sets the pointed-to value |
| // to the number of bytes read |
| // as a special case, when the first argument is 0 and the second is not, |
| // the function takes the third argument as a pointer to the buffer that |
| // it will use to read the contents of files into in subsequent calls, |
| // provided the buffer is large enough |
| _TEST_EXPORT void* |
| rw_fread (const char*, |
| _RWSTD_SIZE_T* = 0 /* size in bytes */, |
| const char* = "r" /* stdio open mode */); |
| |
| // if the second argument is non-0, writes N bytes starting at that |
| // location into the file named by the first argument; N is taken |
| // from the value pointed to by the third argument, if non-0, or |
| // as the result of calling strlen() on the buffer pointed to by |
| // the second argument; if the second argument is 0, the function |
| // removes the named file; returns the number of bytes written |
| _TEST_EXPORT _RWSTD_SIZE_T |
| rw_fwrite (const char*, |
| const void*, |
| _RWSTD_SIZE_T = ~0 /* size in bytes */, |
| const char* = "w" /* stdio open mode */ ); |
| |
| |
| _TEST_EXPORT int |
| rw_nextfd (int*); |
| |
| #endif // RW_FILE_H_INCLUDED |