📄 cutil-file.c
字号:
#include "cutil.h"/** * cutil_file_get_size * @pszName:文件名称 * * 获取文件的大小 * * Returns: 成功返回文件大小.失败返回-1 */int cutil_file_get_size(const char *pszName){ struct stat struStat; memset(&struStat,0,sizeof(struStat)); if(stat(pszName, &struStat) != 0) { cutil_log_error(N_("get file:%s info error:%s\n"), pszName, strerror(errno)); return -1; } return struStat.st_size;}/** * cutil_file_clone * @pszFrom:原始文件名称 * @pszTo:目标文件名称 * @nMode: 目标文件的权限 * * 复制源文件到目标文件 * * Returns: 成功返回0.失败返回-1 */int cutil_file_clone(const char *pszFrom, const char *pszTo, int nMode){ int nFromFd, nToFd; char szBuffer[4096]; int nBytesRead, nBytesWrite; char *pszBuffer; if((nFromFd = open(pszFrom, O_RDONLY)) == - 1) { cutil_log_error(N_("open file:%s error:%s\n"), pszFrom, strerror(errno)); return -1; } if ((nToFd = open(pszTo, O_WRONLY | O_CREAT, nMode)) == - 1) { cutil_log_error(N_("open file:%s error:%s\n"), pszTo, strerror(errno)); close(nFromFd); return -1; } while(1) { nBytesRead = read(nFromFd, szBuffer, sizeof(szBuffer)); if(nBytesRead == 0) break; if ((nBytesRead == - 1) && (errno != EINTR)) { cutil_log_error(N_("read file:%s error:%s\n"), pszFrom, strerror(errno)); close(nFromFd); close(nToFd); return -1; } pszBuffer = szBuffer; while(nBytesRead > 0) { nBytesWrite = write(nToFd, pszBuffer, nBytesRead); if ((nBytesWrite == - 1) && (errno != EINTR)) { cutil_log_error(N_("write file:%s error:%s\n"), pszTo, strerror(errno)); close(nFromFd); close(nToFd); return -1; } pszBuffer += nBytesWrite; nBytesRead -= nBytesWrite; } } close(nFromFd); close(nToFd); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -