QString DownloadLogsCmd::DownloadLogsTask::getCommand()
{
#ifdef WINDOWS
  return fromString(std::string(File::getBHDir()) + "/Make/" + makeDirectory() + "/downloadLogs.cmd");
#else
  return fromString(std::string(File::getBHDir()) + "/Make/" + makeDirectory() + "/downloadLogs");
#endif
}
示例#2
0
void initDirectories(void) {
  if(PREF_DIR[0] != '~')
    sprintf(preferences_dir, PREF_DIR);
  else
    sprintf(preferences_dir, "%s%s", getHome(), PREF_DIR + 1);

  if(SNAP_DIR[0] != '~')
    sprintf(snapshots_dir, SNAP_DIR);
  else
    sprintf(snapshots_dir, "%s%s", getHome(), SNAP_DIR + 1);

#ifdef LOCAL_DATA
  #ifdef macintosh
  sprintf(data_dir, ":data");
  sprintf(art_dir, ":art");
  sprintf(scripts_dir, ":scripts");
  sprintf(music_dir, ":music");
  sprintf(level_dir, ":levels");
  #else
  sprintf(data_dir, "data");
  sprintf(art_dir, "art");
  sprintf(scripts_dir, "scripts");
  sprintf(music_dir, "music");
  sprintf(level_dir, "levels");
  #endif

#else
  sprintf(data_dir, "%s%c%s", DATA_DIR, SEPARATOR, "data");
  sprintf(art_dir, "%s%c%s", DATA_DIR, SEPARATOR, "art");
  sprintf(scripts_dir, "%s%c%s", DATA_DIR, SEPARATOR, "scripts");
  sprintf(music_dir, "%s%c%s", DATA_DIR, SEPARATOR, "music");
  sprintf(level_dir, "%s%c%s", DATA_DIR, SEPARATOR, "levels");
#endif

	/*
  printf("directories:\n"
	 "\tprefs: %s\n"
	 "\tsnaps: %s\n"
	 "\tdata:  %s\n"
	 "\tart:   %s\n"
	 "\tscripts:   %s\n"
	 "\tmusic: %s\n",
	 preferences_dir, snapshots_dir, 
	 data_dir, art_dir, scripts_dir, 
	 music_dir);
	*/

  makeDirectory(preferences_dir);
  makeDirectory(snapshots_dir);
}
示例#3
0
/*
 * Given a time, opens the appropriate Berkeley DB database--creating it if it
 * doesn't exist, along with any directories in its path--and sets its record
 * number to the appropriate value (1 for new databases, last record number + 1
 * for existing databases).
 */
std::tr1::unordered_map <uint32_t, _BerkeleyDB*>::iterator BerkeleyDB::createDatabase(const uint32_t &hourStartTime) {
  std::string dataFileName = getDataDirectory(hourStartTime);
  std::tr1::unordered_map <uint32_t, _BerkeleyDB*>::iterator databaseItr;
  if (!makeDirectory(dataFileName, 0755)) {
    return databases.end();
  }
  databaseItr = databases.insert(std::make_pair(hourStartTime,
                                                new _BerkeleyDB)).first;
  dataFileName += _baseFileName + '_' + getHour(hourStartTime);
  if (db_create(&(databaseItr -> second -> database), NULL, 0) != 0) {
    return databases.end();
  }
  if (databaseItr -> second -> database -> open(databaseItr -> second -> database,
                                                NULL, dataFileName.c_str(),
                                                NULL, DB_RECNO, DB_CREATE,
                                                S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH) != 0) {
    return databases.end();
  }
  if (databaseItr -> second -> database -> cursor(databaseItr -> second -> database,
                                                  NULL, &(databaseItr -> second -> cursor),
                                                  0) != 0) {
    return databases.end();
  }
  if (databaseItr -> second -> cursor -> c_get(databaseItr -> second -> cursor,
                                               &(databaseItr -> second -> key),
                                               &(databaseItr -> second -> data),
                                               DB_LAST) == DB_NOTFOUND) {
    databaseItr -> second -> recordNumber = 1;
  }
  else {
    databaseItr -> second -> recordNumber = *(uint32_t*)databaseItr -> second -> key.data + 1;
  }
  databaseItr -> second -> cursor -> c_close(databaseItr -> second -> cursor);
  return databaseItr;
}
示例#4
0
void makeDirectory(const std::string& path)
{
    if(path.empty())
    {
        return;
    }

    if(isDirectory(path))
    {
        return;
    }

    if(!isDirectory(getDirectory(path)))
    {
        makeDirectory(getDirectory(path));
    }

    #ifndef _WIN32
    int status = mkdir(path.c_str(), 0755);

    if(status != 0)
    {
        throw std::runtime_error("Failed to make directory '" + path + "'.");
    }
    #else
    assertM(false, "Not implemented for this platform.");
    #endif
}
示例#5
0
Path& Path::append(const Path& path)
{
    makeDirectory();
    m_vDirs.insert(m_vDirs.end(), path.m_vDirs.begin(), path.m_vDirs.end());
    m_sName = path.m_sName;
    return *this;
}
示例#6
0
Path& Path::append(const Path& path)
{
	makeDirectory();
	_dirs.insert(_dirs.end(), path._dirs.begin(), path._dirs.end());
	_name = path._name;
	_version = path._version;
	return *this;
}
示例#7
0
Path::Path(const Path& parent, const std::string& fileName)
    : m_sNode(parent.m_sNode)
    , m_sDevice(parent.m_sDevice)
    , m_sName(parent.m_sName)
    , m_vDirs(parent.m_vDirs)
    , m_bAbsolute(parent.m_bAbsolute)
{	
    makeDirectory();
    m_sName = fileName;
}
示例#8
0
Path::Path(const Path& parent, const char* fileName):
	_node(parent._node), 
	_device(parent._device),
	_name(parent._name),
	_version(parent._version),
	_dirs(parent._dirs),
	_absolute(parent._absolute)
{	
	makeDirectory();
	_name = fileName;
}
示例#9
0
 FileSaver::FileSaver(const std::string& directoryPath) :
     mDirectoryPath{formatAsDirectory(directoryPath)}
 {
     try
     {
         makeDirectory(mDirectoryPath);
     }
     catch (const std::exception& e)
     {
         error(e.what(), __LINE__, __FUNCTION__, __FILE__);
     }
 }
示例#10
0
文件: mlogger.c 项目: Unidata/LDM
static int archiveLog (LOGGER *p_logger, char *archiveDate) {

	int		retval	= SUCCESS;
	char		archivePath[LOG_MAX_PATH_LEN+1];
	char		*fname;
	char		*ext;
	char		timeStr[64];	/* .HH.MM.SS */
	char		newName[LOG_MAX_FILENAME_LEN+1];
	struct tm	*lt;

	if (p_logger == NULL) {
		fprintf (stderr, "ERROR: %s - NULL logger provided\n", __FUNCTION__);
		return ERROR;
	}

	if (!(p_logger->optionMask & NODE_IN_USE)) {
		fprintf (stderr, "ERROR: %s - Logger not in use\n", __FUNCTION__);
		return ERROR;
	}

	sprintf (archivePath, "%s/%s", p_logger->archivePath, archiveDate);
	if (!fileExists (archivePath)) {
		if (makeDirectory (archivePath, YES, DIRECTORY_CREATE_PERMS)) {
			fprintf (stderr, "ERROR: %s - could not create directory %s\n", __FUNCTION__, archivePath);
			retval = ERROR;
		}
	}

	fname = strdup (p_logger->logName);
	splitFilenameExt (fname, &ext);		/* Remove the extension, if there is one */

	lt = localtime (&p_logger->lastLogTime);
	sprintf (timeStr, "%02d.%02d.%02d", lt->tm_hour, lt->tm_min, lt->tm_sec);

	sprintf (newName, "%s/%s.%s", archivePath, fname, timeStr);
	free (fname);

	if (p_logger->optionMask & O_LOG_INIT) {
		p_logger->amArchiving = TRUE;
		logMsg (p_logger, V_ALWAYS, S_STATUS, "%s ARCHIVED TO %s", p_logger->name, newName);
		p_logger->amArchiving = FALSE;
	}

	logClose (p_logger);

	if (moveFile (p_logger->fullLogName, newName, NO)) {
		fprintf (stderr, "ERROR: %s - could not move %s to %s\n", __FUNCTION__, p_logger->fullLogName, archivePath);
		retval = ERROR;
	}

	return retval;
}
示例#11
0
void doJob(const std::string& inputMaf, const std::string& outDir, 
		   std::vector<ParamPair> simplParams, std::vector<int> minBlockSizes)
{

	const int MIN_ALIGNMENT = 1;
	const int MAX_ALIGNMENT_GAP = 0;
	const auto EMPTY_GROUP = BlockGroups();

	BlockGroups blockGroups = EMPTY_GROUP;
	PermVec currentBlocks;
	//sort blocks in reverse order (will use it as stack)
	std::sort(minBlockSizes.begin(), minBlockSizes.end(), std::greater<int>());
	makeDirectory(outDir);

	//read maf alignment and join adjacent columns
	std::cerr << "\tParsing MAF file\n";
	PermVec mafBlocks = mafToPermutations(inputMaf, MIN_ALIGNMENT);
	compressPaths(mafBlocks, MAX_ALIGNMENT_GAP, currentBlocks, blockGroups);

	//iterative simplification
	for (const ParamPair& ppair : simplParams)
	{
		if (minBlockSizes.empty()) break;
		//output blocks of certain size
		while (!minBlockSizes.empty() && minBlockSizes.back() < ppair.minBlock)
		{
			std::string blockDir = outDir + "/" + 
								   std::to_string(minBlockSizes.back());
			outputBlocks(blockDir, currentBlocks, blockGroups,
						 minBlockSizes.back());
			minBlockSizes.pop_back();
		}

		std::cerr << "\tSimplification with " << ppair.minBlock << " "
				  << ppair.maxGap << std::endl;
		PermVec inputBlocks = filterBySize(currentBlocks, EMPTY_GROUP,
										   ppair.minBlock, true);
		PermVec outBlocks;
		blockGroups.clear();
		processGraph(inputBlocks, ppair.maxGap, outBlocks, blockGroups);
		currentBlocks = outBlocks;
	}

	//if any left
	for (int minBlock : minBlockSizes)
	{
		std::string blockDir = outDir + "/" + std::to_string(minBlock);
		outputBlocks(blockDir, currentBlocks, blockGroups, minBlock);
	}
}
示例#12
0
void outputBlocks(const std::string& outDir, PermVec& blocks,
				  BlockGroups& groups, int blockSize)
{
	makeDirectory(outDir);
	std::string permsFile = outDir + "/genomes_permutations.txt";
	std::string coordsFile = outDir + "/blocks_coords.txt";
	std::string statsFile = outDir + "/coverage_report.txt";

	PermVec outPerms = filterBySize(blocks, groups, blockSize, true);
	renumerate(outPerms);
	outputPermutation(outPerms, permsFile);
	outputCoords(outPerms, coordsFile);
	outputStatistics(outPerms, statsFile);
}
示例#13
0
void Path::parseWindows(const std::string& sPath)
{
    clear();

    std::string::const_iterator it  = sPath.begin();
    std::string::const_iterator end = sPath.end();

    if (it != end)
    {
        if (*it == '\\' || *it == '/') { m_bAbsolute = true; ++it; }
        if (m_bAbsolute && it != end && (*it == '\\' || *it == '/')) // UNC
        {
            ++it;
            while (it != end && *it != '\\' && *it != '/') m_sNode += *it++;
            if (it != end) ++it;
        }
        else if (it != end)
        {
            char d = *it++;
            if (it != end && *it == ':') // drive letter
            {
                if (m_bAbsolute || !((d >= 'a' && d <= 'z') || (d >= 'A' && d <= 'Z')))
                {
                    FIRTEX_THROW(BadParameterException, "Bad parameter: [%s]", sPath.c_str());
                }
                m_bAbsolute = true;
                m_sDevice += d;
                ++it;
                if (it == end || (*it != '\\' && *it != '/'))
                {
                    FIRTEX_THROW(BadParameterException, "Bad parameter: [%s]", sPath.c_str());
                }
                ++it;
            }
            else --it;
        }
        while (it != end)
        {
            std::string name;
            while (it != end && *it != '\\' && *it != '/') name += *it++;
            if (it != end)
                pushDirectory(name);
            else
                m_sName = name;
            if (it != end) ++it;
        }
    }
    if (!m_sNode.empty() && m_vDirs.empty() && !m_sName.empty())
        makeDirectory();
}
devcall lfsControl(struct dentry *devptr, int32 func, int32 arg1, int32 arg2)
{
	int retval;
	switch(func)
	{
		case LF_CTL_MKDIR:
			{
				retval = makeDirectory((char *)arg1);
				return retval;
			}
		default:
			return SYSERR;
	}
	
	return OK;
}
示例#15
0
文件: opera.cpp 项目: vanfanel/rawgl
static void dumpGameData(const char *name, FILE *in, uint32_t offset, uint32_t size) {
	fprintf(stdout, "%s at 0x%x size %d bytes\n", name, offset, size);
	makeDirectory(GAMEDATA_DIRECTORY);
	char path[MAXPATHLEN];
	snprintf(path, sizeof(path), "%s/%s", GAMEDATA_DIRECTORY, name);
	FILE *out = fopen(path, "wb");
	if (out) {
		uint8_t buf[4096];
		int count;
		fseek(in, offset, SEEK_SET);
		while ((count = fread(buf, 1, size < sizeof(buf) ? size : sizeof(buf), in)) > 0) {
			fwrite(buf, 1, count, out);
			size -= count;
		}
		fclose(out);
	}
}
示例#16
0
void Path::parseWindows(const std::string& path)
{
	clear();

	std::string::const_iterator it  = path.begin();
	std::string::const_iterator end = path.end();

	if (it != end)
	{
		if (*it == '\\' || *it == '/') { _absolute = true; ++it; }
		if (_absolute && it != end && (*it == '\\' || *it == '/')) // UNC
		{
			++it;
			while (it != end && *it != '\\' && *it != '/') _node += *it++;
			if (it != end) ++it;
		}
		else if (it != end)
		{
			char d = *it++;
			if (it != end && *it == ':') // drive letter
			{
				if (_absolute || !((d >= 'a' && d <= 'z') || (d >= 'A' && d <= 'Z'))) throw std::exception();
				_absolute = true;
				_device += d;
				++it;
				if (it == end || (*it != '\\' && *it != '/')) throw std::exception();
				++it;
			}
			else --it;
		}
		while (it != end)
		{
			std::string name;
			while (it != end && *it != '\\' && *it != '/') name += *it++;
			if (it != end)
				pushDirectory(name);
			else
				_name = name;
			if (it != end) ++it;
		}
	}
	if (!_node.empty() && _dirs.empty() && !_name.empty())
		makeDirectory();
}
示例#17
0
void errorReporterInitialize(ErrorReporter self) {
  CharString infoText = newCharStringWithCString(kErrorReportInfoText);
  CharString wrappedInfoText;
  time_t now;
  size_t length;
  size_t i;

  printf("=== Starting error report ===\n");
  wrappedInfoText = charStringWrap(infoText, 0);
  // The second newline here is intentional
  printf("%s\n", wrappedInfoText->data);

  time(&now);
  self->started = true;

  snprintf(self->reportName->data, self->reportName->capacity,
    "MrsWatson Report %s", ctime(&now));
  // Trim the final newline character from this string if it exists
  length = strlen(self->reportName->data);
  if(self->reportName->data[length - 1] == '\n') {
    self->reportName->data[length - 1] = '\0';
    length--;
  }
  for(i = 0; i < length; i++) {
    if(!charStringIsLetter(self->reportName, i) ||
        charStringIsNumber(self->reportName, i)) {
      self->reportName->data[i] = '-';
    }
  }

 #if UNIX
  snprintf(self->desktopPath->data, self->desktopPath->capacity,
    "%s/Desktop", getenv("HOME"));
#elif WINDOWS
  SHGetFolderPathA(NULL, CSIDL_DESKTOPDIRECTORY, NULL, 0, self->desktopPath->data);
#endif
  snprintf(self->reportDirPath->data, self->reportDirPath->capacity,
    "%s%c%s", self->desktopPath->data, PATH_DELIMITER, self->reportName->data);
  makeDirectory(self->reportDirPath);

  freeCharString(wrappedInfoText);
  freeCharString(infoText);
}
示例#18
0
void NoiseMatrixLayerGraphs(TString myFileName, int nDDU, int nCham, int nLayer){
  //gSystem->cd("images/NoiseMatrix");
  //gSystem->cd(myFileName);

int nElements = 12;
TH2F *noiseGraph;
TCanvas *noiseCanv;
 for (int i=0; i< nDDU; ++i){
   int idArray[9];
   GetChamberIDs(idArray);
   //   Float_t BoundsMinArray[108];
   //   Float_t BoundsMaxArray[108];
   Float_t BoundsChamMin[9];
   Float_t BoundsChamMax[9];
   //GetNoiseBounds(BoundsMinArray, BoundsMaxArray, BoundsChamMin, BoundsChamMax);
   GetNoiseBounds(BoundsChamMin, BoundsChamMax, nCham);
   for (int j=0; j<nCham; ++j){
     TString ChamDirecName = Form("Chamber_%d_Layer_Graphs", idArray[j]);
     makeDirectory(ChamDirecName); 
     gSystem->cd(ChamDirecName); 
     for (int l=0; l<nLayer; ++l){ 
       TString NoiseCanvName = Form ("Noise_Matrix_Elements_Chamber_%d_Layer_%d",idArray[j],l); 
       noiseCanv = new TCanvas(NoiseCanvName, NoiseCanvName,200,10,1200,800); 
       noiseCanv->Divide(4,3); 
       noiseCanv->Draw(); 
       for (int k=0; k<nElements; ++k){  
	 TString ElementGraphName = Form("Element_%d",k); 
	 noiseGraph = new TH2F(ElementGraphName,ElementGraphName,80,0,80,20,BoundsChamMin[j],BoundsChamMax[j]);  
	 noiseCanv->cd(k+1); 
	 noiseGraph->Draw(); 
	 TString GraphForm = Form("elem[%d]:strip", k); 
	 TString GraphCut = Form("cham==%d&&layer==%d", j, l); 
	 Calibration->Project(ElementGraphName, GraphForm, GraphCut); 
       }//nElements 
       noiseCanv->Update();    
       PrintAsGif(noiseCanv, NoiseCanvName); 
     }//nLayer
     gSystem->cd("../");
   }//nCham 
 }//nDDU 
gSystem->cd("../../../"); 
directoryCheck(); 
}//NoiseMatrixGraphs 
示例#19
0
static CharString _fileUtilitiesMakeTempDir(void) {
  CharString tempDirName = newCharString();
#if UNIX
  snprintf(tempDirName->data, tempDirName->capacity, "/tmp/mrswatsontest-XXXXXX");
  mktemp(tempDirName->data);
#elif WINDOWS
  CharString systemTempDir = newCharString();
  CharString randomDirName = newCharString();
  snprintf(randomDirName->data, randomDirName->capacity, "mrswatsontest-%d", rand());
  GetTempPathA(systemTempDir->capacity, systemTempDir->data);
  buildAbsolutePath(systemTempDir, randomDirName, NULL, tempDirName);
  freeCharString(systemTempDir);
  freeCharString(randomDirName);
#endif
  if(!makeDirectory(tempDirName)) {
    fprintf(stderr, "WARNING: Could not make temporary directory\n");
    return NULL;
  }
  return tempDirName;
}
QLogSystem::QLogSystem() : m_nExpire(15)
{
    m_Time = QDateTime::currentDateTime();
    QString strDocuments = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);

    strDocuments = rstrip( strDocuments, "/\\" );

    m_strRootPath = strDocuments;
    m_strRootPath += "/T3kCfgFE/Logs";

    makeDirectory(m_strRootPath);

    QString strLogPathName;
    getLogPathName( m_Time, strLogPathName );
    openLogFile( strLogPathName );

    deleteExpiredLogFiles();

    write( "INFO", ("==== T3kCfgFE Start! ====") );
    write( "INFO", "Exec Path: %s", (const char*)qApp->applicationFilePath().toUtf8() );
}
bool HelloWorld::convert(string filePath)
{
    if (filePath =="")
        return false;
    
    size_t pos = filePath.find("file://");
    if (pos != string::npos){
        filePath = filePath.substr (pos+7);
    }
    
    Magick::Image masterImage(filePath);
    
    if (!masterImage.isValid()){
        return false;
    }
    
    showPreview(masterImage);
    
    
    string saveFolder = getFolder(filePath) + "/IconResized/" ;
    makeDirectory(saveFolder);
    
    string openDir;
    
    typedef map<string, string>::iterator it_type;
    for(it_type iterator = sizes.begin(); iterator != sizes.end(); iterator++) {
        // iterator->first = key
        // iterator->second = value
        // Repeat if you also want to iterate through the second map.
        string savePath = saveFolder + iterator->second;
        
        openDir = savePath;
        resizeAndWriteImage(masterImage, savePath, iterator->first);
    }
    
    openSavedFolder(openDir);
    
    return true;
}
示例#22
0
Path& Path::parseDirectory(const std::string& path, Style style)
{
	assign(path, style);
	return makeDirectory();
}
示例#23
0
Path& Path::parseDirectory(const std::string& path)
{
	assign(path);
	return makeDirectory();
}
示例#24
0
int stmd_RuleEntSelect(int time_type, int duration, char *table_type)
{
    char        condBuf[4096], tmpBuf[1024];
    int         sts_code;
    char        str_time[10];

    char        query[4096], query_head[4096]; 
    MYSQL_RES   *result;
    MYSQL_ROW   row;

    time_t      now;
    char        tm[DIR_NUM][8];
    char        path[60];
    char        fileName[60];
    FILE        *fp;

    int         i;
	char title[4][16] = {"SYSTEM", "ITEM", "Session", "Block"};
	char title1[5][16] = {"", "", "UpStream(Mbps)", "DnStream(Mbps)", "Total(Mbps)"};
	char title2[5][16] = {"", "", "UpByte(MBytes)", "DnByte(MBytes)", "Total(MBytes)"};

    int row_index;
    char SysName[2][8];
    int realSysCnt =0;
    int realItemCnt =0, row_cnt=0 ;

	int     snd_cnt = 1;


    now = time(0);
    if(time_type != STMD_WEEK)
        now = now - (printTIME[time_type]*60) - STAT_OFFSET_UNIT;
    else
        now = now - (printTIME[time_type]*60);

    getFilePath (path, tm, &now); // ~/LOG/STAT 까지 만든다.
    makeDirectory (time_type,path,tm);

    sprintf(fileName, "%s", path );
    makeFileName ( fileName, STMD_RULE_ENT, time_type, tm );

    if ( ( fp = fopen(fileName, APPEND ) ) == NULL )
	{
        sprintf(trcBuf, "%s Open Fail\n", fileName);
        trclib_writeLog(FL, trcBuf);
        return -1;
    }

	//char title[4][16] = {"SYSTEM", "ITEM", "Session", "Block"};
	//char title1[5][16] = {"", "", "UpStream(Mbps)", "DnStream(Mbps)", "Total(Mbps)"};
	//char title2[5][16] = {"", "", "UpByte(MBytes)", "DnByte(MBytes)", "Total(MBytes)"};
    switch (time_type) {
        case    STMD_HOUR :
            sts_code = STSCODE_STM_PERIODIC_RULEENT_HOUR;
            sprintf(str_time, "%s", STMD_STR_HOUR);
			sprintf(query_head, "SELECT record_source, rule_ent_id, rule_ent_name, "
					" IFNULL(SUM(session),0), IFNULL(SUM(block_cnt),0), "
					" ROUND(IFNULL(SUM(upstream_volume)*8/1024/1024/3600,0),3), "
					" ROUND(IFNULL(SUM(downstream_volume)*8/1024/1024/3600,0),3), "
					" ROUND((IFNULL(SUM(upstream_volume),0) + IFNULL(SUM(downstream_volume),0))*8/1024/1024/3600,3), "
					" ROUND(IFNULL(SUM(upstream_volume)/1024/1024 ,0),3), "
					" ROUND(IFNULL(SUM(downstream_volume)/1024/1024 ,0),3), "
					" ROUND((IFNULL(SUM(upstream_volume),0) + IFNULL(SUM(downstream_volume),0))/1024/1024,3) "
                	" from %s ", table_type);
            break;
        case    STMD_DAY :
            sts_code = STSCODE_STM_PERIODIC_RULEENT_DAY;
            sprintf(str_time, "%s", STMD_STR_DAY);
			sprintf(query_head, "SELECT record_source, rule_ent_id, rule_ent_name, "
					" IFNULL(SUM(session),0), IFNULL(SUM(block_cnt),0), "
					" ROUND(IFNULL(SUM(upstream_volume)*8/1024/1024/86400,0),3), "
					" ROUND(IFNULL(SUM(downstream_volume)*8/1024/1024/86400,0),3), "
					" ROUND((IFNULL(SUM(upstream_volume),0) + IFNULL(SUM(downstream_volume),0))*8/1024/1024/86400,3), "
					" ROUND(IFNULL(SUM(upstream_volume)/1024/1024 ,0),3), "
					" ROUND(IFNULL(SUM(downstream_volume)/1024/1024 ,0),3), "
					" ROUND((IFNULL(SUM(upstream_volume),0) + IFNULL(SUM(downstream_volume),0))/1024/1024,3) "
                	" from %s ", table_type);
            break;
        case    STMD_WEEK :
            sts_code = STSCODE_STM_PERIODIC_RULEENT_WEEK;
            sprintf(str_time, "%s", STMD_STR_WEEK);
			sprintf(query_head, "SELECT record_source, rule_ent_id, rule_ent_name, "
					" IFNULL(SUM(session),0), IFNULL(SUM(block_cnt),0), "
					" ROUND(IFNULL(SUM(upstream_volume)*8/1024/1024/86400*7,0),3), "
					" ROUND(IFNULL(SUM(downstream_volume)*8/1024/1024/86400*7,0),3), "
					" ROUND((IFNULL(SUM(upstream_volume),0) + IFNULL(SUM(downstream_volume),0))*8/1024/1024/86400*7,3), "
					" ROUND(IFNULL(SUM(upstream_volume)/1024/1024 ,0),3), "
					" ROUND(IFNULL(SUM(downstream_volume)/1024/1024 ,0),3), "
					" ROUND((IFNULL(SUM(upstream_volume),0) + IFNULL(SUM(downstream_volume),0))/1024/1024,3) "
                	" from %s ", table_type);
            break;
        case    STMD_MONTH :
            sts_code = STSCODE_STM_PERIODIC_RULEENT_MONTH;
            sprintf(str_time, "%s", STMD_STR_MONTH);
			sprintf(query_head, "SELECT record_source, rule_ent_id, rule_ent_name, "
					" IFNULL(SUM(session),0), IFNULL(SUM(block_cnt),0), "
					" ROUND(IFNULL(SUM(upstream_volume)*8/1024/1024/86400*30,0),3), "
					" ROUND(IFNULL(SUM(downstream_volume)*8/1024/1024/86400*30,0),3), "
					" ROUND((IFNULL(SUM(upstream_volume),0) + IFNULL(SUM(downstream_volume),0))*8/1024/1024/86400*30,3), "
					" ROUND(IFNULL(SUM(upstream_volume)/1024/1024 ,0),3), "
					" ROUND(IFNULL(SUM(downstream_volume)/1024/1024 ,0),3), "
					" ROUND((IFNULL(SUM(upstream_volume),0) + IFNULL(SUM(downstream_volume),0))/1024/1024,3) "
                	" from %s ", table_type);
            break;
    }

    sprintf(condBuf,"    %s %s\n    S%04d RULE ENTRY PERIODIC STATISTICS MESSAGE\n",
        "SCE", // 현재는 OMP로 고정하지만 실질적인 시스템 이름으로 변경 필요 hslim_oper
        commlib_printTStamp(), // 현재시각 time stamp (년,월,일,시,분,초,요일)
        sts_code);

    sprintf(tmpBuf, "    PERIOD = %s\n    MEASURETIME = %s  -  %s\n\n",
        str_time,
        get_period_start_time(time_type), get_period_end_time(time_type));
    strcat(condBuf,tmpBuf);

	sprintf(tmpBuf, "    =======================================================================================\n");
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s \n","",title[0],title[1],title[2],title[3]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s %-15s\n","","","",title1[2],title1[3],title1[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s %-15s\n","","","",title2[2],title2[3],title2[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "    =======================================================================================\n");
	strcat(condBuf, tmpBuf);

    for(i=0; i<SCE_CNT; i++ )
	{
        sprintf(SysName[i], "%s", g_stSCE[i].sce_name);
        realSysCnt++;
    }

    for(i = 0; i < realSysCnt; i++)
	{
		realItemCnt = g_stSCEEntry[i].ruleEntryCnt;

        sprintf(query, "%s  "
                " where record_source = '%s' AND (stat_date = '%s') "
				" group by record_source, rule_ent_id, rule_ent_name "
				" order by record_source, rule_ent_id, rule_ent_name ", query_head,
            	SysName[i], get_period_select_time(time_type));

		logPrint(trcLogId, FL, "periodic query: %s \n",query);

        if ( trcLogFlag == TRCLEVEL_SQL ) 
		{
            sprintf(trcBuf, "query = %s\n", query);
            trclib_writeLog(FL, trcBuf);
        }

		if (stmd_mysql_query (query) < 0) {
            sprintf(trcBuf,">>> mysql_query fail; query:%s, err=%s\n", query,mysql_error(conn));
            trclib_writeLogErr (FL,trcBuf);
            if(fp != NULL) fclose(fp);
            return -1;
        }

        row_cnt = 0;                                                                                              
        result = mysql_store_result(conn);
        while( (row = mysql_fetch_row(result)) != NULL)
		{
			row_index = 3;

			if(strlen(condBuf) > 3000) {
	            strcat(condBuf, "\nCONTINUE\n");
				stmd_txMsg2Cond (condBuf, (sts_code - STSCODE_TO_MSGID_STATISTICS), 1, snd_cnt++);
        		fprintf (fp, "%s",condBuf);
				memset(condBuf, 0x00, sizeof(condBuf));
			}

			if( row_cnt == 0 )
			{
				sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s \n",
						"", row[0], row[2], row[row_index],row[row_index+1]);
				strcat(condBuf, tmpBuf);
			}
			else
			{
				sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s\n",
						"","", row[2], row[row_index],row[row_index+1]);
				strcat(condBuf, tmpBuf);
			}
			if(strlen(condBuf) > 3000) {
	            strcat(condBuf, "\nCONTINUE\n");
				stmd_txMsg2Cond (condBuf, (sts_code - STSCODE_TO_MSGID_STATISTICS), 1, snd_cnt++);
        		fprintf (fp, "%s",condBuf);
				memset(condBuf, 0x00, sizeof(condBuf));
			}

            sprintf(tmpBuf, "%3s %6s %-28s %15s %15s %15s\n",
                    "", "", "", row[row_index+2], row[row_index+3], row[row_index+4] );
            strcat(condBuf, tmpBuf);                                             

			if(strlen(condBuf) > 3000) {
	            strcat(condBuf, "\nCONTINUE\n");
				stmd_txMsg2Cond (condBuf, (sts_code - STSCODE_TO_MSGID_STATISTICS), 1, snd_cnt++);
        		fprintf (fp, "%s",condBuf);
				memset(condBuf, 0x00, sizeof(condBuf));
			}

            sprintf(tmpBuf, "%3s %6s %-28s %15s %15s %15s\n",
                    "", "", "", row[row_index+5], row[row_index+6], row[row_index+7] );
            strcat(condBuf, tmpBuf);                                             

		
			if(strlen(condBuf) > 3000) {
	            strcat(condBuf, "\nCONTINUE\n");
				stmd_txMsg2Cond (condBuf, (sts_code - STSCODE_TO_MSGID_STATISTICS), 1, snd_cnt++);
        		fprintf (fp, "%s",condBuf);
				memset(condBuf, 0x00, sizeof(condBuf));
			}
			row_cnt++;
        }
        mysql_free_result(result);

		// ?????
		// 여기는 수행되면 안됨. 5분 통계에서 이미 다 들어 가있음. 
#if 0
        if( row_cnt == 0 ) // no query result set
        {
            for( j = 0; j < realItemCnt; j++ )
            {
				if( g_stSCEEntry[i].stEntry[j].real == 1 && g_stSCEEntry[i].stEntry[j].eName != NULL )
				{
					if( j == 0 )
					{
						sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s\n",
								"", SysName[i], g_stSCEEntry[i].stEntry[j].eName, "0","0","0");
						strcat(condBuf, tmpBuf);
						sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s %-15s\n",
								"", "", "", "0.000","0.000","0.000");
						strcat(condBuf, tmpBuf);                                                             
						sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s %-15s\n",
								"", "", "", "0","0","0");
						strcat(condBuf, tmpBuf);
						sprintf(tmpBuf, "    --------------------------------------------------------------------------------------\n");
						strcat(condBuf, tmpBuf);
					}
					else
					{
						sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s\n",
								"", "", g_stSCEEntry[i].stEntry[j].eName, "0","0","0");
						strcat(condBuf, tmpBuf);
						sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s %-15s\n",
								"", "", "", "0.000","0.000","0.000");
						strcat(condBuf, tmpBuf);                                                             
						sprintf(tmpBuf, "%3s %6s %-38s %-15s %-15s %-15s\n",
								"", "", "", "0","0","0");
						strcat(condBuf, tmpBuf);
						sprintf(tmpBuf, "    ---------------------------------------------------------------------------------------\n");
					}
				}
				if(strlen(condBuf) > 3000) {
					stmd_cron_txMsg2Cond (condBuf, (sts_code - STSCODE_TO_MSGID_STATISTICS), 1, snd_cnt);
        			fprintf (fp, "%s",condBuf);
					sprintf(condBuf, "");
				}
            }
        }
#endif

		sprintf(tmpBuf, "    =======================================================================================\n");
		strcat(condBuf, tmpBuf);

    }

    sprintf(tmpBuf, "    COMPLETED\n\n\n");
    strcat(condBuf, tmpBuf);

    if(fp != NULL) 
	{
        fprintf (fp, "%s",condBuf);
        fclose(fp);
    }
    
    stmd_txMsg2Cond(condBuf, (sts_code - STSCODE_TO_MSGID_STATISTICS), 0, snd_cnt);
    
    return 1;
}
示例#25
0
void  readKeyboard(void)
{
	struct dir_node *currentNode;
	unsigned char key;
	bool decision = false;

	key = toupper(cgetc());

	switch((int)key)
	{
	case HK_FORMATTER:
		if(loadOverlay(7))
		{
			formatDisk(selectedPanel);

			clrscr();
			writeMenuBar();
			reloadPanels();
		}
		break;
	case HK_BASIC_VIEWER:
		if(loadOverlay(6))
		{
			viewFileAsBASIC(selectedPanel);

			clrscr();
			writeMenuBar();
			reloadPanels();
		}
		break;
	case HK_HEX_EDIT:
		if(loadOverlay(5))
		{
			hexEditCurrentFile(selectedPanel);

			clrscr();
			writeMenuBar();
			reloadPanels();
		}
		break;

	case CH_ENTER:
		currentNode = getSelectedNode(selectedPanel);
		if(isDirectory(selectedPanel))
		{
			enterDirectory(selectedPanel);
		}
		else if(currentNode != NULL)
		{
			sprintf(filePath, "%s/%s", selectedPanel->path, currentNode->name);
			if(currentNode->type == 0x06
				|| currentNode->type == 0xFF)
			{
				saveScreen();
				decision = writeYesNo("Confirm", quit_message, 1);
				retrieveScreen();

				if(decision == true)
				{
					exec(filePath, NULL);
				}
			}
			else if(currentNode->type == 0xFC)
			{
				if(loadOverlay(6))
				{
					viewFileAsBASIC(selectedPanel);

					clrscr();
					writeMenuBar();
					reloadPanels();
				}
			}
			else
			{
				if(loadOverlay(1))
					viewFile(filePath);
			}
		}
		break;
	case KEY_F4:
		rereadSelectedPanel();
		break;
	case KEY_F3:
		selectDrive(selectedPanel);
		rereadSelectedPanel();
		break;
	case HK_SELECT:
		selectCurrentFile();
		break;
#ifdef __APPLE2ENH__
		case CH_CURS_UP:
#else
		case CH_CURS_LEFT:
#endif
		moveSelectorUp(selectedPanel);
		break;
#ifdef __APPLE2ENH__
		case CH_CURS_DOWN:
#else
		case CH_CURS_RIGHT:
#endif
		moveSelectorDown(selectedPanel);
		break;
#ifdef __APPLE2ENH__
	case CH_CURS_LEFT:
		if(selectedPanel == &rightPanelDrive
			&& strlen(leftPanelDrive.path) > 0)
		{
			selectedPanel = &leftPanelDrive;
			writeSelectorPosition(&leftPanelDrive, '>');
			writeSelectorPosition(&rightPanelDrive, ' ');
			writeCurrentFilename(selectedPanel);
		}
		break;
	case CH_CURS_RIGHT:
		if(selectedPanel == &leftPanelDrive
			&& strlen(rightPanelDrive.path) > 0)
		{
			selectedPanel = &rightPanelDrive;
			writeSelectorPosition(&leftPanelDrive, ' ');
			writeSelectorPosition(&rightPanelDrive, '>');
			writeCurrentFilename(selectedPanel);
		}
		break;
#endif
	case HK_SWITCH_PANEL:
		if(selectedPanel == &leftPanelDrive
			&& strlen(rightPanelDrive.path) > 0)
		{
			selectedPanel = &rightPanelDrive;
			writeSelectorPosition(&leftPanelDrive, ' ');
			writeSelectorPosition(&rightPanelDrive, '>');
			writeCurrentFilename(selectedPanel);
		}
		else if(selectedPanel == &rightPanelDrive
			&& strlen(leftPanelDrive.path) > 0)
		{
			selectedPanel = &leftPanelDrive;
			writeSelectorPosition(&leftPanelDrive, '>');
			writeSelectorPosition(&rightPanelDrive, ' ');
			writeCurrentFilename(selectedPanel);
		}
		break;

	case KEY_SH_PLUS:
		enterDirectory(selectedPanel);
		break;
	case KEY_SH_MINUS:
	case CH_ESC:
		leaveDirectory(selectedPanel);
		break;
	//case 188: // C= C - Command Menu
	//	writeMenu(command);
	//	break;
	//case 182: // C= L - Left Menu
	//	writeMenu(left);
	//	break;
	//case 178: // C= R - Right Menu
	//	writeMenu(right);
	//	break;
	//case 187: // C= F - File Menu
	//	writeMenu(file);
	//	break;
	//case 185: // C= O - Options Menu
	//	writeMenu(options);
	//	break;
	case HK_REREAD_LEFT:
		rereadDrivePanel(left);
		break;
	case HK_REREAD_RIGHT:
		rereadDrivePanel(right);
		break;
	case HK_DRIVE_LEFT:
		writeDriveSelectionPanel(left);
		break;
	case HK_DRIVE_RIGHT:
		writeDriveSelectionPanel(right);
		break;
	case HK_SELECT_ALL:
		selectAllFiles(selectedPanel, true);
		break;
	case HK_DESELECT_ALL:
		selectAllFiles(selectedPanel, false);
		break;
	case KEY_F1:
		if(loadOverlay(1))
			writeHelpPanel();
		break;
	case KEY_F2:
		quit();
		break;
	case KEY_F5:
		if(loadOverlay(4))
			copyFiles();
		break;
	case HK_RENAME:
	case KEY_F6:
		if(loadOverlay(4))
			renameFile();
		break;
	case HK_DELETE:
	case KEY_F8:
		if(loadOverlay(4))
			deleteFiles();
		break;
	//case KEY_AT:
	//	inputCommand();
	//	break;
	case KEY_F7:
		if(loadOverlay(4))
			makeDirectory();
		break;
	case HK_TO_TOP:
		moveTop(selectedPanel);
		break;
	case HK_TO_BOTTOM:
		moveBottom(selectedPanel);
		break;
	case HK_PAGE_UP:
		movePageUp(selectedPanel);
		break;
	case HK_PAGE_DOWN:
		movePageDown(selectedPanel);
		break;
	case HK_WRITE_DISK_IMAGE:
		if(loadOverlay(3))
			writeDiskImage();
		break;
	case HK_CREATE_DISK_IMAGE:
		if(loadOverlay(3))
			createDiskImage();
		break;
	case HK_COPY_DISK:
		if(loadOverlay(2))
			copyDisk();
		break;
	default:
		//writeStatusBarf("%c", key);
		break;
	}
}
示例#26
0
int stmd_LoadSelect(int time_type, char *table_type)
{
    char        condBuf[4096], tmpBuf[1024];
    int         sts_code;
    char        str_time[10];
    int         select_cnt = 0;

    char        query[4096];
    MYSQL_RES   *result;
    MYSQL_ROW   row;

    time_t      now;
    char        tm[DIR_NUM][8];
    char        path[60];
    char        fileName[60];
    FILE        *fp;

    char        itemRes[8][10];
    int         i,j;
//    char *title[]={"CPU","MEM","DISK","QUEUE","SESS"};
    char *title[]={"CPU","MEM","HW","QUEUE"};
    int row_index;
    char SysName[5][8];
    int realSysCnt =0;
    int realItemCnt =0;

    for(i=0; i<sysCnt; i++ ){
        sprintf(SysName[i], "%s", StatisticSystemInfo[i].sysName);
        realSysCnt++;
    }
/* 10.13 TAP REMOVE
    sprintf(SysName[realSysCnt], "TAPA");realSysCnt++;
    sprintf(SysName[realSysCnt], "TAPB");realSysCnt++;
*/
    sprintf(SysName[realSysCnt], "SCEA");realSysCnt++;
    sprintf(SysName[realSysCnt], "SCEB");realSysCnt++;


    now = time(0);
    if(time_type != STMD_WEEK)
        now = now - (printTIME[time_type]*60) - STAT_OFFSET_UNIT;
    else
        now = now - (printTIME[time_type]*60);

    getFilePath (path, tm, &now); // ~/LOG/STAT 까지 만든다.
    makeDirectory (time_type,path,tm);

    sprintf(fileName, "%s", path );
    makeFileName ( fileName, STMD_LOAD, time_type, tm );

    if ( ( fp = fopen(fileName, APPEND ) ) == NULL ){
        sprintf(trcBuf, "%s Open Fail\n", fileName);
        trclib_writeLog(FL, trcBuf);
        return -1;
    }


    switch (time_type) {
        case    STMD_HOUR :
            sts_code = STSCODE_STM_PERIODIC_LOAD_HOUR;
            sprintf(str_time, "%s", STMD_STR_HOUR);
            break;
        case    STMD_DAY :
            sts_code = STSCODE_STM_PERIODIC_LOAD_DAY;
            sprintf(str_time, "%s", STMD_STR_DAY);
            break;
        case    STMD_WEEK :
            sts_code = STSCODE_STM_PERIODIC_LOAD_WEEK;
            sprintf(str_time, "%s", STMD_STR_WEEK);
            break;
        case    STMD_MONTH :
            sts_code = STSCODE_STM_PERIODIC_LOAD_MONTH;
            sprintf(str_time, "%s", STMD_STR_MONTH);
            break;
    }

    sprintf(condBuf,"    %s %s\n    S%04d LOAD PERIODIC STATISTICS MESSAGE\n",
        //"BSDM", // 현재는 OMP로 고정하지만 실질적인 시스템 이름으로 변경 필요 hslim_oper
        "DSCM", // 현재는 OMP로 고정하지만 실질적인 시스템 이름으로 변경 필요 hslim_oper
        commlib_printTStamp(), // 현재시각 time stamp (년,월,일,시,분,초,요일)
        sts_code);

    sprintf(tmpBuf, "    PERIOD = %s\n    MEASURETIME = %s  -  %s\n\n",
        str_time,
        get_period_start_time(time_type), get_period_end_time(time_type));
    strcat(condBuf,tmpBuf);

    sprintf(tmpBuf, "    ==================================\n");
    strcat(condBuf, tmpBuf);
    sprintf(tmpBuf, "    SYSTEM    ITEM    AVG(%%)    MAX(%%)\n");
    strcat(condBuf, tmpBuf);
    sprintf(tmpBuf, "    ==================================\n");
    strcat(condBuf, tmpBuf);

    for(i = 0; i < realSysCnt; i++){

        //if(!strcasecmp(SysName[i], "BSDM"))
        if(!strcasecmp(SysName[i], "DSCM"))
            realItemCnt=4;
/* 10.13 TAP REMOVE
        else if(!strcasecmp(SysName[i], "TAPA") || !strcasecmp(SysName[i], "TAPB"))
            realItemCnt=3;
*/
		else if(!strcasecmp(SysName[i], "SCEA") || !strcasecmp(SysName[i], "SCEB"))
            realItemCnt=3;
        else
            realItemCnt=4;
//            realItemCnt=5;

        sprintf(query, "SELECT "
                " IFNULL(AVG(avr_cpu0), 0), IFNULL(MAX(max_cpu0), 0)," 
                " IFNULL(AVG(avr_memory), 0), IFNULL(MAX(max_memory), 0)," 
                " IFNULL(AVG(avr_disk), 0), IFNULL(MAX(max_disk), 0)," 
                " IFNULL(AVG(avr_msgQ), 0), IFNULL(MAX(max_msgQ), 0) " 
           //     " IFNULL(AVG(avr_sess), 0), IFNULL(MAX(max_sess), 0)" 
                " from %s "
                " where system_name = '%s' AND (stat_date = '%s')",
            table_type, SysName[i], get_period_select_time(time_type));

        if ( trcLogFlag == TRCLEVEL_SQL ) {
            sprintf(trcBuf, "query = %s\n", query);
            trclib_writeLog(FL, trcBuf);
        }
		if (stmd_mysql_query (query) < 0) {
            sprintf(trcBuf,">>> mysql_query fail; err=%s\n", mysql_error(conn));
            trclib_writeLogErr (FL,trcBuf);
            if(fp != NULL) fclose(fp);
            return -1;
        }

        result = mysql_store_result(conn);
        while((row = mysql_fetch_row(result)) != NULL) 
		{
//            for(j=0; j < 10; j++)
            for(j=0; j < 8; j++)
			{ // SESS는 그댜로 출력 하자. add by helca 080930
                strcpy(itemRes[j], row[j]);
				sprintf(itemRes[j], "%d.%d", atoi(itemRes[j])/10, atoi(itemRes[j])%10); 
				/** session delete 0608
				if(j<8)
					sprintf(itemRes[j], "%d.%d", atoi(itemRes[j])/10, atoi(itemRes[j])%10); 
				else
					sprintf(itemRes[j], "%d", atoi(itemRes[j]));
				*/
            }

            row_index = 0;
            for(j=0; j < realItemCnt; j++)
			{
                if (j==0)
				{
                    sprintf(tmpBuf, "%3s %-9s %-5s %8s %9s\n", 
                        "", SysName[i], title[j], itemRes[row_index],itemRes[row_index+1]);
                    strcat(condBuf, tmpBuf);
                } 
				else 
				{
                    sprintf(tmpBuf, "%3s %-9s %-5s %8s %9s\n", 
                        "", "", title[j], itemRes[row_index],itemRes[row_index+1]);
                    strcat(condBuf, tmpBuf);
                }

                row_index += 2;
            }
            sprintf(tmpBuf, "    ==================================\n");
            strcat(condBuf, tmpBuf);

            select_cnt++;
        }
        mysql_free_result(result);

        if (select_cnt == 0) 
		{
            for(j=0; j < realItemCnt; j++)
			{
                if (j==0)
				{
                    sprintf(tmpBuf, "%3s %-9s %-5s %8s %9s\n", 
                        "", SysName[i], title[j], "0.0", "0.0");
                    strcat(condBuf, tmpBuf);
                }
				else 
				{
                    sprintf(tmpBuf, "%3s %-9s %-5s %8s %9s\n", 
                        "", "", title[j], "0.0", "0.0");
                    strcat(condBuf, tmpBuf);
                }
            }
            sprintf(tmpBuf, "    ==================================\n");
            strcat(condBuf, tmpBuf);
        } 
    }

    sprintf(tmpBuf, "    COMPLETED\n\n\n");
    strcat(condBuf, tmpBuf);

    if(fp != NULL) 
	{
        fprintf (fp, "%s",condBuf);
        fclose(fp);
    }
    
    stmd_txMsg2Cond(condBuf, (sts_code - STSCODE_TO_MSGID_STATISTICS), 0, 1);
    
    return 1;
}
示例#27
0
void loop_SHELL()
{
	FILE* _io_=fopen("commands.txt","a+");
	
	realpath("commands.txt", history_file_path);
	
   	while(1)
	{
		char cwd[MAX_SIZE];
		char buf[MAX_SIZE];

		FILE* _out_;

		if(getcwd(cwd, MAX_SIZE) != NULL)
		printf(" %s > ",cwd);
		
		else{
			printf("Command Prompt error ! Terminating...\n ");
			exit(1);
		}

		if(fgets(buf, MAX_SIZE, stdin)==NULL)
			continue;

		if(strlen(buf)<=1)
			continue;

		if(updateHistory(buf)==-1)
			printf("Trouble updating History !\n");

		char **args = (char**)malloc(MAX_SIZE*sizeof(char*));

		char** p =args;

		*p=strtok(buf, " \t\n");

		while(*p!=NULL)
		{
			p++;
			*p=strtok(NULL, " \t\n");
		}

		if(args==NULL)
			continue;

		if(strcmp(args[0],"clear")==0 && args[1]==NULL)
			clrscreen();

		else if(strcmp(args[0],"ls")==0)
			listContents(args[1]);

		else if(strcmp(args[0],"env")==0 && args[1]==NULL)
			showEnvironmentVariables();

		else if(strcmp(args[0],"exit")==0 && args[1]==NULL)
			exit(0);

		else if(strcmp(args[0],"pwd")==0 && args[1]==NULL)
		{
			if (showWorkingDirectory() == -1)
				printf("Error showing current directory !\n");
		}

		else if(strcmp(args[0],"cd")==0)
		{
			if(changeDirectory(args[1])==-1)
				printf("ERROR : No such directory exists!\n");
		}
		
		else if(strcmp(args[0],"mkdir")==0)
		{
			if(args[1]==NULL)
				printf("Invalid Command ! Please enter : \n mkdir <dir_name>\n");
			else if(makeDirectory(args[1])==-1)
				printf("ERROR in creating directory !\n");
		}

		else if(strcmp(args[0],"rmdir")==0)
		{
			if(args[1]==NULL)
				printf("Invalid Command ! Please enter : \n rmdir <dir_name>\n");
			else if(removeDirectory(args[1])==-1)
				printf("ERROR in deleting directory !\n");
		}

		else if(strcmp(args[0],"history")==0)
		{
			if(showHistory(args[1])==-1)
				printf("ERROR ! Trouble showing history !\n");
		}
		
		else executeCommand(args);
	}

}
示例#28
0
文件: mlogger.c 项目: Unidata/LDM
LOGGER *logInitLogger (char *name, int facility, int options, int verbosity, char *logPath,
			char *logName, long rollOverSize, long bufferSize) {

	LOGGER 		*pl;
	int		i;
	struct stat	sb;

	if ((logPath == NULL) || (logPath[0] == '\0')) {
		fprintf (stderr, "ERROR: %s - Invalid logPath passed\n", __FUNCTION__);
		return NULL;
	}

	if ((logName == NULL) || (logName[0] == '\0')) {
		fprintf (stderr, "ERROR: %s - Invalid logName passed\n", __FUNCTION__);
		return NULL;
	}

	if ((facility < F_MIN) || (facility > F_MAX)) {
		fprintf (stderr, "ERROR: %s - Unknown facility %d\n", __FUNCTION__, facility);
		return NULL;
	}

	if (facility != F_FILE) {
		fprintf (stderr, "ERROR: %s - The only facility current supported is F_FILE (%d)\n",
			__FUNCTION__, F_FILE);
		return NULL;
	}

	if ((options & O_FLUSH_AFTER_EACH) && (options & O_TIMED_FLUSH)) {
		fprintf (stderr, "ERROR: %s - O_FLUSH_AFTER_EACH and O_TIMED_FLUSH cannot both be set\n",
			__FUNCTION__);
		return NULL;
	}

	verbosity = (verbosity < V_MIN) ? V_MIN : verbosity;
	verbosity = (verbosity > V_MAX) ? V_MAX : verbosity;

	if (loggerStore.count == 0) {
		i = 0;
		if ((loggerStore.loggers = (LOGGER **) malloc (sizeof (LOGGER *))) == NULL) {
			fprintf (stderr, "ERROR: %s - Could not malloc space for loggerStore array\n", __FUNCTION__);
			return NULL;
		}

		if ((loggerStore.loggers[0] = (LOGGER *) malloc (sizeof (LOGGER))) == NULL) {
			fprintf (stderr, "ERROR: %s - Could not malloc space for logger node\n", __FUNCTION__);
			return NULL;
		}
	} else {	/* Try to find an allocated logger that's not being used */
		for (i = 0; i < loggerStore.count; i++) {
			if (!(loggerStore.loggers[i]->optionMask & NODE_IN_USE)) {
				break;
			}
		}

		if (i >= loggerStore.count) {
			if ((loggerStore.loggers = (LOGGER **) realloc (loggerStore.loggers, sizeof (LOGGER *) * (loggerStore.count+1))) == NULL) {
				fprintf (stderr, "ERROR: %s - Could not realloc loggerStore\n", __FUNCTION__);
				return NULL;
			}

			if ((loggerStore.loggers[i] = (LOGGER *) malloc (sizeof (LOGGER))) == NULL) {
				fprintf (stderr, "ERROR: %s - Could not malloc space for logger node\n", __FUNCTION__);
				return NULL;
			}
		}

	}

	pl = loggerStore.loggers[i];
	pl->index = i;

	loggerStore.count++;
	pl->name = strdup (name);
	options |= NODE_IN_USE;
	pl->optionMask		= options;		/* Set the LOG_IN_USE bit and the flags passed in */
	pl->verbosity		= verbosity;
	pl->facility		= facility;		/* Only supports LOG_FILE now...how to implement others? */
	pl->bufferSize		= bufferSize;
	pl->logFd		= NULL;
	pl->needFlush		= FALSE;
	pl->flushInterval	= LOG_DEFAULT_FLUSH_INTERVAL;
	pl->timerSignal		= SIGRTMIN;
	pl->flushBufSize	= 0;
	pl->amArchiving		= FALSE;

//	switch (p_logger->facility) {
//		case F_FILE:
//			retval = logInitFile (p_logger);
//			break;
//
//		case F_DB:
//			retval = logInitDB (p_logger);
//			break;
//
//		case F_SOCKET:
//			retval = logInitSocket (p_logger);
//			break;
//
//		case F_PIPE:
//			retval = logInitPipe (p_logger);
//			break;
//
//		case F_CONSOLE:
//			retval = logInitConsole (p_logger);
//			break;
//
//		case F_PRINTER:
//			retval = logInitPipe (p_logger);
//			break;
//
//		default:	/* Shouldn't ever get here... */
//			fprintf ("ERROR: %s - hit default case\n", __FUNCTION__);
//			break;
//	}

	/* Force rollover size to LOG_MAX_FILE_SIZE if user leaves it set to 0 */
	pl->rollOverSize = rollOverSize ? rollOverSize : LOG_MAX_FILE_SIZE;

	if ((pl->logPath = strdup (logPath)) == NULL) {
		fprintf (stderr, "ERROR: %s - Could not strdup logPath\n", __FUNCTION__);
		return NULL;
	}

	if ((pl->logName = strdup (logName)) == NULL) {
		fprintf (stderr, "ERROR: %s - Could not strdup logName\n", __FUNCTION__);
		return NULL;
	}

	if ((pl->fullLogName = malloc (strlen (logPath) + strlen (logName) + 2)) == NULL) {
		fprintf (stderr, "ERROR: %s - Could not malloc fullLogName\n", __FUNCTION__);
		return NULL;
	}

	sprintf (pl->fullLogName, "%s/%s", logPath, logName);

	/* This is kludged for now, allow it to be specified later */
	if ((pl->archivePath = malloc (strlen (logPath) + strlen ("/ARCHIVE/MmmDd") + 1)) == NULL) {
		fprintf (stderr, "ERROR: %s - Could not malloc archivePath\n", __FUNCTION__);
		return NULL;
	}

	sprintf (pl->archivePath, "%s/ARCHIVE", logPath);

	if ((pl->timeFormat = strdup (LOG_DEFAULT_DATE_FORMAT)) == NULL) {	/* Hand jam this for now. In future make it configurable */
		fprintf (stderr, "ERROR: %s - Could not strdup date format string\n", __FUNCTION__);
		return NULL;
	}

	if ((pl->buffer = malloc (bufferSize)) == NULL) {
		fprintf (stderr, "ERROR: %s - Could not malloc buffer\n", __FUNCTION__);
		return NULL;
	}

	if ((pl->formatBuf = malloc (LOG_FORMAT_BUF_SIZE)) == NULL) {
		fprintf (stderr, "ERROR: %s - Could not malloc format buffer\n", __FUNCTION__);
		return NULL;
	}

	pl->lastLogDay = pl->lastLogTime = 0;

	if (!fileExists (pl->logPath)) {
		if (makeDirectory (pl->logPath, YES, DIRECTORY_CREATE_PERMS) < 0) {
			fprintf (stderr, "ERROR: %s - Could not make directory for logPath\n", __FUNCTION__);
			return NULL;
		}
	}

	/* Cheat to get the device block size by checking on the block size of the logPath directory file */
	pl->flushBufSize = (stat (pl->logPath, &sb) == 0) ? sb.st_blksize : DEFAULT_DISK_BLOCK_SIZE;

	if (fileExists (pl->fullLogName)) {
		pl->lastLogTime = getFileLastMod (pl->fullLogName);
		pl->lastLogDay = pl->lastLogTime / SECONDS_PER_DAY;
		pl->logSize = getFileSize (pl->fullLogName);
		checkLogRollover (pl);		/* Rollover the log if necessary */
	} else {
		pl->lastLogDay = pl->lastLogTime = 0;
		pl->logSize = 0;
	}

	if (options & O_LOG_INIT) {
		logMsg (pl, V_INFO, S_STATUS, "%s INITIALIZED", pl->name);
		if (!(options & O_KEEP_OPEN)) {
			logClose (pl);
		}
	}

	if (options & O_KEEP_OPEN) {
		logOpen (pl);
	}

	return pl;
}
示例#29
0
bool Mineserver::configDirectoryPrepare(const std::string& path)
{
  const std::string distsrc = pathOfExecutable() + PATH_SEPARATOR + CONFIG_DIR_DISTSOURCE;

  std::cout << std::endl
            << "configDirectoryPrepare(): target directory = \"" << path
            << "\", distribution source is \"" << distsrc << "\"." << std::endl
            << "WARNING: This function is not implemented fully at present." << std::endl
            << "You must check that all the necessary files are in the target directory" << std::endl
            << "(including recipes and plugins) and that the config file is correct." << std::endl
            << std::endl;

  /*
     WARNING:
     ========
     kiki64's commit sort've messed things up. Someone needs to re-enable config.cfg's values for
     target paths (home, plugins, and files paths). I have fixed the issue with windows vs. *nix.
  */

  struct stat st;
  //Create Mineserver directory
  if (stat(path.c_str(), &st) != 0)
  {
    LOG2(INFO, "Creating: " + path);
    if (!makeDirectory(path))
    {
      LOG2(ERROR, path + ": " + strerror(errno));
      return false;
    }
  }

  //Create recipe/plugin directories
  // TODO: Fill in respective values with config()->sData("system.path.data")) and "system.path.plugins"
  const std::string directories [] = 
  {
    "plugins",
    "files",
    "files/recipes",
    "files/recipes/armour",
    "files/recipes/block",
    "files/recipes/cloth",
    "files/recipes/dyes",
    "files/recipes/food",
    "files/recipes/materials",
    "files/recipes/mechanism",
    "files/recipes/misc",
    "files/recipes/tools",
    "files/recipes/transport",
    "files/recipes/weapons",
  };
  for (size_t i = 0; i < sizeof(directories) / sizeof(directories[0]); i++)
  {
    std::string recipePath = path + PATH_SEPARATOR + directories[i];
    if (stat(recipePath.c_str(), &st) != 0)
    {
      //LOG2(INFO, "Creating: " + recipePath);
      if (!makeDirectory(recipePath))
      {
        LOG2(ERROR, recipePath + ": " + strerror(errno));
        return false;
      }
    }
  }

  // copy example configs
  const std::string files[] =
  {
    "banned.txt",
    "commands.cfg",
    "config.cfg",
    "item_alias.cfg",
    "ENABLED_RECIPES.cfg",
    "motd.txt",
    "permissions.txt",
    "roles.txt",
    "rules.txt",
    "whitelist.txt",
#ifdef WIN32
    "commands.dll",
#else
    "commands.so",
#endif
  };

  //Get list of recipe files
  std::vector<std::string> temp;
  Mineserver::m_inventory->getEnabledRecipes(temp, pathOfExecutable() + PATH_SEPARATOR + "files" + PATH_SEPARATOR + "ENABLED_RECIPES.cfg");

  //Add non-recipes to list
  for (unsigned int i = 0; i < sizeof(files) / sizeof(files[0]); i++)
  {
    temp.push_back(files[i]);
  }

  for (unsigned int i = 0; i < temp.size(); i++)
  {
    std::string namein, nameout;

    if(temp[i].substr(temp[i].size() - 7).compare(".recipe") == 0)//If a recipe file
    {
      namein  = pathOfExecutable() + PATH_SEPARATOR + "files" + PATH_SEPARATOR + "recipes" + PATH_SEPARATOR + temp[i];
      nameout = path + PATH_SEPARATOR + "files" + PATH_SEPARATOR + "recipes" + PATH_SEPARATOR + temp[i];
    }
    else if ((temp[i].substr(temp[i].size() - 4).compare(".dll") == 0) ||
             (temp[i].substr(temp[i].size() - 3).compare(".so") == 0))
    {
      namein  = pathOfExecutable() + PATH_SEPARATOR + "files" + PATH_SEPARATOR + "plugins" + PATH_SEPARATOR + temp[i];
      nameout = path + PATH_SEPARATOR + "plugins" + PATH_SEPARATOR + temp[i];
    }
    else
    {
      namein  = pathOfExecutable() + PATH_SEPARATOR + "files" + PATH_SEPARATOR + temp[i];
      nameout = path + PATH_SEPARATOR + temp[i];
    }

    // don't overwrite existing files
    if ((stat(nameout.c_str(), &st) == 0)) // && S_ISREG(st.st_mode) )
    {
      continue;
    }

    std::ifstream fin(namein.c_str(), std::ios_base::binary | std::ios_base::in);
    if (fin.fail())
    {
      LOG2(ERROR, "Failed to open: " + namein);
      continue;
    }

    //LOG2(INFO, "Copying: " + nameout);
    std::ofstream fout(nameout.c_str(), std::ios_base::binary);
    if (fout.fail())
    {
      LOG2(ERROR, "Failed to write to: " + nameout);
      continue;
    }

    fout << fin.rdbuf();
  }

  return true;
}
示例#30
0
int stmd_LogonSelect(int time_type, char *table_type)
{
    char        condBuf[4096], tmpBuf[1024];
    int         sts_code;
    char        str_time[10];
    int         select_cnt = 0, snd_cnt = 0;

    char        query[4096];
    MYSQL_RES   *result;
    MYSQL_ROW   row;

    time_t      now;
    char        tm[DIR_NUM][8];
    char        path[60];
    char        fileName[60];
    FILE        *fp;

    int         i, j, row_index, realSysCnt = 2, realItemCnt = 0;
    char title[7][16]={"SYSTEM", "SM_CH_ID", "LOG_MOD", "LOG_REQ", "LOG_SUCC","LOG_FAIL","SUCC_RATE"}; //uamyd 20110515 succrate_added
	char title1[5][16]={"", "HBIT_0","HBIT_1","HBIT_2", "HBIT_3"}; 
	char title2[5][16]={"", "HBIT_4","HBIT_5","HBIT_6", "HBIT_7"};
	char title3[5][16]={"", "HBIT_8","HBIT_9","HBIT_10", "HBIT_11"};
	char title4[5][16]={"", "HBIT_12","HBIT_13","HBIT_14", "HBIT_15"};
	char title5[5][16]={"", "HBIT_16","HBIT_17","HBIT_18", "HBIT_19"};
	char title6[5][16]={"", "HBIT_20","HBIT_21","HBIT_22", "HBIT_23"};
	char title7[5][16]={"", "HBIT_24","HBIT_25","HBIT_26", "HBIT_27"};
	char title8[5][16]={"", "HBIT_28","HBIT_29","HBIT_30", "HBIT_31"};
	char title10[5][16]={"", "SM_INT_ERR","OP_ERR","OP_TIMEOUT", "ETC_FAIL"};
	char title11[3][16]={"", "API_REQ_ERR","API_TIMEOUT"};
    char SysName[2][8] = {"SCMA","SCMB"};

    now = time(0);
    if(time_type != STMD_WEEK)
        now = now - (printTIME[time_type]*60) - STAT_OFFSET_UNIT;
    else
        now = now - (printTIME[time_type]*60);

    getFilePath (path, tm, &now); // ~/LOG/STAT 까지 만든다.
    makeDirectory (time_type,path,tm);

    sprintf(fileName, "%s", path );
    makeFileName ( fileName, STMD_LOGON, time_type, tm );

    if ( ( fp = fopen(fileName, APPEND ) ) == NULL ){
        sprintf(trcBuf, "%s Open Fail\n", fileName);
        trclib_writeLog(FL, trcBuf);
        return -1;
    }


    switch (time_type) {
        case    STMD_HOUR :
            sts_code = STSCODE_STM_PERIODIC_LOGON_HOUR;
            sprintf (str_time, "%s", STMD_STR_HOUR);
            break;
        case    STMD_DAY :
            sts_code = STSCODE_STM_PERIODIC_LOGON_DAY;
            sprintf (str_time, "%s", STMD_STR_DAY);
            break;
        case    STMD_WEEK :
            sts_code = STSCODE_STM_PERIODIC_LOGON_WEEK;
            sprintf (str_time, "%s", STMD_STR_WEEK);
            break;
        case    STMD_MONTH :
            sts_code = STSCODE_STM_PERIODIC_LOGON_MONTH;
            sprintf (str_time, "%s", STMD_STR_MONTH);
            break;
    }

    sprintf(condBuf,"    %s %s\n    S%04d LOGON PERIODIC STATISTICS MESSAGE\n",
        "SCM", // 현재는 OMP로 고정하지만 실질적인 시스템 이름으로 변경 필요 hslim_oper
        commlib_printTStamp(), // 현재시각 time stamp (년,월,일,시,분,초,요일)
        sts_code);

    sprintf(tmpBuf, "    PERIOD = %s\n    MEASURETIME = %s  -  %s\n\n",
        str_time,
        get_period_start_time(time_type), get_period_end_time(time_type));
    strcat(condBuf,tmpBuf);

    sprintf(tmpBuf, "    ====================================================================\n");
    strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s\n","",title[0],title[1],title[2] );
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n","","",title[3],title[4],title[5],title[6] ); //uamyd 20110515 succrate_added
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "","", title1[1], title1[2],title1[3],title1[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "","", title2[1], title2[2],title2[3],title2[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "","", title3[1], title3[2],title3[3],title3[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "","", title4[1], title4[2],title4[3],title4[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "","", title5[1], title5[2],title5[3],title5[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "","", title6[1], title6[2],title6[3],title6[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "","", title7[1], title7[2],title7[3],title7[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "","", title8[1], title8[2],title8[3],title8[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "","", title10[1], title10[2],title10[3],title10[4]);
	strcat(condBuf, tmpBuf);
	sprintf(tmpBuf, "%3s %8s %12s %12s\n", "","", title11[1], title11[2]);
	strcat(condBuf, tmpBuf);
    sprintf(tmpBuf, "    ====================================================================\n");
    strcat(condBuf, tmpBuf);

    for(i = 0; i < realSysCnt; i++)
	{
		realItemCnt = 1;

	   	sprintf(query, "SELECT system_name, sm_ch_id, log_mod, "
				" ifnull(sum(log_req), 0), ifnull(sum(log_succ), 0), ifnull(sum(log_fail), 0), "
				" ifnull(sum(HBIT_0), 0), ifnull(sum(HBIT_1), 0), ifnull(sum(HBIT_2), 0), "
				" ifnull(sum(HBIT_3), 0),  "
				" ifnull(sum(HBIT_4), 0), ifnull(sum(HBIT_5), 0), ifnull(sum(HBIT_6), 0), "
				" ifnull(sum(HBIT_7), 0),  "
				" ifnull(sum(HBIT_8), 0), ifnull(sum(HBIT_9), 0), ifnull(sum(HBIT_10), 0), "
				" ifnull(sum(HBIT_11), 0),  "
				" ifnull(sum(HBIT_12), 0), ifnull(sum(HBIT_13), 0), ifnull(sum(HBIT_14), 0), "
				" ifnull(sum(HBIT_15), 0),  "
				" ifnull(sum(HBIT_16), 0), ifnull(sum(HBIT_17), 0), ifnull(sum(HBIT_18), 0), "
				" ifnull(sum(HBIT_19), 0),  "
				" ifnull(sum(HBIT_20), 0), ifnull(sum(HBIT_21), 0), ifnull(sum(HBIT_22), 0), "
				" ifnull(sum(HBIT_23), 0),  "
				" ifnull(sum(HBIT_24), 0), ifnull(sum(HBIT_25), 0), ifnull(sum(HBIT_26), 0), "
				" ifnull(sum(HBIT_27), 0),  "
				" ifnull(sum(HBIT_28), 0), ifnull(sum(HBIT_29), 0), ifnull(sum(HBIT_30), 0), "
				" ifnull(sum(HBIT_31), 0),  "
				" ifnull(sum(sm_int_err),0), ifnull(sum(op_err),0), ifnull(sum(op_timeout),0), "
				" ifnull(sum(etc_fail),0), "
				" ifnull(sum(api_req_err),0), ifnull(sum(api_timeout),0) "
			   " from %s "
			   " where system_name = '%s' AND (stat_date = '%s') "
			   " group by system_name, sm_ch_id, log_mod ",
			   table_type, SysName[i], get_period_select_time(time_type));

        if ( trcLogFlag == TRCLEVEL_SQL ) {
            sprintf(trcBuf, "query = %s\n", query);
            trclib_writeLog(FL, trcBuf);
        }
		if (stmd_mysql_query (query) < 0) {
            sprintf(trcBuf,">>> mysql_query fail; err=%s\n", mysql_error(conn));
            trclib_writeLogErr (FL,trcBuf);
            if(fp != NULL) fclose(fp);
            return -1;
        }

        select_cnt = 0;
        result = mysql_store_result(conn);

		if(strlen(condBuf)) {
			stmd_txMsg2Cond(condBuf, (sts_code - STSCODE_TO_MSGID_STATISTICS), 1, snd_cnt++);
			fprintf (fp, "%s",condBuf);
			memset(condBuf, 0x00, sizeof(condBuf));
		}

        while((row = mysql_fetch_row(result)) != NULL) 
		{
			row_index = 1;
			if (select_cnt == 0)
			{
				sprintf(tmpBuf, "%3s %8s SM_CH%7s %12s\n",
						"",SysName[i],row[row_index],!atoi(row[row_index+1])?"LOG_ON":"LOG_OUT");
				strcat(condBuf, tmpBuf);
			} 
			else 
			{
				sprintf(tmpBuf, "%3s %8s SM_CH%7s %12s\n",
						"","",row[row_index],!atoi(row[row_index+1])?"LOG_ON":"LOG_OUT");
				strcat(condBuf, tmpBuf);
			}

			sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12.1f\n", //uamyd 20110515 succrate_added
					"", "", row[row_index+2],row[row_index+3],row[row_index+4],
					atoi(row[row_index+2])==0?0.0:(((float)atoi(row[row_index+3])/(float)atoi(row[row_index+2]))*100)); //uamyd 20110515 succrate_added
			strcat(condBuf, tmpBuf );

			for( j=5; j<34; j+=4 ){
				//j = 5,9,13,17,21,25,29,33
				sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", 
						"", "", row[row_index+j],row[row_index+j+1],row[row_index+j+2],row[row_index+j+3]);
				strcat(condBuf, tmpBuf );
			}
			sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", 
					"", "", row[row_index+37],row[row_index+38],row[row_index+39],row[row_index+40]);
			strcat(condBuf, tmpBuf);
			sprintf(tmpBuf, "%3s %8s %12s %12s\n",
					"", "", row[row_index+41],row[row_index+42]);
			strcat(condBuf, tmpBuf);

    		sprintf(tmpBuf, "    ====================================================================\n");
			strcat(condBuf, tmpBuf);
			select_cnt++;

			if(strlen(condBuf)) {
				stmd_txMsg2Cond(condBuf, (sts_code - STSCODE_TO_MSGID_STATISTICS), 1, snd_cnt++);
                fprintf (fp, "%s",condBuf);
                memset(condBuf, 0x00, sizeof(condBuf));
            }
        }
        mysql_free_result(result);

        if (select_cnt == 0) 
		{
			sprintf(tmpBuf, "%3s %8s %12s %12s\n", "",SysName[i], "-","-");
			strcat(condBuf, tmpBuf);
			sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "", "", "0","0","0","0"); //uamyd 20110515 succrate_added
			strcat(condBuf, tmpBuf);
			for(j=0;j<9;j++){
				sprintf(tmpBuf, "%3s %8s %12s %12s %12s %12s\n", "", "", "0","0","0","0");
				strcat(condBuf, tmpBuf );
			}
			sprintf(tmpBuf, "%3s %8s %12s %12s\n", 
					"", "", "0","0");
			strcat(condBuf, tmpBuf);
    		sprintf(tmpBuf, "    ====================================================================\n");
            strcat(condBuf, tmpBuf);
        } 
    }

    sprintf(tmpBuf, "    COMPLETED\n\n\n");
    strcat(condBuf, tmpBuf);

    if(fp != NULL) 
	{
        fprintf (fp, "%s",condBuf);
        fclose(fp);
    }
    
    stmd_txMsg2Cond(condBuf, (sts_code - STSCODE_TO_MSGID_STATISTICS), 0, snd_cnt);
    
    return 1;
}