53 #include <sys/types.h>
55 #include <sys/ioctl.h>
62 #if defined( HAVE_SYS_FILIO_H )
63 # include <sys/filio.h>
66 #if defined(__APPLE__) && defined(__MACH__)
67 # define lseek64 lseek
121 bool SysFile::open(
const char *name,
int openFlags,
int openMode,
int shareMode)
126 fileHandle = ::open64(name, openFlags, (mode_t)openMode);
230 buffer = (
char *)malloc(length);
393 return bytesRead > 0 ? true :
false;
418 bytesRead += blocksize;
433 return bytesRead > 0 ? true :
false;
444 bytesRead += blockRead;
501 bytesWritten = written;
535 if ((
flags & O_APPEND) != 0)
553 bytesWritten = written;
566 bytesWritten = written;
575 return write(&ch, 1, len);
588 return read(&ch, 1, len);
593 return write(data, strlen(data), len);
613 if (!
write(mybuffer, len, bytesWritten))
621 bytesWritten += termlen;
631 for (i = 0; i < bufferLen - 1; i++)
636 if (!this->
read(mybuffer + i, 1, len))
647 if (mybuffer[i] ==
'\n')
652 if (i >= 1 && mybuffer[i - 1] ==
'\r')
715 if (!
seek(start, SEEK_SET, start))
786 if (mybuffer == NULL)
802 endPosition = startPosition;
807 if (!
read(mybuffer, readLength, bytesRead))
814 endPosition = startPosition;
825 endPosition = startPosition;
831 while (offset < bytesRead)
835 if (mybuffer[offset] ==
'\n')
843 endPosition = startPosition + offset + 1;
853 startPosition += bytesRead;
883 position = lseek64(
fileHandle, location, SEEK_SET);
929 position = lseek64(
fileHandle, offset, SEEK_SET);
933 position = lseek64(
fileHandle, offset, SEEK_CUR);
937 position = lseek64(
fileHandle, offset, SEEK_END);
992 struct stat64 fileInfo;
996 if ((fileInfo.st_mode & S_IFREG) != 0)
998 size = fileInfo.st_size;
1021 struct stat64 fileInfo;
1022 if (stat64(name, &fileInfo) == 0)
1025 if ((fileInfo.st_mode & S_IFREG) != 0)
1027 size = fileInfo.st_size;
1054 struct stat64 fileInfo;
1058 if ((fileInfo.st_mode & S_IFREG) != 0)
1060 time = ctime(&fileInfo.st_mtime);
1079 struct stat64 fileInfo;
1080 if (stat64(name, &fileInfo) == 0)
1083 if ((fileInfo.st_mode & (S_IFREG | S_IFDIR)) != 0)
1085 time = ctime(&fileInfo.st_mtime);
1111 struct stat64 fileInfo;
1115 if ((fileInfo.st_mode & S_IFCHR) != 0)
1121 if ((fileInfo.st_mode & S_IWRITE) != 0)
1126 if ((fileInfo.st_mode & S_IREAD) != 0)
1131 if ((fileInfo.st_mode & S_IFIFO) != 0)
1152 setbuf(stdin, NULL);
1170 setbuf(stdout, NULL);
bool putLine(const char *buffer, size_t len, size_t &bytesWritten)
bool gets(char *buffer, size_t len, size_t &bytesRead)
bool nextLine(size_t &bytesRead)
bool getSize(int64_t &size)
bool seek(int64_t offset, int direction, int64_t &position)
bool seekForwardLines(int64_t startPosition, int64_t &lineCount, int64_t &endPosition)
@ LINE_POSITIONING_BUFFER
static const int stdinHandle
static const int stderrHandle
bool puts(const char *data, size_t &bytesWritten)
bool getPosition(int64_t &position)
void setBuffering(bool buffer, size_t length)
bool getTimeStamp(const char *&time)
static const int stdoutHandle
bool open(const char *name, int openFlags, int openMode, int shareMode)
bool read(char *buf, size_t len, size_t &bytesRead)
bool countLines(int64_t &count)
bool write(const char *data, size_t len, size_t &bytesWritten)
bool setPosition(int64_t location, int64_t &position)