您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ FreeFile函数代码示例

51自学网 2021-06-01 20:48:17
  C++
这篇教程C++ FreeFile函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中FreeFile函数的典型用法代码示例。如果您正苦于以下问题:C++ FreeFile函数的具体用法?C++ FreeFile怎么用?C++ FreeFile使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了FreeFile函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: FreeFile

bool TSFrameReader::SetFile(string filePath) {	FreeFile();	_freeFile = true;	_pFile = GetFile(filePath, 4 * 1024 * 1024);	if (_pFile == NULL) {		FATAL("Unable to open file %s", STR(filePath));		return false;	}	if (!DetermineChunkSize()) {		FATAL("Unable to determine chunk size");		FreeFile();		return false;	}	SetChunkSize(_chunkSize);	if (!_pFile->SeekTo(_chunkSizeDetectionCount)) {		FATAL("Unable to seek to the beginning of file");		FreeFile();		return false;	}	_eof = _pFile->IsEOF();	_defaultBlockSize = ((1024 * 1024 * 2) / _chunkSize) * _chunkSize;	return true;}
开发者ID:9aa5,项目名称:crtmpserver,代码行数:26,


示例2: pg_record_shmem_shutdown

/* Dumps the histogram data into a file (with a md5 hash of the contents at the beginning). */staticvoid pg_record_shmem_shutdown(int code, Datum arg) {        FILE * file;        /* do we need to write the queries? */    if (query_buffer->next == 0) {        return;    }        prepare_file(log_file, query_buffer, query_buffer->next);        file = AllocateFile(log_file->curr_filename, PG_BINARY_A);    if (file == NULL)        goto error;        /* now write the actual shared segment */    if (fwrite(query_buffer->buffer, query_buffer->next, 1, file) != 1)       goto error;        FreeFile(file);        return;error:    ereport(LOG,            (errcode_for_file_access(),             errmsg("could not write query buffer to the file /"%s/": %m",                    log_file->curr_filename)));    if (file)        FreeFile(file);    }
开发者ID:tvondra,项目名称:query_recorder,代码行数:34,


示例3: buffer_write

/* Dumps the histogram data into a file (with a md5 hash of the contents at the beginning). */staticvoid buffer_write() {        FILE * file;        prepare_file(log_file, query_buffer, query_buffer->next);        file = AllocateFile(log_file->curr_filename, PG_BINARY_A);    if (file == NULL)        goto error;        /* now write the actual shared segment */    if (fwrite(query_buffer->buffer, query_buffer->next, 1, file) != 1)        goto error;        FreeFile(file);        return;error:    ereport(LOG,            (errcode_for_file_access(),             errmsg("could not write query histogram file /"%s/": %m",                    log_file->curr_filename)));    if (file)        FreeFile(file);    }
开发者ID:tvondra,项目名称:query_recorder,代码行数:29,


示例4: pgss_shmem_shutdown

/* * shmem_shutdown hook: Dump statistics into file. * * Note: we don't bother with acquiring lock, because there should be no * other processes running when this is called. */static voidpgss_shmem_shutdown(int code, Datum arg){	FILE	   *file;	HASH_SEQ_STATUS hash_seq;	int32		num_entries;	pgssEntry  *entry;	/* Don't try to dump during a crash. */	if (code)		return;	/* Safety check ... shouldn't get here unless shmem is set up. */	if (!pgss || !pgss_hash)		return;	/* Don't dump if told not to. */	if (!pgss_save)		return;	file = AllocateFile(PGSS_DUMP_FILE, PG_BINARY_W);	if (file == NULL)		goto error;	if (fwrite(&PGSS_FILE_HEADER, sizeof(uint32), 1, file) != 1)		goto error;	num_entries = hash_get_num_entries(pgss_hash);	if (fwrite(&num_entries, sizeof(int32), 1, file) != 1)		goto error;	hash_seq_init(&hash_seq, pgss_hash);	while ((entry = hash_seq_search(&hash_seq)) != NULL)	{		int			len = entry->key.query_len;		if (fwrite(entry, offsetof(pgssEntry, mutex), 1, file) != 1 ||			fwrite(entry->query, 1, len, file) != len)			goto error;	}	if (FreeFile(file))	{		file = NULL;		goto error;	}	return;error:	ereport(LOG,			(errcode_for_file_access(),			 errmsg("could not write pg_stat_statement file /"%s/": %m",					PGSS_DUMP_FILE)));	if (file)		FreeFile(file);	unlink(PGSS_DUMP_FILE);}
开发者ID:HBPSP8Repo,项目名称:NoDB,代码行数:63,


示例5: utl_file_fcopy

/* * CREATE FUNCTION utl_file.fcopy( *     src_location		text, *     src_filename		text, *     dest_location	text, *     dest_filename	text, *     start_line		integer DEFAULT NULL *     end_line			integer DEFAULT NULL) */Datumutl_file_fcopy(PG_FUNCTION_ARGS){	char	   *srcpath;	char	   *dstpath;	int			start_line;	int			end_line;	FILE	   *srcfile;	FILE	   *dstfile;	NOT_NULL_ARG(0);	NOT_NULL_ARG(1);	NOT_NULL_ARG(2);	NOT_NULL_ARG(3);	srcpath = get_safe_path(PG_GETARG_TEXT_P(0), PG_GETARG_TEXT_P(1));	dstpath = get_safe_path(PG_GETARG_TEXT_P(2), PG_GETARG_TEXT_P(3));	start_line = PG_GETARG_IF_EXISTS(4, INT32, 1);	if (start_line <= 0)		ereport(ERROR,				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),				errmsg("start_line must be positive (%d passed)", start_line)));	end_line = PG_GETARG_IF_EXISTS(5, INT32, INT_MAX);	if (end_line <= 0)		ereport(ERROR,				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),				errmsg("end_line must be positive (%d passed)", end_line)));	srcfile = AllocateFile(srcpath, "rt");	if (srcfile == NULL)	{		/* failed to open src file. */		IO_EXCEPTION();	}	dstfile = AllocateFile(dstpath, "wt");	if (dstfile == NULL)	{		/* failed to open dst file. */		fclose(srcfile);		IO_EXCEPTION();	}	if (copy_text_file(srcfile, dstfile, start_line, end_line))		IO_EXCEPTION();	FreeFile(srcfile);	FreeFile(dstfile);	PG_RETURN_VOID();}
开发者ID:50wu,项目名称:gpdb,代码行数:62,


示例6: ReaderClose

/** * @brief clean up Reader structure. */int64ReaderClose(Reader *rd, bool onError){	int64	skip = 0;	if (rd == NULL)		return 0;	/* Close and release members. */	if (rd->parser)		skip = ParserTerm(rd->parser);	CheckerTerm(&rd->checker);	if (!onError)	{		if (rd->parse_fp != NULL && FreeFile(rd->parse_fp) < 0)			ereport(WARNING,					(errcode_for_file_access(),					 errmsg("could not close parse bad file /"%s/": %m",							rd->parse_badfile)));		if (rd->infile != NULL)			pfree(rd->infile);		if (rd->logfile != NULL)			pfree(rd->logfile);		if (rd->parse_badfile != NULL)			pfree(rd->parse_badfile);		pfree(rd);	}	return skip;}
开发者ID:gatehouse,项目名称:pg_bulkload,代码行数:36,


示例7: tsearch_readline_end

/* * Close down after reading a file with tsearch_readline() */voidtsearch_readline_end(tsearch_readline_state *stp){	FreeFile(stp->fp);	/* Pop the error context stack */	error_context_stack = stp->cb.previous;}
开发者ID:0x0FFF,项目名称:postgres,代码行数:10,


示例8: FreeFile

//------------------------------------------------------int FrameSeq::Load(AnsiString filename){   FreeFile();   try {File=new TFileStream(filename,fmOpenRead|fmShareExclusive);}   catch(...) {return 1;}   File->Seek(0,soFromBeginning);   Header=new __int8[4100];   File->Read(Header,4100);   File->Seek(108,soFromBeginning);   short int datatype;   File->Read(&datatype,2);   if(datatype == 0) return 2; //FLOATING POINT intensity format is not supported   DatLength=datatype>1?2:4;   File->Seek(1446,soFromBeginning);   int NFramestemp=0,XDimtemp=0,YDimtemp=0;   File->Read(&NFramestemp,4);   File->Seek(42,soFromBeginning);   File->Read(&XDimtemp,2);   File->Seek(656,soFromBeginning);   File->Read(&YDimtemp,2);   if( (NFramestemp<1)||(NFramestemp>MaxFrames)||(!datatype)||(XDimtemp<1)     ||(XDimtemp>MaxDim)||(YDimtemp<1)||(YDimtemp>MaxDim) )   {      delete File; File=NULL;      return 1;   }   NFrames=NFramestemp;   XDim=XDimtemp; YDim=YDimtemp;   CurFrame=new Frame(XDim,YDim);//   LoadFrame(1);   return 0;};
开发者ID:mirzov,项目名称:BrightStat,代码行数:33,


示例9: XLogArchiveNotify

/* * XLogArchiveNotify * * Create an archive notification file * * The name of the notification file is the message that will be picked up * by the archiver, e.g. we write 0000000100000001000000C6.ready * and the archiver then knows to archive XLOGDIR/0000000100000001000000C6, * then when complete, rename it to 0000000100000001000000C6.done */voidXLogArchiveNotify(const char *xlog){	char		archiveStatusPath[MAXPGPATH];	FILE	   *fd;	/* insert an otherwise empty file called <XLOG>.ready */	StatusFilePath(archiveStatusPath, xlog, ".ready");	fd = AllocateFile(archiveStatusPath, "w");	if (fd == NULL)	{		ereport(LOG,				(errcode_for_file_access(),				 errmsg("could not create archive status file /"%s/": %m",						archiveStatusPath)));		return;	}	if (FreeFile(fd))	{		ereport(LOG,				(errcode_for_file_access(),				 errmsg("could not write archive status file /"%s/": %m",						archiveStatusPath)));		return;	}	/* Notify archiver that it's got something to do */	if (IsUnderPostmaster)		SendPostmasterSignal(PMSIGNAL_WAKEN_ARCHIVER);}
开发者ID:JiannengSun,项目名称:postgres,代码行数:40,


示例10: FindMyDatabase

/* * FindMyDatabase -- get the critical info needed to locate my database * * Find the named database in pg_database, return its database OID and the * OID of its default tablespace.  Return TRUE if found, FALSE if not. * * Since we are not yet up and running as a backend, we cannot look directly * at pg_database (we can't obtain locks nor participate in transactions). * So to get the info we need before starting up, we must look at the "flat * file" copy of pg_database that is helpfully maintained by flatfiles.c. * This is subject to various race conditions, so after we have the * transaction infrastructure started, we have to recheck the information; * see InitPostgres. */static boolFindMyDatabase(const char *name, Oid *db_id, Oid *db_tablespace){    bool		result = false;    char	   *filename;    FILE	   *db_file;    char		thisname[NAMEDATALEN];    TransactionId db_frozenxid;    filename = database_getflatfilename();    db_file = AllocateFile(filename, "r");    if (db_file == NULL)        ereport(FATAL,                (errcode_for_file_access(),                 errmsg("could not open file /"%s/": %m", filename)));    while (read_pg_database_line(db_file, thisname, db_id,                                 db_tablespace, &db_frozenxid))    {        if (strcmp(thisname, name) == 0)        {            result = true;            break;        }    }    FreeFile(db_file);    pfree(filename);    return result;}
开发者ID:RuchikaGupta,项目名称:fa12,代码行数:45,


示例11: pg_backup_start_time

/* * Returns start time of an online exclusive backup. * * When there's no exclusive backup in progress, the function * returns NULL. */Datumpg_backup_start_time(PG_FUNCTION_ARGS){	Datum		xtime;	FILE	   *lfp;	char		fline[MAXPGPATH];	char		backup_start_time[30];	/*	 * See if label file is present	 */	lfp = AllocateFile(BACKUP_LABEL_FILE, "r");	if (lfp == NULL)	{		if (errno != ENOENT)			ereport(ERROR,					(errcode_for_file_access(),					 errmsg("could not read file /"%s/": %m",							BACKUP_LABEL_FILE)));		PG_RETURN_NULL();	}	/*	 * Parse the file to find the START TIME line.	 */	backup_start_time[0] = '/0';	while (fgets(fline, sizeof(fline), lfp) != NULL)	{		if (sscanf(fline, "START TIME: %25[^/n]/n", backup_start_time) == 1)			break;	}	/* Check for a read error. */	if (ferror(lfp))		ereport(ERROR,				(errcode_for_file_access(),			   errmsg("could not read file /"%s/": %m", BACKUP_LABEL_FILE)));	/* Close the backup label file. */	if (FreeFile(lfp))		ereport(ERROR,				(errcode_for_file_access(),			  errmsg("could not close file /"%s/": %m", BACKUP_LABEL_FILE)));	if (strlen(backup_start_time) == 0)		ereport(ERROR,				(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),				 errmsg("invalid data in file /"%s/"", BACKUP_LABEL_FILE)));	/*	 * Convert the time string read from file to TimestampTz form.	 */	xtime = DirectFunctionCall3(timestamptz_in,								CStringGetDatum(backup_start_time),								ObjectIdGetDatum(InvalidOid),								Int32GetDatum(-1));	PG_RETURN_DATUM(xtime);}
开发者ID:Gordiychuk,项目名称:postgres,代码行数:65,


示例12: pg_read_file

/* * Read a section of a file, returning it as text */Datumpg_read_file(PG_FUNCTION_ARGS){	text	   *filename_t = PG_GETARG_TEXT_P(0);	int64		seek_offset = PG_GETARG_INT64(1);	int64		bytes_to_read = PG_GETARG_INT64(2);	char	   *buf;	size_t		nbytes;	FILE	   *file;	char	   *filename;	if (!superuser())		ereport(ERROR,				(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),				 (errmsg("must be superuser to read files"))));	filename = convert_and_check_filename(filename_t);	if ((file = AllocateFile(filename, PG_BINARY_R)) == NULL)		ereport(ERROR,				(errcode_for_file_access(),				 errmsg("could not open file /"%s/" for reading: %m",						filename)));	if (fseeko(file, (off_t) seek_offset,			   (seek_offset >= 0) ? SEEK_SET : SEEK_END) != 0)		ereport(ERROR,				(errcode_for_file_access(),				 errmsg("could not seek in file /"%s/": %m", filename)));	if (bytes_to_read < 0)		ereport(ERROR,				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),				 errmsg("requested length cannot be negative")));	/* not sure why anyone thought that int64 length was a good idea */	if (bytes_to_read > (MaxAllocSize - VARHDRSZ))		ereport(ERROR,				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),				 errmsg("requested length too large")));	buf = palloc((Size) bytes_to_read + VARHDRSZ);	nbytes = fread(VARDATA(buf), 1, (size_t) bytes_to_read, file);	if (ferror(file))		ereport(ERROR,				(errcode_for_file_access(),				 errmsg("could not read file /"%s/": %m", filename)));	SET_VARSIZE(buf, nbytes + VARHDRSZ);	FreeFile(file);	pfree(filename);	PG_RETURN_TEXT_P(buf);}
开发者ID:karthijrk,项目名称:gpdb,代码行数:60,


示例13: read_binary_file

/* * Read a section of a file, returning it as bytea * * Caller is responsible for all permissions checking. * * We read the whole of the file when bytes_to_read is negative. */bytea *read_binary_file(const char *filename, int64 seek_offset, int64 bytes_to_read){	bytea	   *buf;	size_t		nbytes;	FILE	   *file;	if (bytes_to_read < 0)	{		if (seek_offset < 0)			bytes_to_read = -seek_offset;		else		{			struct stat fst;			if (stat(filename, &fst) < 0)				ereport(ERROR,						(errcode_for_file_access(),						 errmsg("could not stat file /"%s/": %m", filename)));			bytes_to_read = fst.st_size - seek_offset;		}	}	/* not sure why anyone thought that int64 length was a good idea */	if (bytes_to_read > (MaxAllocSize - VARHDRSZ))		ereport(ERROR,				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),				 errmsg("requested length too large")));	if ((file = AllocateFile(filename, PG_BINARY_R)) == NULL)		ereport(ERROR,				(errcode_for_file_access(),				 errmsg("could not open file /"%s/" for reading: %m",						filename)));	if (fseeko(file, (off_t) seek_offset,			   (seek_offset >= 0) ? SEEK_SET : SEEK_END) != 0)		ereport(ERROR,				(errcode_for_file_access(),				 errmsg("could not seek in file /"%s/": %m", filename)));	buf = (bytea *) palloc((Size) bytes_to_read + VARHDRSZ);	nbytes = fread(VARDATA(buf), 1, (size_t) bytes_to_read, file);	if (ferror(file))		ereport(ERROR,				(errcode_for_file_access(),				 errmsg("could not read file /"%s/": %m", filename)));	SET_VARSIZE(buf, nbytes + VARHDRSZ);	FreeFile(file);	return buf;}
开发者ID:BioBD,项目名称:Hypothetical_Indexes,代码行数:64,


示例14: load_dh_file

/* *	Load precomputed DH parameters. * *	To prevent "downgrade" attacks, we perform a number of checks *	to verify that the DBA-generated DH parameters file contains *	what we expect it to contain. */static DH  *load_dh_file(char *filename, bool isServerStart){	FILE	   *fp;	DH		   *dh = NULL;	int			codes;	/* attempt to open file.  It's not an error if it doesn't exist. */	if ((fp = AllocateFile(filename, "r")) == NULL)	{		ereport(isServerStart ? FATAL : LOG,				(errcode_for_file_access(),				 errmsg("could not open DH parameters file /"%s/": %m",						filename)));		return NULL;	}	dh = PEM_read_DHparams(fp, NULL, NULL, NULL);	FreeFile(fp);	if (dh == NULL)	{		ereport(isServerStart ? FATAL : LOG,				(errcode(ERRCODE_CONFIG_FILE_ERROR),				 errmsg("could not load DH parameters file: %s",						SSLerrmessage(ERR_get_error()))));		return NULL;	}	/* make sure the DH parameters are usable */	if (DH_check(dh, &codes) == 0)	{		ereport(isServerStart ? FATAL : LOG,				(errcode(ERRCODE_CONFIG_FILE_ERROR),				 errmsg("invalid DH parameters: %s",						SSLerrmessage(ERR_get_error()))));		return NULL;	}	if (codes & DH_CHECK_P_NOT_PRIME)	{		ereport(isServerStart ? FATAL : LOG,				(errcode(ERRCODE_CONFIG_FILE_ERROR),				 errmsg("invalid DH parameters: p is not prime")));		return NULL;	}	if ((codes & DH_NOT_SUITABLE_GENERATOR) &&		(codes & DH_CHECK_P_NOT_SAFE_PRIME))	{		ereport(isServerStart ? FATAL : LOG,				(errcode(ERRCODE_CONFIG_FILE_ERROR),				 errmsg("invalid DH parameters: neither suitable generator or safe prime")));		return NULL;	}	return dh;}
开发者ID:adityavs,项目名称:postgres,代码行数:63,


示例15: FileSourceClose

static voidFileSourceClose(FileSource *self){	if (self->fd != NULL && FreeFile(self->fd) < 0)	{		ereport(WARNING, (errcode_for_file_access(),			errmsg("could not close source file: %m")));	}	pfree(self);}
开发者ID:bwtakacy,项目名称:prev_pg_bulkload_repo,代码行数:10,


示例16: set_short_version

/* * write out the PG_VERSION file in the specified directory */static voidset_short_version(const char *path){	char	   *short_version;	bool		gotdot = false;	int			end;	char	   *fullname;	FILE	   *version_file;	/* Construct short version string (should match initdb.c) */	short_version = pstrdup(PG_VERSION);	for (end = 0; short_version[end] != '/0'; end++)	{		if (short_version[end] == '.')		{			Assert(end != 0);			if (gotdot)				break;			else				gotdot = true;		}		else if (short_version[end] < '0' || short_version[end] > '9')		{			/* gone past digits and dots */			break;		}	}	Assert(end > 0 && short_version[end - 1] != '.' && gotdot);	short_version[end] = '/0';	/* Now write the file */	fullname = palloc(strlen(path) + 11 + 1);	sprintf(fullname, "%s/PG_VERSION", path);	version_file = AllocateFile(fullname, PG_BINARY_W);	if (version_file == NULL)		ereport(ERROR,				(errcode_for_file_access(),				 errmsg("could not write to file /"%s/": %m",						fullname)));	fprintf(version_file, "%s/n", short_version);	if (FreeFile(version_file))		ereport(ERROR,				(errcode_for_file_access(),				 errmsg("could not write to file /"%s/": %m",						fullname)));	pfree(fullname);	pfree(short_version);}
开发者ID:shubham2094,项目名称:postgresql_8.1,代码行数:53,


示例17: DoNames

int DoNames(int state) {	int wnum = (int)CurrentWorld;	int lnum = (int)CurrentLevel;		// Skip the title screen	// and only process the code if the State is set to 1	// (the screen has been initialised)	if (state == 1 && lnum != STAGE_TITLE) {		// grab the CRSIN object		Actor *ptr = FindActorByType(CRSIN, 0);				// FIX !!!!!				if (ptr != 0) {			void *worldObj = EmbeddedLayout_FindTextBoxByName((Layout*)((u32)ptr+0xB0), "TXT_WorldName");			void *levelObj = EmbeddedLayout_FindTextBoxByName((Layout*)((u32)ptr+0xB0), "TXT_LevelName");			if (worldObj == 0 || levelObj == 0) return state;						/*char *file = RetrieveFileFromArc(ARC_TABLE, "Mario", "newer/names.bin");			char *worldname = file + (wnum * 0x40);			char *levelname = file + 0x280 + (wnum * 0xA80) + (lnum * 0x40);*/			FileHandle fh;			void *info = LoadFile(&fh, "/NewerRes/LevelInfo.bin");						LevelInfo_Prepare(&fh);			LevelInfo_Entry *entry = LevelInfo_SearchSlot(info, wnum, lnum);			char *worldname = LevelInfo_GetName(info, entry);			char *levelname = "";						void *vtable = *((void**)levelObj);			void *funcaddr = *((void**)((u32)vtable+0x7C));			int (*SetString)(void*, unsigned short*, unsigned short);			SetString = (int(*)(void*, unsigned short*, unsigned short))funcaddr;						unsigned short wbuffer[0x40], lbuffer[0x40];			for (int i = 0; i < 0x40; i++) {				wbuffer[i] = (unsigned short)worldname[i];				lbuffer[i] = (unsigned short)levelname[i];			}						SetString(worldObj, wbuffer, 0);			SetString(levelObj, lbuffer, 0);						FreeFile(&fh);		}	} else {	}		return state;}
开发者ID:InfosHack,项目名称:NewerSMBW,代码行数:50,


示例18: LoggerClose

voidLoggerClose(void){	if (logger.fp != NULL && FreeFile(logger.fp) < 0)		ereport(WARNING,				(errcode_for_file_access(),				 errmsg("could not close loader log file /"%s/": %m",						logger.logfile)));	if (logger.logfile != NULL)		pfree(logger.logfile);	memset(&logger, 0, sizeof(logger));}
开发者ID:Komzpa,项目名称:pg_bulkload,代码行数:14,


示例19: query_write

/* Dumps the histogram data into a file (with a md5 hash of the contents at the beginning). */staticvoid query_write(double duration, const char * query, int len, const char * header, int hlen) {        FILE * file;        /* write the buffer first */    buffer_write();        /* now write the query */    prepare_file(log_file, query_buffer, hlen + len);        file = AllocateFile(log_file->curr_filename, PG_BINARY_A);    if (file == NULL)        goto error;        /* now write the actual shared segment */    if (fwrite(header, hlen, 1, file) != 1)       goto error;        /* now write the actual shared segment */    if (fwrite(query, len, 1, file) != 1)       goto error;        FreeFile(file);        return;error:    ereport(LOG,            (errcode_for_file_access(),             errmsg("could not write query to the file /"%s/": %m",                    log_file->curr_filename)));    if (file)        FreeFile(file);    }
开发者ID:tvondra,项目名称:query_recorder,代码行数:37,


示例20: ErrorLogWrite

/* * Write into the error log file.  This opens the file every time, * so that we can keep it simple to deal with concurrent write. */static voidErrorLogWrite(CdbSreh *cdbsreh){	HeapTuple	tuple;	char		filename[MAXPGPATH];	FILE	   *fp;	pg_crc32	crc;	Assert(OidIsValid(cdbsreh->relid));	ErrorLogFileName(filename, MyDatabaseId, cdbsreh->relid);	tuple = FormErrorTuple(cdbsreh);	INIT_CRC32C(crc);	COMP_CRC32C(crc, tuple->t_data, tuple->t_len);	FIN_CRC32C(crc);	LWLockAcquire(ErrorLogLock, LW_EXCLUSIVE);	fp = AllocateFile(filename, "a");	if (!fp)	{		mkdir(ErrorLogDir, S_IRWXU);		fp = AllocateFile(filename, "a");	}	if (!fp)		ereport(ERROR,				(errmsg("could not open /"%s/": %m", filename)));	/*	 * format:	 *     0-4: length	 *     5-8: crc	 *     9-n: tuple data	 */	if (fwrite(&tuple->t_len, 1, sizeof(tuple->t_len), fp) != sizeof(tuple->t_len))		elog(ERROR, "could not write tuple length: %m");	if (fwrite(&crc, 1, sizeof(pg_crc32), fp) != sizeof(pg_crc32))		elog(ERROR, "could not write checksum: %m");	if (fwrite(tuple->t_data, 1, tuple->t_len, fp) != tuple->t_len)		elog(ERROR, "could not write tuple data: %m");	FreeFile(fp);	LWLockRelease(ErrorLogLock);	heap_freetuple(tuple);}
开发者ID:LJoNe,项目名称:gpdb,代码行数:50,


示例21: XLogArchiveForceDone

/* * XLogArchiveForceDone * * Emit notification forcibly that an XLOG segment file has been successfully * archived, by creating <XLOG>.done regardless of whether <XLOG>.ready * exists or not. */voidXLogArchiveForceDone(const char *xlog){	char		archiveReady[MAXPGPATH];	char		archiveDone[MAXPGPATH];	struct stat stat_buf;	FILE	   *fd;	/* Exit if already known done */	StatusFilePath(archiveDone, xlog, ".done");	if (stat(archiveDone, &stat_buf) == 0)		return;	/* If .ready exists, rename it to .done */	StatusFilePath(archiveReady, xlog, ".ready");	if (stat(archiveReady, &stat_buf) == 0)	{		if (rename(archiveReady, archiveDone) < 0)			ereport(WARNING,					(errcode_for_file_access(),					 errmsg("could not rename file /"%s/" to /"%s/": %m",							archiveReady, archiveDone)));		return;	}	/* insert an otherwise empty file called <XLOG>.done */	fd = AllocateFile(archiveDone, "w");	if (fd == NULL)	{		ereport(LOG,				(errcode_for_file_access(),				 errmsg("could not create archive status file /"%s/": %m",						archiveDone)));		return;	}	if (FreeFile(fd))	{		ereport(LOG,				(errcode_for_file_access(),				 errmsg("could not write archive status file /"%s/": %m",						archiveDone)));		return;	}}
开发者ID:JiannengSun,项目名称:postgres,代码行数:52,


示例22: write_nondefault_variables

voidwrite_nondefault_variables(GucContext context){	int			elevel;	FILE	   *fp;	int			i;	Assert(context == PGC_POSTMASTER || context == PGC_SIGHUP);	elevel = (context == PGC_SIGHUP) ? LOG : ERROR;	/*	 * Open file	 */	fp = AllocateFile(CONFIG_EXEC_PARAMS_NEW, "w");	if (!fp)	{		ereport(elevel,				(errcode_for_file_access(),				 errmsg("could not write to file /"%s/": %m",						CONFIG_EXEC_PARAMS_NEW)));		return;	}	for (i = 0; i < num_guc_variables; i++)	{		write_one_nondefault_variable(fp, guc_variables[i]);	}	if (FreeFile(fp))	{		ereport(elevel,				(errcode_for_file_access(),				 errmsg("could not write to file /"%s/": %m",						CONFIG_EXEC_PARAMS_NEW)));		return;	}	/*	 * Put new file in place.  This could delay on Win32, but we don't hold	 * any exclusive locks.	 */	rename(CONFIG_EXEC_PARAMS_NEW, CONFIG_EXEC_PARAMS);}
开发者ID:pganalyze,项目名称:collector,代码行数:44,


示例23: pg_file_write

Datumpg_file_write(PG_FUNCTION_ARGS){	FILE	   *f;	char	   *filename;	text	   *data;	int64		count = 0;	requireSuperuser();	filename = convert_and_check_filename(PG_GETARG_TEXT_PP(0), false);	data = PG_GETARG_TEXT_PP(1);	if (!PG_GETARG_BOOL(2))	{		struct stat fst;		if (stat(filename, &fst) >= 0)			ereport(ERROR,					(ERRCODE_DUPLICATE_FILE,					 errmsg("file /"%s/" exists", filename)));		f = AllocateFile(filename, "wb");	}	else		f = AllocateFile(filename, "ab");	if (!f)		ereport(ERROR,				(errcode_for_file_access(),				 errmsg("could not open file /"%s/" for writing: %m",						filename)));	count = fwrite(VARDATA_ANY(data), 1, VARSIZE_ANY_EXHDR(data), f);	if (count != VARSIZE_ANY_EXHDR(data) || FreeFile(f))		ereport(ERROR,				(errcode_for_file_access(),				 errmsg("could not write file /"%s/": %m", filename)));	PG_RETURN_INT64(count);}
开发者ID:AmiGanguli,项目名称:postgres,代码行数:41,


示例24: AsyncSourceClose

static voidAsyncSourceClose(AsyncSource *self){	self->eof = true;	pthread_mutex_unlock(&self->lock);	pthread_join(self->th, NULL);	if (self->fd != NULL && FreeFile(self->fd) < 0)	{		ereport(WARNING, (errcode_for_file_access(),			errmsg("could not close source file: %m")));	}	self->fd = NULL;	if (self->buffer != NULL)		pfree(self->buffer);	self->buffer = NULL;	pfree(self);}
开发者ID:bwtakacy,项目名称:prev_pg_bulkload_repo,代码行数:21,


示例25: SpoolerClose

voidSpoolerClose(Spooler *self){	/* Merge indexes */	if (self->spools != NULL)		IndexSpoolEnd(self, true);	/* Terminate spooler. */	ExecDropSingleTupleTableSlot(self->slot);	if (self->estate->es_result_relation_info)		ExecCloseIndices(self->estate->es_result_relation_info);	FreeExecutorState(self->estate);	/* Close and release members. */	if (self->dup_fp != NULL && FreeFile(self->dup_fp) < 0)		ereport(WARNING,				(errcode_for_file_access(),				 errmsg("could not close duplicate bad file /"%s/": %m",						self->dup_badfile)));	if (self->dup_badfile != NULL)		pfree(self->dup_badfile);}
开发者ID:chuongnn,项目名称:pg_bulkload,代码行数:22,


示例26: SyncAndCloseFile

/* Flushes, syncs, and closes the given file pointer and checks for errors. */static voidSyncAndCloseFile(FILE *file){	int flushResult = 0;	int syncResult = 0;	int errorResult = 0;	int freeResult = 0;	errno = 0;	flushResult = fflush(file);	if (flushResult != 0)	{		ereport(ERROR, (errcode_for_file_access(),						errmsg("could not flush file: %m")));	}	syncResult = pg_fsync(fileno(file));	if (syncResult != 0)	{		ereport(ERROR, (errcode_for_file_access(),						errmsg("could not sync file: %m")));	}	errorResult = ferror(file);	if (errorResult != 0)	{		ereport(ERROR, (errcode_for_file_access(),						errmsg("error in file: %m")));	}	freeResult = FreeFile(file);	if (freeResult != 0)	{		ereport(ERROR, (errcode_for_file_access(),						errmsg("could not close file: %m")));	}}
开发者ID:ibrarahmad,项目名称:cstore_fdw,代码行数:38,


示例27: load_rules

/* * Load rules from the file. * * Parses the pg_limits.conf file and loads all the connection rules that * are defined in it. A syntax error should not result in a failure, * only a WARNING message (and skipping the row). If there are too many * rules in the file (exceeding MAX_RULES), that fails with an ERROR. * * FIXME The current implementation modifies the segment in-place, so *       if a config reload fails, the backends will see the result of *       the failed reload. That's not really nice. This should use a *       local buffer an only copy it in place if everything went OK. * * FIXME The other issue is that we're holding ProcArrayLock while *       parsing the file - at the moment this is necessary because of *       the in-place reload. Once this is fixed, we can hold the lock *       only for the final copy (in case of success). */static voidload_rules(){	FILE   *file;	char	line[LINE_MAXLEN];	char	dbname[NAMEDATALEN], user[NAMEDATALEN], ip[NAMEDATALEN], mask[NAMEDATALEN];	int		limit;	int		line_number = 0;	file = AllocateFile(LIMITS_FILE, "r");	if (file == NULL)	{		ereport(WARNING,				(errcode_for_file_access(),				 errmsg("could not open configuration file /"%s/": %m",						LIMITS_FILE)));		return;	}	/*	 * Use the same lock as when checking the rules (when opening the	 * connection) etc. This is probably the right thing to do.	 */	LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE);	/* make sure there are no rules (keep the backend info though) */	memset(rules, 0, RULES_SEGMENT_SIZE);	while (fgets(line, LINE_MAXLEN, file) != NULL)	{		/* remove the comment from the line */		char * comment = strchr(line, '#');		if (comment != NULL)			(*comment) = '/0';		/* remove all white-space chars from the end of the line */		comment--;		while (isspace(comment) && (comment >= line))		{			*comment = '/0';			comment--;		}		++line_number;		/* database user ip mask limit */		if (sscanf(line, "%s %s %s %s %d", dbname, user, ip, mask, &limit) == 5)			load_rule(line_number, dbname, user, ip, mask, limit);		/* database user ip/mask limit */		else if (sscanf(line, "%s %s %s %d", dbname, user, ip, &limit) == 4)			load_rule(line_number, dbname, user, ip, NULL, limit);		/* non-empty line with invalid format */		else if (strlen(line) > 0)			elog(WARNING, "invalid rule at line %d", line_number);	}	FreeFile(file);	LWLockRelease(ProcArrayLock);	elog(DEBUG1, "loaded %d connection limit rule(s)", rules->n_rules);}
开发者ID:tvondra,项目名称:connection_limits,代码行数:86,


示例28: pgss_shmem_startup

//.........这里部分代码省略.........	memset(&info, 0, sizeof(info));	info.keysize = sizeof(pgssHashKey);	info.entrysize = offsetof(pgssEntry, query) +query_size;	info.hash = pgss_hash_fn;	info.match = pgss_match_fn;	pgss_hash = ShmemInitHash("pg_stat_statements hash",							  pgss_max, pgss_max,							  &info,							  HASH_ELEM | HASH_FUNCTION | HASH_COMPARE);	LWLockRelease(AddinShmemInitLock);	/*	 * If we're in the postmaster (or a standalone backend...), set up a shmem	 * exit hook to dump the statistics to disk.	 */	if (!IsUnderPostmaster)		on_shmem_exit(pgss_shmem_shutdown, (Datum) 0);	/*	 * Attempt to load old statistics from the dump file, if this is the first	 * time through and we weren't told not to.	 */	if (found || !pgss_save)		return;	/*	 * Note: we don't bother with locks here, because there should be no other	 * processes running when this code is reached.	 */	file = AllocateFile(PGSS_DUMP_FILE, PG_BINARY_R);	if (file == NULL)	{		if (errno == ENOENT)			return;				/* ignore not-found error */		goto error;	}	buffer_size = query_size;	buffer = (char *) palloc(buffer_size);	if (fread(&header, sizeof(uint32), 1, file) != 1 ||		header != PGSS_FILE_HEADER ||		fread(&num, sizeof(int32), 1, file) != 1)		goto error;	for (i = 0; i < num; i++)	{		pgssEntry	temp;		pgssEntry  *entry;		if (fread(&temp, offsetof(pgssEntry, mutex), 1, file) != 1)			goto error;		/* Encoding is the only field we can easily sanity-check */		if (!PG_VALID_BE_ENCODING(temp.key.encoding))			goto error;		/* Previous incarnation might have had a larger query_size */		if (temp.key.query_len >= buffer_size)		{			buffer = (char *) repalloc(buffer, temp.key.query_len + 1);			buffer_size = temp.key.query_len + 1;		}		if (fread(buffer, 1, temp.key.query_len, file) != temp.key.query_len)			goto error;		buffer[temp.key.query_len] = '/0';		/* Clip to available length if needed */		if (temp.key.query_len >= query_size)			temp.key.query_len = pg_encoding_mbcliplen(temp.key.encoding,													   buffer,													   temp.key.query_len,													   query_size - 1);		temp.key.query_ptr = buffer;		/* make the hashtable entry (discards old entries if too many) */		entry = entry_alloc(&temp.key);		/* copy in the actual stats */		entry->counters = temp.counters;	}	pfree(buffer);	FreeFile(file);	return;error:	ereport(LOG,			(errcode_for_file_access(),			 errmsg("could not read pg_stat_statement file /"%s/": %m",					PGSS_DUMP_FILE)));	if (buffer)		pfree(buffer);	if (file)		FreeFile(file);	/* If possible, throw away the bogus file; ignore any error */	unlink(PGSS_DUMP_FILE);}
开发者ID:HBPSP8Repo,项目名称:NoDB,代码行数:101,


示例29: ImportSnapshot

/* * ImportSnapshot *      Import a previously exported snapshot.  The argument should be a *      filename in SNAPSHOT_EXPORT_DIR.  Load the snapshot from that file. *      This is called by "SET TRANSACTION SNAPSHOT 'foo'". */voidImportSnapshot(const char *idstr){	char		path[MAXPGPATH];	FILE	   *f;	struct stat	stat_buf;	char	   *filebuf;	int			xcnt;	int			i;	TransactionId src_xid;	Oid			src_dbid;	int			src_isolevel;	bool		src_readonly;	SnapshotData snapshot;	/*	 * Must be at top level of a fresh transaction.  Note in particular that	 * we check we haven't acquired an XID --- if we have, it's conceivable	 * that the snapshot would show it as not running, making for very	 * screwy behavior.	 */	if (FirstSnapshotSet ||		GetTopTransactionIdIfAny() != InvalidTransactionId ||		IsSubTransaction())		ereport(ERROR,				(errcode(ERRCODE_ACTIVE_SQL_TRANSACTION),				 errmsg("SET TRANSACTION SNAPSHOT must be called before any query")));	/*	 * If we are in read committed mode then the next query would execute	 * with a new snapshot thus making this function call quite useless.	 */	if (!IsolationUsesXactSnapshot())		ereport(ERROR,				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),				 errmsg("a snapshot-importing transaction must have isolation level SERIALIZABLE or REPEATABLE READ")));	/*	 * Verify the identifier: only 0-9, A-F and hyphens are allowed.  We do	 * this mainly to prevent reading arbitrary files.	 */	if (strspn(idstr, "0123456789ABCDEF-") != strlen(idstr))		ereport(ERROR,				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),				 errmsg("invalid snapshot identifier /"%s/"", idstr)));	/* OK, read the file */	snprintf(path, MAXPGPATH, SNAPSHOT_EXPORT_DIR "/%s", idstr);	f = AllocateFile(path, PG_BINARY_R);	if (!f)		ereport(ERROR,				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),				 errmsg("invalid snapshot identifier /"%s/"", idstr)));	/* get the size of the file so that we know how much memory we need */	if (fstat(fileno(f), &stat_buf))		elog(ERROR, "could not stat file /"%s/": %m", path);	/* and read the file into a palloc'd string */	filebuf = (char *) palloc(stat_buf.st_size + 1);	if (fread(filebuf, stat_buf.st_size, 1, f) != 1)		elog(ERROR, "could not read file /"%s/": %m", path);	filebuf[stat_buf.st_size] = '/0';	FreeFile(f);	/*	 * Construct a snapshot struct by parsing the file content.	 */	memset(&snapshot, 0, sizeof(snapshot));	src_xid = parseXidFromText("xid:", &filebuf, path);	/* we abuse parseXidFromText a bit here ... */	src_dbid = parseXidFromText("dbid:", &filebuf, path);	src_isolevel = parseIntFromText("iso:", &filebuf, path);	src_readonly = parseIntFromText("ro:", &filebuf, path);	snapshot.xmin = parseXidFromText("xmin:", &filebuf, path);	snapshot.xmax = parseXidFromText("xmax:", &filebuf, path);	snapshot.xcnt = xcnt = parseIntFromText("xcnt:", &filebuf, path);	/* sanity-check the xid count before palloc */	if (xcnt < 0 || xcnt > GetMaxSnapshotXidCount())		ereport(ERROR,				(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),				 errmsg("invalid snapshot data in file /"%s/"", path)));	snapshot.xip = (TransactionId *) palloc(xcnt * sizeof(TransactionId));	for (i = 0; i < xcnt; i++)		snapshot.xip[i] = parseXidFromText("xip:", &filebuf, path);//.........这里部分代码省略.........
开发者ID:avontd2868,项目名称:postgres,代码行数:101,



注:本文中的FreeFile函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ FreeImage_Allocate函数代码示例
C++ FreeDir函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。