⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cr_tmp_file.c

📁 在SCO UNIX制定界面程序 可根据文件配制菜单,而不必修改源程序,非常方便
💻 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 + -