fault/fm-common/sources/fmFile.cpp

58 lines
1.1 KiB
C++

//
// Copyright (c) 2014 Wind River Systems, Inc.
//
// SPDX-License-Identifier: Apache-2.0
//
#include <unistd.h>
#include <algorithm>
#include <string.h>
#include "fmFile.h"
#include "fmLog.h"
#define FM_FILE_MODE_MAX 10
#define FM_FILE_SIZE_MAX 2056
bool CfmFile::open(const char *path,eFileAccess a, bool binary) {
char attr[FM_FILE_MODE_MAX];
switch(a) {
case READ: strcpy(attr,"r");
break;
case READ_WRITE: strcpy(attr,"r+");
break;
case WRITE: strcpy(attr,"w");
break;
case APPEND: strcpy(attr,"a");
break;
}
if (binary) {
strcat(attr,"b");
}
fp = fopen(path,attr);
return fp!=NULL;
}
int is_return_char(int c) {
return (((char)c)=='\n' || ((char)c)=='\r') ? 1 : 0;
}
bool CfmFile::read_line(std::string &s) {
char st[MAX_LINE_LEN];
bool b = fgets(st,sizeof(st)-1,fp)!=NULL;
if (b) {
s = st;
s.erase(std::find_if(s.begin(), s.end(), std::ptr_fun<int, int>(is_return_char)),s.end());
} else s = "";
return b;
}
void CfmFile::close(){
fclose(fp);
}