📄 cr_tmp_file.c
字号:
/*=============================================================
功能: 创建WORKDIR/log目录以及该目录下的子目录
作者:
王永忠:2001/09/03
===============================================================*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <errno.h>
#include "all.h"
#include "tool.h"
int create_tmp_file(char *fname)
{
struct stat t_stat;
char filename[80];
char init_val[2];
FILE *fp=NULL;
sprintf(filename, "%s/%s", getenv("WORKDIR"), fname);
if ( stat(filename, &t_stat) == -1 ) {
if (errno == ENOENT) {
//if (mkdir(filename, S_IREAD|S_IWRITE|S_IEXEC|S_IRGRP|S_IWGRP|S_IXGRP) < 0)
if (mkdir(filename, 0777) < 0)
return -1;
else {
if (strcmp(fname, "/etc/saf") != 0)
return 0;
else
goto ttt;
}
}
return -1;
}
if (S_ISDIR(t_stat.st_mode) == 0) {
if (unlink(filename) < 0)
return -1;
if (mkdir(filename, 0777) < 0)
return -1;
else {
if (strcmp(fname, "/etc/saf") != 0)
return 0;
else
goto ttt;
}
}
ttt:
//如果为log/saf目录,则创建临时文件
if (strcmp(fname, "/etc/saf") == 0) {
//创建SAF0,SAF1,SAFFILE文件
sprintf(filename, "%s%s/%s", getenv("WORKDIR"), fname, "SAF0");
if ((fp = fopen(filename, "w")) == NULL)
return -1;
close(fp);
sprintf(filename, "%s%s/%s", getenv("WORKDIR"), fname, "SAF1");
if ((fp = fopen(filename, "w")) == NULL)
return -1;
close(fp);
sprintf(filename, "%s%s/%s", getenv("WORKDIR"), fname, "SAFFILE");
if ((fp = fopen(filename, "w")) == NULL)
return -1;
else {
sprintf(init_val, "0");
if (fwrite(init_val, 1, 1, fp) != 1) {
fclose(fp);
return -1;
}
}
close(fp);
}
return 0;
}
/************************************************************************
功能:
判断使用$(WORKDIR)/log/saf/SAF0还是SAF1文件,保存数据库操作失败时
存储SAF记录的文件
输入:
输出:
-1 failed
0 SAF0
1 SAF1
************************************************************************/
int check_SAFFILE() {
FILE *fp;
char tmp_buf[16];
char filename[64];
int ret=0;
int tmp_ret=0;
sprintf(filename, "%s/etc/saf/SAFFILE", getenv("WORKDIR"));
if ((fp = fopen(filename, "r")) == NULL) {
errcall(ERROR, "open file(%s) failed(%d)", filename, errno);
return -1;
}
tmp_ret = fread(tmp_buf, 1, 1, fp);
if (tmp_ret == 0) {
fclose(fp);
return 0;
}
else if (tmp_ret != 1) {
errcall(ERROR, "read file(%s) failed(%d)", filename, errno);
fclose(fp);
return -1;
}
if (tmp_buf[0] == 0)
ret = 0;
else if (tmp_buf[0] == 1)
ret = 1;
else
ret = 0;
fclose(fp);
return ret;
}
/************************************************************************
功能:
更新$(WORKDIR)/log/saf/SAFFILE文件
输入:
int value
输出:
-1 failed
0 成功
************************************************************************/
int update_SAFFILE(int value) {
FILE *fp;
char tmp_buf[16];
char filename[64];
int ret=0;
sprintf(filename, "%s/etc/saf/SAFFILE", getenv("WORKDIR"));
if ((fp = fopen(filename, "w")) == NULL) {
errcall(ERROR, "open file(%s) failed(%d)", filename, errno);
return -1;
}
if (fwrite(&value, 1, 1, fp) != 1) {
errcall(ERROR, "write file(%s) failed(%d)", filename, errno);
fclose(fp);
return -1;
}
fclose(fp);
return 0;
}
/************************************************************************
功能: 取清算日期
输入: NULL
输出:
0 成功 ==>settle_date
-1 失败
************************************************************************/
int get_settle_date(char *settle_date)
{
SETTLE_RESULT s_r;
char tmp_file[128];
FILE *fp;
sprintf(tmp_file, "%s/etc/settle_result", getenv("WORKDIR"));
if ((fp = fopen(tmp_file, "r")) == NULL) {
daylog(ERROR, "Open etc/settle_result failed");
getdatef(settle_date, "");
return -1;
}
if ((fread(&s_r, sizeof(SETTLE_RESULT), 1, fp)) != 1) {
daylog(ERROR, "Read etc/settle_result failed");
getdatef(settle_date, "");
return -1;
}
if (s_r.result == 0) {
strcpy(settle_date, s_r.settle_date);
}
else
getdatef(settle_date, "");
fclose(fp);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -