コード例 #1
0
ファイル: getline.c プロジェクト: kevinlawler/kona
ssize_t getdelim (S *s, size_t *n, int d, FILE *f){   //target, current capacity, delimiter, file
#if 0 
  // this code is MSVC runtime version specific
  char *q; I w=0;
  if (!s) {errno = EINVAL; goto error;}
  if (f->_cnt <= 0) {
    if (expander(s, 1)) goto error;
    (*s)[0] = '\0'; R *n=-1;
  }
  while ((q = memchr(f->_ptr, d, f->_cnt)) == NULL) {
    if (appender(s, &w, (S) f->_ptr, f->_cnt)) goto error;
    goto done;  /* hit EOF */
  }
  q++;  /* snarf the delimiter, too */
  if (appender(s, &w, (S) f->_ptr, q - f->_ptr)) goto error;
  f->_cnt -= q - f->_ptr; f->_ptr = q;
#endif
  I w=0;
  if (!s) {errno = EINVAL; goto error;}
  for(;;) {
    C c=fgetc(f);
    if (EOF == c) R -1;
    if (appender(s, &w, (S)&c, 1)) goto error;
    if (d==c) break;
  }
  (*s)[w] = '\0'; R *n=w;
  error: R *n=-1;
}
コード例 #2
0
ファイル: main.cpp プロジェクト: zzlee/zzlab
	static void initLogSystem()
	{
		log4cplus::initialize();

		// log to daily rolling log file
		if (_LogFlags & LOG_TO_FILE)
		{
			// make sure path "Data/logs" exists
			filesystem::wpath p = _DataPath / L"logs";
			system::error_code ec;
			filesystem::create_directories(p, ec); // ignore this error			

			log4cplus::SharedAppenderPtr appender(
				new log4cplus::DailyRollingFileAppender((p / L"zzlab.log").wstring()));
			appender->setLayout(std::auto_ptr<log4cplus::Layout>(new log4cplus::TTCCLayout()));
			log4cplus::Logger::getRoot().addAppender(appender);
		}

		// log to Win32 debug
		if (_LogFlags & LOG_TO_WIN32DEBUG)
		{
			log4cplus::SharedAppenderPtr appender(new log4cplus::Win32DebugAppender());
			appender->setLayout(std::auto_ptr<log4cplus::Layout>(new log4cplus::TTCCLayout()));
			log4cplus::Logger::getRoot().addAppender(appender);
		}

		// log to console
		if (_LogFlags & LOG_TO_CONSOLE)
		{
			log4cplus::SharedAppenderPtr appender(new log4cplus::ConsoleAppender());
			appender->setLayout(std::auto_ptr<log4cplus::Layout>(new log4cplus::TTCCLayout()));
			log4cplus::Logger::getRoot().addAppender(appender);
		}
	}
コード例 #3
0
ファイル: Channel.cpp プロジェクト: Jildor/TrinityCore
void Channel::SetOwner(ObjectGuid const& guid, bool exclaim)
{
    if (!_ownerGuid.IsEmpty())
    {
        // [] will re-add player after it possible removed
        auto itr = _playersStore.find(_ownerGuid);
        if (itr != _playersStore.end())
            itr->second.SetOwner(false);
    }

    _ownerGuid = guid;
    if (!_ownerGuid.IsEmpty())
    {
        uint8 oldFlag = GetPlayerFlags(_ownerGuid);
        auto itr = _playersStore.find(_ownerGuid);
        if (itr == _playersStore.end())
            return;

        itr->second.SetModerator(true);
        itr->second.SetOwner(true);

        ModeChangeAppend appender(_ownerGuid, oldFlag, GetPlayerFlags(_ownerGuid));
        ChannelNameBuilder<ModeChangeAppend> builder(this, appender);
        SendToAll(builder);

        if (exclaim)
        {
            OwnerChangedAppend appender(_ownerGuid);
            ChannelNameBuilder<OwnerChangedAppend> builder(this, appender);
            SendToAll(builder);
        }

        UpdateChannelInDB();
    }
}
コード例 #4
0
ファイル: SiteGroupsTree.cpp プロジェクト: death/webwatch
WebWatch::SiteItemGroup & CSiteGroupsTree::BuildTree(WebWatch::SiteItemGroup & group)
{
    SetRedraw(FALSE);

    DeleteAllItems();
    m_group2item.clear();

    HTREEITEM root = InsertGroupItem(group);

    WebWatch::SiteItemGroup *defaultGroup = 0;

    WebWatch::SiteItemGroup::GroupIterator it = group.GetGroupsBegin();
    WebWatch::SiteItemGroup::GroupIterator end = group.GetGroupsEnd();
    GroupAppender appender(*this, root);

    while (it != end) {
        WebWatch::SiteItemGroup *subgroup = *it;
        appender(subgroup);

        if (defaultGroup == 0 && subgroup->GetName() == "Default")
            defaultGroup = subgroup;

        ++it;
    }

    SetRedraw();

    if (defaultGroup == 0)
        defaultGroup = &group;

    return *defaultGroup;
}
コード例 #5
0
ファイル: Channel.cpp プロジェクト: Lyill/TrinityCore
void Channel::Invite(Player const* player, std::string const& newname)
{
    ObjectGuid const& guid = player->GetGUID();

    if (!IsOn(guid))
    {
        NotMemberAppend appender;
        ChannelNameBuilder<NotMemberAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    Player* newp = ObjectAccessor::FindConnectedPlayerByName(newname);
    if (!newp || !newp->isGMVisible())
    {
        PlayerNotFoundAppend appender(newname);
        ChannelNameBuilder<PlayerNotFoundAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    if (IsBanned(newp->GetGUID()))
    {
        PlayerInviteBannedAppend appender(newname);
        ChannelNameBuilder<PlayerInviteBannedAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    if (newp->GetTeam() != player->GetTeam() &&
        (!player->GetSession()->HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHANNEL) ||
        !newp->GetSession()->HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHANNEL)))
    {
        InviteWrongFactionAppend appender;
        ChannelNameBuilder<InviteWrongFactionAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    if (IsOn(newp->GetGUID()))
    {
        PlayerAlreadyMemberAppend appender(newp->GetGUID());
        ChannelNameBuilder<PlayerAlreadyMemberAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    if (!newp->GetSocial()->HasIgnore(guid))
    {
        InviteAppend appender(guid);
        ChannelNameBuilder<InviteAppend> builder(this, appender);
        SendToOne(builder, newp->GetGUID());
    }

    PlayerInvitedAppend appender(newp->GetName());
    ChannelNameBuilder<PlayerInvitedAppend> builder(this, appender);
    SendToOne(builder, guid);
}
コード例 #6
0
/**
 * Statically initialize the log4cxx library.
 */
void configureLogging(const std::string logString, const log4cxx::LevelPtr level) {
  log4cxx::LayoutPtr layout(new log4cxx::PatternLayout(logString));
  log4cxx::AppenderPtr appender(new log4cxx::ConsoleAppender(layout));
  log4cxx::BasicConfigurator::configure(appender);
  log4cxx::LoggerPtr rootlogger = log4cxx::Logger::getRootLogger();
  rootlogger->setLevel(level);
}
コード例 #7
0
ファイル: Channel.cpp プロジェクト: Lyill/TrinityCore
void Channel::Password(Player const* player, std::string const& pass)
{
    ObjectGuid const& guid = player->GetGUID();

    if (!IsOn(guid))
    {
        NotMemberAppend appender;
        ChannelNameBuilder<NotMemberAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    PlayerInfo& info = _playersStore.at(guid);
    if (!info.IsModerator() && !player->GetSession()->HasPermission(rbac::RBAC_PERM_CHANGE_CHANNEL_NOT_MODERATOR))
    {
        NotModeratorAppend appender;
        ChannelNameBuilder<NotModeratorAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    _channelPassword = pass;

    PasswordChangedAppend appender(guid);
    ChannelNameBuilder<PasswordChangedAppend> builder(this, appender);
    SendToAll(builder);

    UpdateChannelInDB();
}
コード例 #8
0
 /**
 Intialize root logger.
 
 @param pattern Log pattern.
 @param immediateFlush When it is set true, output stream will be flushed 
                       after each appended event.
 @return Logger instance.
 */
 static Logger InitLogger(tstring pattern = tstring(LOG_PATTERN), 
                          bool immediateFlush = LOG_DEFAULT_IMMEDIATE_FLUSH)
 {
  log4cplus::initialize();

  log4cplus::SharedAppenderPtr appender(
   new log4cplus::ConsoleAppender(false, immediateFlush));
  appender->setName(TEXT("default"));
  appender->setLayout(std::auto_ptr<log4cplus::Layout>(
   new log4cplus::PatternLayout(pattern)));

  Logger logger = log4cplus::Logger::getRoot();
  logger.addAppender(appender);

#if defined(WIN32) // && defined(_DEBUG) 

  log4cplus::SharedAppenderPtr _appender(new log4cplus::Win32DebugAppender);
  _appender->setName(TEXT("win32"));
  _appender->setLayout(std::auto_ptr<log4cplus::PatternLayout>(
   new log4cplus::PatternLayout(pattern)));
  logger.addAppender(_appender);
    
#endif
  
#ifdef _DEBUG
  logger.setLogLevel(LEVEL_DEBUG);
#else
  logger.setLogLevel(LEVEL_INFO);
#endif

  return logger;
 }
コード例 #9
0
ファイル: harnesstestexecutor.cpp プロジェクト: Goon83/scidb
int HarnessTestExecutor :: createLogger (void)
{
	assert (_ie.log_file.length () > 0);
	bfs::remove (_ie.log_file);	

	log4cxx :: LayoutPtr layout (new log4cxx :: PatternLayout ("%d %p %x - %m%n"));
	log4cxx :: FileAppenderPtr appender (new log4cxx :: FileAppender (layout, _ie.log_file, true));
	_logger = log4cxx :: Logger :: getLogger (_ie.logger_name);
	_logger->addAppender (appender);

    _executorTag = LOGGER_TAG_HARNESSEXECUTOR;
    _executorTag += '[' + _ie.logger_name + ']';
    LOGGER_PUSH_NDCTAG (_executorTag);

	_loggerEnabled = true;
	LOG4CXX_INFO (_logger, "logger SYSTEM ENABLED");

	switch (_ie.debugLevel)
	{
		case DEBUGLEVEL_FATAL : _logger->setLevel (log4cxx :: Level :: getFatal ()); break;
		case DEBUGLEVEL_ERROR : _logger->setLevel (log4cxx :: Level :: getError ()); break;
		case DEBUGLEVEL_WARN  : _logger->setLevel (log4cxx :: Level :: getWarn ()); break;
		case DEBUGLEVEL_INFO  : _logger->setLevel (log4cxx :: Level :: getInfo ()); break;
		case DEBUGLEVEL_DEBUG : _logger->setLevel (log4cxx :: Level :: getDebug ()); break;
		case DEBUGLEVEL_TRACE : _logger->setLevel (log4cxx :: Level :: getTrace ()); break;
		default               : return FAILURE;
	}

	return SUCCESS;
}
コード例 #10
0
ファイル: csv_parser.cpp プロジェクト: alyst/zorba
bool csv_parser::next_value( zstring *value, bool *eol, bool *quoted ) const {
  ztd::string_appender<zstring,128> appender( value );
  char c;
  bool in_quote = false;
  bool is_quoted = false;

  value->clear();

  while ( is_->get( c ) ) {
    if ( in_quote ) {
      if ( quote_esc_ == quote_ ) {     // ""
        if ( c == quote_ ) {
          if ( !peek( *is_, c ) )
            break;
          if ( c != quote_ ) {
            in_quote = false;
            continue;
          }
          is_->get();
        }
      } else {                          // \"
        if ( c == quote_ ) {
          in_quote = false;
          continue;
        }
        if ( c == quote_esc_ && !is_->get( c ) )
          break;
      }
    } else {
      if ( c == quote_ ) {
        in_quote = is_quoted = true;
        continue;
      }
      if ( c == sep_ ) {
        *eol = false;
        goto return_true;
      }
      switch ( c ) {
        case '\r':
          if ( peek( *is_, c ) && c == '\n' )
            is_->get();
          // no break;
        case '\n':
          *eol = true;
          goto return_true;
      } // switch
    } // else
    appender += c;
  } // while

  appender.flush();
  if ( value->empty() )
    return false;

  *eol = true;
return_true:
  if ( quoted )
    *quoted = is_quoted;
  return true;
}
コード例 #11
0
// ------------------------------------------------------------------
void msvc_debugger_listener::report_leak(
	const Dereferee::allocation_info& leak)
{
	fprintf(memory_log, "    <leak address=\"%p\"", leak.address());

	if(leak.is_array())
		fprintf(memory_log, " is-array=\"true\"");

	if(leak.type_name())
	{
		if(leak.is_array())
			fprintf(memory_log, " type=\"%s[%lu]\"", leak.type_name(),
				(unsigned long)leak.array_size());
		else
			fprintf(memory_log, " type=\"%s\"", leak.type_name());
	}

	fprintf(memory_log, " size=\"%lu\">\n",
		(unsigned long)leak.block_size());

	CxxTest::FileAppender appender(memory_log);
	CxxTest::__append_backtrace_xml(leak.backtrace(), true, appender);

	fprintf(memory_log, "    </leak>\n");
}		
コード例 #12
0
ファイル: juce_NamedValueSet.cpp プロジェクト: 2DaT/Obxd
void NamedValueSet::setFromXmlAttributes (const XmlElement& xml)
{
    clear();
    LinkedListPointer<NamedValue>::Appender appender (values);

    const int numAtts = xml.getNumAttributes(); // xxx inefficient - should write an att iterator..

    for (int i = 0; i < numAtts; ++i)
    {
        const String& name  = xml.getAttributeName (i);
        const String& value = xml.getAttributeValue (i);

        if (name.startsWith ("base64:"))
        {
            MemoryBlock mb;

            if (mb.fromBase64Encoding (value))
            {
                appender.append (new NamedValue (name.substring (7), var (mb)));
                continue;
            }
        }

        appender.append (new NamedValue (name, var (value)));
    }
}
コード例 #13
0
ファイル: digitformatter.cpp プロジェクト: icu-project/icu4c
UnicodeString &
DigitFormatter::formatDigits(
        const uint8_t *digits,
        int32_t count,
        const IntDigitCountRange &range,
        int32_t intField,
        FieldPositionHandler &handler,
        UnicodeString &appendTo) const {
    int32_t i = range.pin(count) - 1;
    int32_t begin = appendTo.length();

    // Always emit '0' as placeholder for empty string.
    if (i == -1) {
        appendTo.append(fLocalizedDigits[0]);
        handler.addAttribute(intField, begin, appendTo.length());
        return appendTo;
    }
    {
        UnicodeStringAppender appender(appendTo);
        for (; i >= count; --i) {
            appender.append(fLocalizedDigits[0]);
        }
        for (; i >= 0; --i) {
            appender.append(fLocalizedDigits[digits[i]]);
        }
    }
    handler.addAttribute(intField, begin, appendTo.length());
    return appendTo;
}
コード例 #14
0
 /**
 Configurate specified logger.
 
 @param name Logger name.
 @param logLevel Log level.
 @param logFile Log file name, empty if console.
 @param immediateFlush When it is set true, output stream will be flushed
                       after each appended event.
 @return Has the logger been configurated before?
 */
 static bool ConfigLogger(const tstring& name = TEXT(""), 
                          const tstring& logLevel = TEXT("INFO"), 
                          const tstring& logFile = TEXT(""),
                          bool immediateFlush = LOG_DEFAULT_IMMEDIATE_FLUSH)
 {
  Logger logger = GetLogger(name);
  bool existed = false;
    
  if(name.empty()) // Root.
  {
   if(logger.getAppender(TEXT("default")))
    existed = true;   
  }
  
  if(logger.getAppender(TEXT("config")))
   existed = true;

  if(logger.getAppender(TEXT("default")))
   logger.removeAppender(TEXT("default"));
   
  if(logger.getAppender(TEXT("config")))
   logger.removeAppender(TEXT("config"));

  if(!logFile.empty())
  {    
   log4cplus::SharedAppenderPtr appender(new log4cplus::FileAppender(
    logFile, std::ios::app, immediateFlush));
   appender->setName(TEXT("config"));
   appender->setLayout(std::auto_ptr<log4cplus::Layout>(
    new log4cplus::PatternLayout(LOG_PATTERN)));   
   logger.addAppender(appender);
  }
  else
  {
   log4cplus::SharedAppenderPtr appender(
    new log4cplus::ConsoleAppender(false, immediateFlush));
   appender->setName(TEXT("config"));
   appender->setLayout(std::auto_ptr<log4cplus::Layout>(
    new log4cplus::PatternLayout(LOG_PATTERN)));
   logger.addAppender(appender);
  }

  log4cplus::LogLevelManager& llm = log4cplus::getLogLevelManager();
  logger.setLogLevel(llm.fromString(logLevel));
  
  return existed;
 }
コード例 #15
0
ファイル: MojLogEngine.cpp プロジェクト: ctbrowser/db8
MojErr MojLogEngine::createAppender(const MojObject& conf, const MojChar* name, MojAutoPtr<MojLogAppender>& appenderOut)
{
	MojString type;
	MojErr err = conf.getRequired(TypeKey, type);
	MojErrCheck(err);

	// TODO: use some sort of factory registry to do this
	if (type == _T("file")) {
		MojString path;
		err = conf.getRequired(PathKey, path);
		MojErrCheck(err);
		MojAutoPtr<MojFileAppender> appender(new MojFileAppender());
		MojAllocCheck(appender.get());
		err = appender->open(path.data());
		MojErrCheck(err);
		appenderOut = appender;
	} else if (type == _T("stderr")) {
		MojAutoPtr<MojFileAppender> appender(new MojFileAppender());
		MojAllocCheck(appender.get());
		appender->open(MojStdErrFile);
		appenderOut = appender;
	} else if (type == _T("stdout")) {
		MojAutoPtr<MojFileAppender> appender(new MojFileAppender());
		MojAllocCheck(appender.get());
		appender->open(MojStdOutFile);
		appenderOut = appender;
	}
#ifdef MOJ_USE_SYSLOG
	else if (type == _T("syslog")) {
		MojAutoPtr<MojSyslogAppender> appender(new MojSyslogAppender());
		MojAllocCheck(appender.get());
		appender->open(name);
		appenderOut = appender;
	}
#endif // MOJ_USE_SYSLOG
#ifdef MOJ_USE_PMLOG
	else if (type == _T("pmlog")) {
		MojAutoPtr<MojPmLogAppender> appender(new MojPmLogAppender());
		MojAllocCheck(appender.get());
		appenderOut = appender;
	}
#endif // MOJ_USE_PMLOG
	else {
		MojErrThrowMsg(MojErrLogAppenderNotFound, _T("log: appender not found '%s'"), type.data());
	}
	return MojErrNone;
}
コード例 #16
0
ファイル: getline.c プロジェクト: kevinlawler/kona
I getdelim(S *s,size_t*n, I d, FILE *f)//target, current capacity, delimiter, file
{
  unsigned char *q;
  I w=0;

  flockfile(f);
  //ORIENT(f,-1)  //is this dangerous?

  if (!s) {errno = EINVAL; goto error;}

  if (f->_r <= 0 && __srefill(f))
  {
    /* If f is at EOF already, we just need space for the NUL. */
    if (__sferror(f) || expander(s, 1)) goto error;
    funlockfile(f);
    (*s)[0] = '\0';
    R *n=-1;
  }

  while ((q = memchr(f->_p, d, f->_r)) == NULL)
  {
    if (appender(s, &w, (S) f->_p, f->_r)) goto error;
    if (__srefill(f))
    {
      if (__sferror(f)) goto error;
      goto done;  /* hit EOF */
    }
  }
  q++;  /* snarf the delimiter, too */
  if (appender(s, &w, (S) f->_p, q - f->_p)) goto error;
  f->_r -= q - f->_p;
  f->_p = q;

  done:
    /* Invariant: *s has space for at least w+1 bytes. */
    (*s)[w] = '\0';
    funlockfile(f);
    R *n=w;

  error:
    f->_flags |= __SERR;
    funlockfile(f);
    R *n=-1;
}
コード例 #17
0
void NamedValueSet::setFromXmlAttributes (const XmlElement& xml)
{
    clear();
    LinkedListPointer<NamedValue>::Appender appender (values);

    const int numAtts = xml.getNumAttributes(); // xxx inefficient - should write an att iterator..

    for (int i = 0; i < numAtts; ++i)
        appender.append (new NamedValue (xml.getAttributeName (i), var (xml.getAttributeValue (i))));
}
コード例 #18
0
void
DigitAffix::append(const UChar *value, int32_t charCount, int32_t fieldId) {
    fAffix.append(value, charCount);
    {
        UnicodeStringAppender appender(fAnnotations);
        for (int32_t i = 0; i < charCount; ++i) {
            appender.append((UChar) fieldId);
        }
    }
}
コード例 #19
0
uint32_t JSONProtocolWriterCommon::writeJSONIntInternal(int64_t num) {
  WrappedIOBufQueueAppender appender(out_);
  if (!context.empty() && context.back().type == ContextType::MAP &&
      context.back().meta % 2 == 1) {
    folly::toAppend('"', num, '"', &appender);
  } else {
    folly::toAppend(num, &appender);
  }
  return appender.size();
}
コード例 #20
0
void
DigitAffix::append(const UnicodeString &value, int32_t fieldId) {
    fAffix.append(value);
    {
        UnicodeStringAppender appender(fAnnotations);
        int32_t len = value.length();
        for (int32_t i = 0; i < len; ++i) {
            appender.append((UChar) fieldId);
        }
    }
}
コード例 #21
0
ファイル: FileOperations.cpp プロジェクト: ZenBowman/roop
RoopList WriteParams::execute(RoopMachine &machine, RoopList arguments) {
    std::string filename = arguments[0].resultString;

    std::ofstream appender(filename.c_str(), std::ios::out | std::ios::app);
    for (int i=1; i<arguments.size(); i++) {
        appender << arguments[i].resultString << " ";
    }
    appender << std::endl;
    appender.close();
    return arguments;
}
コード例 #22
0
ファイル: Dump.cpp プロジェクト: 1Hgm/folly
std::unique_ptr<folly::IOBuf> toBserIOBuf(folly::dynamic const& dyn,
                                          const serialization_opts& opts) {
  IOBufQueue q(IOBufQueue::cacheChainLength());
  uint8_t hdrbuf[sizeof(kMagic) + 1 + sizeof(int64_t)];

  // Reserve some headroom for the overall PDU size; we'll fill this in
  // after we've serialized the data and know the length
  auto firstbuf = IOBuf::create(opts.growth_increment);
  firstbuf->advance(sizeof(hdrbuf));
  q.append(std::move(firstbuf));

  // encode the value
  QueueAppender appender(&q, opts.growth_increment);
  bserEncode(dyn, appender, opts);

  // compute the length
  auto len = q.chainLength();
  if (len > std::numeric_limits<int64_t>::max()) {
    throw std::range_error(folly::to<std::string>(
        "serialized data size ", len, " is too large to represent as BSER"));
  }

  // This is a bit verbose, but it computes a header that is appropriate
  // to the size of the serialized data

  memcpy(hdrbuf, kMagic, sizeof(kMagic));
  size_t hdrlen = sizeof(kMagic) + 1;
  auto magicptr = hdrbuf + sizeof(kMagic);
  auto lenptr = hdrbuf + hdrlen;

  if (len > std::numeric_limits<int32_t>::max()) {
    *magicptr = (int8_t)BserType::Int64;
    *(int64_t*)lenptr = (int64_t)len;
    hdrlen += sizeof(int64_t);
  } else if (len > std::numeric_limits<int16_t>::max()) {
    *magicptr = (int8_t)BserType::Int32;
    *(int32_t*)lenptr = (int32_t)len;
    hdrlen += sizeof(int32_t);
  } else if (len > std::numeric_limits<int8_t>::max()) {
    *magicptr = (int8_t)BserType::Int16;
    *(int16_t*)lenptr = (int16_t)len;
    hdrlen += sizeof(int16_t);
  } else {
    *magicptr = (int8_t)BserType::Int8;
    *(int8_t*)lenptr = (int8_t)len;
    hdrlen += sizeof(int8_t);
  }

  // and place the data in the headroom
  q.prepend(hdrbuf, hdrlen);

  return q.move();
}
コード例 #23
0
ファイル: Channel.cpp プロジェクト: Lyill/TrinityCore
void Channel::UnBan(Player const* player, std::string const& badname)
{
    ObjectGuid const& good = player->GetGUID();

    if (!IsOn(good))
    {
        NotMemberAppend appender;
        ChannelNameBuilder<NotMemberAppend> builder(this, appender);
        SendToOne(builder, good);
        return;
    }

    PlayerInfo& info = _playersStore.at(good);
    if (!info.IsModerator() && !player->GetSession()->HasPermission(rbac::RBAC_PERM_CHANGE_CHANNEL_NOT_MODERATOR))
    {
        NotModeratorAppend appender;
        ChannelNameBuilder<NotModeratorAppend> builder(this, appender);
        SendToOne(builder, good);
        return;
    }

    Player* bad = ObjectAccessor::FindConnectedPlayerByName(badname);
    ObjectGuid victim = bad ? bad->GetGUID() : ObjectGuid::Empty;

    if (victim.IsEmpty() || !IsBanned(victim))
    {
        PlayerNotFoundAppend appender(badname);
        ChannelNameBuilder<PlayerNotFoundAppend> builder(this, appender);
        SendToOne(builder, good);
        return;
    }

    _bannedStore.erase(victim);

    PlayerUnbannedAppend appender(good, victim);
    ChannelNameBuilder<PlayerUnbannedAppend> builder(this, appender);
    SendToAll(builder);

    UpdateChannelInDB();
}
コード例 #24
0
ファイル: Channel.cpp プロジェクト: Lyill/TrinityCore
void Channel::Announce(Player const* player)
{
    ObjectGuid const& guid = player->GetGUID();

    if (!IsOn(guid))
    {
        NotMemberAppend appender;
        ChannelNameBuilder<NotMemberAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    PlayerInfo const& playerInfo = _playersStore.at(guid);
    if (!playerInfo.IsModerator() && !player->GetSession()->HasPermission(rbac::RBAC_PERM_CHANGE_CHANNEL_NOT_MODERATOR))
    {
        NotModeratorAppend appender;
        ChannelNameBuilder<NotModeratorAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    _announceEnabled = !_announceEnabled;

    WorldPackets::Channel::ChannelNotify notify;
    if (_announceEnabled)
    {
        AnnouncementsOnAppend appender(guid);
        ChannelNameBuilder<AnnouncementsOnAppend> builder(this, appender);
        SendToAll(builder);
    }
    else
    {
        AnnouncementsOffAppend appender(guid);
        ChannelNameBuilder<AnnouncementsOffAppend> builder(this, appender);
        SendToAll(builder);
    }

    UpdateChannelInDB();
}
コード例 #25
0
ファイル: Channel.cpp プロジェクト: Lyill/TrinityCore
void Channel::SetMode(Player const* player, std::string const& p2n, bool mod, bool set)
{
    ObjectGuid const& guid = player->GetGUID();

    if (!IsOn(guid))
    {
        NotMemberAppend appender;
        ChannelNameBuilder<NotMemberAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    PlayerInfo& info = _playersStore.at(guid);
    if (!info.IsModerator() && !player->GetSession()->HasPermission(rbac::RBAC_PERM_CHANGE_CHANNEL_NOT_MODERATOR))
    {
        NotModeratorAppend appender;
        ChannelNameBuilder<NotModeratorAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    if (guid == _ownerGuid && p2n == player->GetName() && mod)
        return;

    Player* newp = ObjectAccessor::FindConnectedPlayerByName(p2n);
    ObjectGuid victim = newp ? newp->GetGUID() : ObjectGuid::Empty;

    if (victim.IsEmpty() || !IsOn(victim) ||
        (player->GetTeam() != newp->GetTeam() &&
        (!player->GetSession()->HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHANNEL) ||
        !newp->GetSession()->HasPermission(rbac::RBAC_PERM_TWO_SIDE_INTERACTION_CHANNEL))))
    {
        PlayerNotFoundAppend appender(p2n);
        ChannelNameBuilder<PlayerNotFoundAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    if (_ownerGuid == victim && _ownerGuid != guid)
    {
        NotOwnerAppend appender;
        ChannelNameBuilder<NotOwnerAppend> builder(this, appender);
        SendToOne(builder, guid);
        return;
    }

    if (mod)
        SetModerator(newp->GetGUID(), set);
    else
        SetMute(newp->GetGUID(), set);
}
コード例 #26
0
ファイル: SiteGroupsTree.cpp プロジェクト: death/webwatch
void CSiteGroupsTree::OnSiteGroupImportChildGroup()
{
    ASSERT(m_actionGroup);

    CWnd *parent = GetParent();
    ASSERT(parent);

    CFileDialog dlg(TRUE, DefaultExtension, 0, OFN_NOCHANGEDIR | OFN_FILEMUSTEXIST, DefaultFilter, parent);
    char currentDir[_MAX_PATH];
    dlg.m_ofn.lpstrInitialDir = _getcwd(currentDir, _MAX_PATH);
    if (dlg.DoModal() != IDOK)
        return;

    CString filename = dlg.GetPathName();

    try {
        WebWatch::SiteItemGroup & importedGroup = WebWatch::Store::Instance().ImportGroup(*m_actionGroup, filename);
        GroupAppender appender(*this, GetItemFromGroup(*m_actionGroup));
        appender(&importedGroup);
    }
    catch(const WebWatch::StoreError & ex) {
        parent->MessageBox(ex.what(), "Failure", MB_OK | MB_ICONERROR);
        return;
    }

    UpdateTree();
    
    WebWatch::SiteItemGroup & selectedGroup = GetGroupFromItem(GetSelectedItem());
    RefreshSiteList(selectedGroup);

    std::string message("Group(s) in file '");
    message += dlg.GetFileName();
    message += "' imported successfully under group '";
    message += m_actionGroup->GetName();
    message += '\'';
    parent->MessageBox(message.c_str(), "Success", MB_OK | MB_ICONINFORMATION);
}
コード例 #27
0
ファイル: Channel.cpp プロジェクト: Lyill/TrinityCore
void Channel::SendWhoOwner(Player const* player)
{
    ObjectGuid const& guid = player->GetGUID();
    if (IsOn(guid))
    {
        ChannelOwnerAppend appender(this, _ownerGuid);
        ChannelNameBuilder<ChannelOwnerAppend> builder(this, appender);
        SendToOne(builder, guid);
    }
    else
    {
        NotMemberAppend appender;
        ChannelNameBuilder<NotMemberAppend> builder(this, appender);
        SendToOne(builder, guid);
    }
}
コード例 #28
0
ファイル: _cxxInternal.cpp プロジェクト: woodem/woo
	/* Initialize log4dcxx automatically when the library is loaded. */
	WOO__ATTRIBUTE__CONSTRUCTOR void initLog4cxx() {
		#ifdef LOG4CXX_TRACE
			log4cxx::LevelPtr debugLevel=log4cxx::Level::getDebug(), infoLevel=log4cxx::Level::getInfo(), warnLevel=log4cxx::Level::getWarn();
			// LOG4CXX_STR: http://old.nabble.com/Link-error-when-using-Layout-on-MS-Windows-td20906802.html
			log4cxx::LayoutPtr layout(new log4cxx::PatternLayout(LOG4CXX_STR("%-5r %-5p %-10c %m%n")));
			log4cxx::AppenderPtr appender(new log4cxx::ConsoleAppender(layout));
			log4cxx::LoggerPtr localLogger=log4cxx::Logger::getLogger("woo");
			localLogger->addAppender(appender);
		#else // log4cxx 0.9
			log4cxx::LevelPtr debugLevel=log4cxx::Level::DEBUG, infoLevel=log4cxx::Level::INFO, warnLevel=log4cxx::Level::WARN;
			log4cxx::BasicConfigurator::configure();
			log4cxx::LoggerPtr localLogger=log4cxx::Logger::getLogger("woo");
		#endif
		localLogger->setLevel(getenv("WOO_DEBUG")?debugLevel:warnLevel);
		LOG4CXX_DEBUG(localLogger,"Log4cxx initialized.");
	}
コード例 #29
0
ファイル: Channel.cpp プロジェクト: Lyill/TrinityCore
void Channel::SetMute(ObjectGuid const& guid, bool set)
{
    if (!IsOn(guid))
        return;

    PlayerInfo& playerInfo = _playersStore.at(guid);
    if (playerInfo.IsMuted() != set)
    {
        uint8 oldFlag = playerInfo.GetFlags();
        playerInfo.SetMuted(set);

        ModeChangeAppend appender(guid, oldFlag, playerInfo.GetFlags());
        ChannelNameBuilder<ModeChangeAppend> builder(this, appender);
        SendToAll(builder);
    }
}
コード例 #30
0
UnicodeString &
AffixPattern::toString(UnicodeString &appendTo) const {
    AffixPatternIterator iter;
    iterator(iter);
    UnicodeStringAppender appender(appendTo);
    UnicodeString literal;
    while (iter.nextToken()) {
        switch (iter.getTokenType()) {
        case kLiteral:
            escapeApostropheInLiteral(iter.getLiteral(literal), appender);
            break;
        case kPercent:
            appender.append((UChar) 0x27);
            appender.append((UChar) 0x25);
            break;
        case kPerMill:
            appender.append((UChar) 0x27);
            appender.append((UChar) 0x2030);
            break;
        case kCurrency:
            {
                appender.append((UChar) 0x27);
                int32_t cl = iter.getTokenLength();
                for (int32_t i = 0; i < cl; ++i) {
                    appender.append((UChar) 0xA4);
                }
            }
            break;
        case kNegative:
            appender.append((UChar) 0x27);
            appender.append((UChar) 0x2D);
            break;
        case kPositive:
            appender.append((UChar) 0x27);
            appender.append((UChar) 0x2B);
            break;
        default:
            U_ASSERT(FALSE);
            break;
        }
    }
    return appendTo;
}