/** * @file common_itk_util.cpp * @brief itk warpper utility function * @author James * @history * =================================================================================== * Date Name Description of Change * 18-July-2008 James */ #pragma warning (disable: 4996) #pragma warning (disable: 4819) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include //#include //#include //#include #include //#include #include #include //#include //#include #include "error_handling.h" #include "common_itk_util.h" #ifdef WIN32 #include #include #else #include #endif #define ARGS_LENGTH 200 #define ARGS_NAME_DEBUG "-debug" #define DEBUG "-debug=" #define MAX_PRINTLINE_LENGTH 2000 #define MAX_PATH_LENGTH 2000 #define MAX_ARGUMENT_LENGTH 400 #define MAX_PARAMNAME_LENGTH 50 #define MAX_FILE_EXT_LENGTH 10 #define TRUE_FLAG 1 #define FALSE_FLAG 0 #define DETAILLOG 1 FILE* logFile = NULL; void set_bypass(logical bypass) { AM__set_application_bypass(bypass); } /*=============================================================================* * FUNCTION: current_time * PURPOSE : get the current datetime * INPUT: * date_t* date_tag // current date time tag * * RETURN: * void *============================================================================*/ void current_time( date_t * date_tag ) { time_t ltime; struct tm *today ; // Set time zone from TZ environment variable. If TZ is not set, // the operating system is queried to obtain the default value // for the variable. // //_tzset(); // Get UNIX-style time and display as number and string. time( <ime ); today = localtime( <ime ); date_tag->year = today->tm_year + 1900 ; date_tag->month = today->tm_mon ; date_tag->day = today->tm_mday ; date_tag->hour = today->tm_hour ; date_tag->minute = today->tm_min ; date_tag->second = today->tm_sec ; } /*=============================================================================* * FUNCTION: CreateLogFile * PURPOSE : create log file * INPUT: * char* FunctionName // the funtion which need to create log file * FILE** logFile // out: the log file pointer * * RETURN: * void *============================================================================*/ void CreateLogFile(char* FunctionName, char **fullname) { int i=0, ifail = ITK_ok; //date_t status_now; //char* date_string = NULL; char date_string[MAX_PATH_LENGTH]; char logFileDir[MAX_PATH_LENGTH]; char logFileName[MAX_PATH_LENGTH]; char* session_uid = NULL; tag_t session_tag = NULLTAG; time_t now; struct tm *p; time(&now); logFile = NULL; //current_time(&status_now); p=localtime(&now); memset(date_string, 0, sizeof(date_string)); sprintf(date_string,"%4d%02d%02d%02d%02d%02d",1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ,p->tm_hour,p->tm_min ,p->tm_sec ); //if( DATE_date_to_string( status_now, "%Y%m%d%H%M%S", &date_string) != ITK_ok ) //ifail = ITK_date_to_string (status_now, &date_string ); //if (ifail) //{ // printf("!*ERROR*!: Failed to get current date time\n"); // goto CLEANUP; //} memset(logFileDir, 0, sizeof(logFileDir)); memset(logFileName, 0, sizeof(logFileName)); //get log dir sprintf(logFileDir, "%s", getenv("TEMP")); printf("\n log file dir: %s\n", logFileDir); //try to change dir to TC_USER_LOG_DIR if(chdir(logFileDir)!=ITK_ok) { //not set TC_USER_LOG_DIR //log in to default TC_LOG memset(logFileDir, 0, sizeof(logFileDir)); sprintf(logFileDir, "%s", getenv("TC_LOG")); printf("\n TC_USER_LOG_DIR invalide, log file dir: %s\n", logFileDir); if(chdir(logFileDir)!=ITK_ok) { //still can not change to log dir printf("!*ERROR*!: Failed to change dir to TC_USER_LOG_DIR\n"); goto CLEANUP; } } //get session_uid to make sure the log file name unique POM_ask_session(&session_tag); ITK__convert_tag_to_uid(session_tag, &session_uid); //get logFileName sprintf(logFileName, "%s_%s_%s.log", FunctionName, session_uid, date_string); printf("log file name: %s\n", logFileName); *fullname = (char *)MEM_alloc(sizeof(char)*512); sprintf(*fullname,"%s\\%s",logFileDir,logFileName); //for(i = 0; _access((char *)logFileName, 4) == 0; i++) /*{ memset(logFileName, 0, sizeof(logFileName)); sprintf(logFileName, "%s_%s_%s_%d.log", FunctionName, session_uid, date_string, i); } printf("final log file name: %s\n", logFileName);*/ //create log file logFile = fopen(logFileName, "w"); CLEANUP: //DOFREE(date_string); DOFREE(session_uid); } /*=============================================================================* * FUNCTION: WriteLog * PURPOSE : write log, if debug log File not null, write log message to log File * INPUT: * const char* format // debug message string * * RETURN: * void *============================================================================*/ void WriteLog(const char* format, ...) { va_list arg; char tmp[MAX_PRINTLINE_LENGTH]; if(logFile) { //get the message memset(tmp, 0, sizeof(tmp)); va_start(arg, format); vsprintf(tmp, format, arg); va_end(arg); //----------print to command window for trace--------// printf("%s\n", tmp); //print message to log file fprintf(logFile, "%s\n", tmp); fflush(logFile); } else { printf("*!Error!*: Log File Not Exist\n"); } } void CloseLog(void) { if(logFile) { fclose(logFile); logFile = NULL; } } //void getTypeinfo(char *type) //{ // int ulen = 0,i=0,tempcount=0,asd=0; // // char temp[128]=""; // ulen = strlen(type); // asd = ulen-1; // for(i=0;i < ulen;i++) // { // if(type[i] == ';') // { // temp[tempcount] = '\0'; // strcpy(excludetypes[typecount].type,temp); // strcpy(temp,""); // tempcount = 0; // typecount = typecount + 1; // } // else // { // // temp[tempcount] = type[i]; // tempcount = tempcount + 1; // if(i==asd) // { // temp[tempcount] = '\0'; // strcpy(excludetypes[typecount].type,temp); // typecount = typecount + 1; // } // // } // // } //}