コード例 #1
0
ファイル: file_streamer.c プロジェクト: TGAC/grassroots-api
/**
 *
 * @return A newly-allocated string with the name to use or NULL upon error.
 */
static char *GetStreamName (const char * const output_dir_s, const char *output_filename_s, char *stream_name_s, const char * const suffix_s)
{
	bool allocated_stream_name_flag = false;
	char *filename_s = NULL;


	if (!stream_name_s)
		{
			/*
				if stream_name_s is NULL use the output_filename instead and
				add the relevant suffix.
			*/

			if (output_filename_s)
				{
					stream_name_s = ConcatenateStrings (output_filename_s, suffix_s);
				}
			else
				{
					stream_name_s = ConcatenateStrings ("output", suffix_s);
				}

			if (stream_name_s)
				{
					allocated_stream_name_flag = TRUE;
				}
		}

	if (stream_name_s)
		{
			/* if we've got an output direrctory, put the files there */
			if (output_dir_s)
				{
					filename_s = MakeFilename (output_dir_s, stream_name_s);

					if (allocated_stream_name_flag)
						{
							FreeCopiedString (stream_name_s);
						}
				}
			else
				{
					/* if the stream_name_s was newly allocated, simply use it. */
					if (allocated_stream_name_flag)
						{
							filename_s = stream_name_s;
							allocated_stream_name_flag = false;
						}
					else
						{
							filename_s = CopyToNewString (stream_name_s, 0, TRUE);
						}
				}
		}

	return filename_s;
}
コード例 #2
0
bool ExternalBlastTool :: SetUpOutputFile ()
{
	bool success_flag = false;
	char *local_filename_s = 0;
	char uuid_s [UUID_STRING_BUFFER_SIZE];

	ConvertUUIDToString (bt_job_p -> bsj_job.sj_id, uuid_s);

	local_filename_s = ConcatenateStrings (uuid_s, BS_OUTPUT_SUFFIX_S);

	if (local_filename_s)
		{
			ebt_results_filename_s = MakeFilename (ebt_working_directory_s, local_filename_s);

			if (ebt_results_filename_s)
				{
					if (AddBlastArgsPair ("out", ebt_results_filename_s))
						{
							success_flag = true;
						}
					else
						{
							PrintErrors (STM_LEVEL_SEVERE, __FILE__, __LINE__, "Failed to set output filename to \"%s\"", ebt_results_filename_s);
						}
				}
			else
				{
					PrintErrors (STM_LEVEL_SEVERE, __FILE__, __LINE__, "Failed to create filename for %s, %s", ebt_working_directory_s, local_filename_s);
				}

			FreeCopiedString (local_filename_s);
		}
	else
		{
			PrintErrors (STM_LEVEL_SEVERE, __FILE__, __LINE__, "Failed to create local filename for %s, %s", uuid_s, BS_OUTPUT_SUFFIX_S);
		}



	return success_flag;
}
コード例 #3
0
static char *GetLocalJobFilename (const char *uuid_s, const BlastServiceData *blast_data_p)
{
	char *output_filename_s = NULL;
	char *output_filename_stem_s = MakeFilename (blast_data_p -> bsd_working_dir_s, uuid_s);

	if (output_filename_stem_s)
		{
			output_filename_s = ConcatenateStrings (output_filename_stem_s, s_remote_suffix_s);

			if (!output_filename_s)
				{
					PrintErrors (STM_LEVEL_WARNING, __FILE__, __LINE__, "Failed to create filename from \"%s\" and \"%s\"", output_filename_stem_s, s_remote_suffix_s);
				}

			FreeCopiedString (output_filename_stem_s);
		}		/* if (output_filename_stem_s) */
	else
		{
			PrintErrors (STM_LEVEL_WARNING, __FILE__, __LINE__, "Failed to create filename stem from \"%s\" and \"%s\"", output_filename_stem_s, uuid_s);
		}

	return output_filename_s;
}
コード例 #4
0
ファイル: t++.c プロジェクト: 8l/R3X
int main(int argc, char** argv) {
	#ifndef RX_PREFIX
	#warning "No RX_PREFIX defined. Relying on RX_PREFIX @ runtime"
	char* RX_PREFIX = getenv("RX_PREFIX");
	if(RX_PREFIX == NULL) { printf("Error: RX_PREFIX not defined, neither on compile nor on run time. Please export RX_PREFIX as the directory of the compiler executable!\n"); exit(EXIT_FAILURE); }
	#endif 
	/** Check if STDLIB_R3X is given **/
	char* StandardLibraryLocation = getenv("STDLIB_R3X");
	if(StandardLibraryLocation!=NULL) {
		AddIncludeDir(StandardLibraryLocation);
	}
	ParseArguments(argc, argv);
	if(CompileDynamic == true) {
		DynamicSuffix = " -d";
	}
	char* asmfile = ConcatenateStrings(OutputFile, ".asm");
	char* ASMOutputFile = ConcatenateStrings(RX_PREFIX, ConcatenateStrings("/", asmfile));
	char* TBCOutputFile = ConcatenateStrings(RX_PREFIX, "/_temp.bas");
	char* GCCOptions = ConcatenateStrings("gcc -E -P -o ", ConcatenateStrings(TBCOutputFile, ConcatenateStrings(" - < ", InputFile)));
	char* CgenOptions = ConcatenateStrings(RX_PREFIX, ConcatenateStrings("/cgen", ConcatenateStrings(" -exe ", ConcatenateStrings("./", OutputFile)))); 
	for(unsigned int i = 0; i < NumberOfIncludeDirs; i++) {
		if(IncludeDirs[i]!=NULL) {
			GCCOptions = ConcatenateStrings(GCCOptions, ConcatenateStrings(" -I", IncludeDirs[i]));
		}
	}
	char* TBCOptions = ConcatenateStrings(RX_PREFIX, ConcatenateStrings("/tbc > ", ConcatenateStrings(ASMOutputFile, ConcatenateStrings(" ", ConcatenateStrings(TBCOutputFile, DynamicSuffix)))));
	char* FASMOptions = ConcatenateStrings(RX_PREFIX, ConcatenateStrings("/fasm ", ConcatenateStrings(ASMOutputFile, ConcatenateStrings(" ./", OutputFile))));
	/*printf("ASMOutputFile: %s\nTBCOutputFile: %s\nGCCOptions: %s\nTBCOptions: %s\nFASMOptions: %s\n", ASMOutputFile, TBCOutputFile, GCCOptions, TBCOptions, FASMOptions);*/
	system(GCCOptions);
	system(TBCOptions);
	if(AsmFlag == false) {
		system(FASMOptions);
		system(CgenOptions);
	} else {
		FILE* fd = fopen(ASMOutputFile, "r+b");
		fseek(fd, 0L, SEEK_END);
		unsigned int sz = ftell(fd);
		fseek(fd, 0L, SEEK_SET);
		char* space = calloc(sz+1, 1);
		fread(space, 1, sz, fd);
		space[sz] = 0;
		FILE* fp = fopen(OutputFile, "w+b");
		fprintf(fp, "%s", space);
		fclose(fp);
		fclose(fd);
	}
	/**!
		Remove temp files
	**/
	remove(ASMOutputFile);
	remove(TBCOutputFile);
	return 0;
}