void log_to_file(const IQuotesProvider* pProvider, MCONTACT hContact, const tstring& rsLogFileName, const tstring& rsFormat) { std::string sPath = quotes_t2a(rsLogFileName.c_str()); std::string::size_type n = sPath.find_last_of("\\/"); if (std::string::npos != n) sPath.erase(n); DWORD dwAttributes = ::GetFileAttributesA(sPath.c_str()); if ((0xffffffff == dwAttributes) || (0 == (dwAttributes&FILE_ATTRIBUTE_DIRECTORY))) CreateDirectoryTree(sPath.c_str()); tofstream file(rsLogFileName.c_str(), std::ios::app | std::ios::out); file.imbue(GetSystemLocale()); if (file.good()) { tstring s = format_rate(pProvider, hContact, rsFormat); file << s; } }
static char * format_assocrate(struct iwinfo_rate_entry *r) { static char buf[40]; char *p = buf; int l = sizeof(buf); if (r->rate <= 0) { snprintf(buf, sizeof(buf), "unknown"); } else { p += snprintf(p, l, "%s", format_rate(r->rate)); l = sizeof(buf) - (p - buf); if (r->mcs >= 0) { p += snprintf(p, l, ", MCS %d, %dMHz", r->mcs, 20 + r->is_40mhz*20); l = sizeof(buf) - (p - buf); if (r->is_short_gi) p += snprintf(p, l, ", short GI"); } } return buf; }
static char * format_assocrate(struct iwinfo_rate_entry *r) { static char buf[80]; char *p = buf; int l = sizeof(buf); if (r->rate <= 0) { snprintf(buf, sizeof(buf), "unknown"); } else { p += snprintf(p, l, "%s", format_rate(r->rate)); l = sizeof(buf) - (p - buf); if (r->is_ht) { p += snprintf(p, l, ", MCS %d, %dMHz", r->mcs, r->mhz); l = sizeof(buf) - (p - buf); } else if (r->is_vht) { p += snprintf(p, l, ", VHT-MCS %d, %dMHz", r->mcs, r->mhz); l = sizeof(buf) - (p - buf); if (r->nss) { p += snprintf(p, l, ", VHT-NSS %d", r->nss); l = sizeof(buf) - (p - buf); } } } return buf; }
static char * print_rate(const struct iwinfo_ops *iw, const char *ifname) { int rate; if (iw->bitrate(ifname, &rate)) rate = -1; return format_rate(rate); }
static char * format_bps(struct iwinfo_rate_entry *r,struct iwinfo_rate_entry *t) { static char buf[64]; char *p = buf; int l = sizeof (buf); if (r->rate > 0) { p += snprintf(p, l, "%s", format_rate(r->rate)); l = sizeof (buf) - (p - buf); } else { p += snprintf(p, l, "%s", "NA"); l = sizeof (buf) - (p - buf); } p += snprintf(p, l, "%s", "/"); l = sizeof (buf) - (p - buf); if (t->rate > 0) { p += snprintf(p, l, "%s", format_rate(t->rate)); l = sizeof (buf) - (p - buf); } else { p += snprintf(p, l, "%s", "NA"); l = sizeof (buf) - (p - buf); } return buf; }
void gfx_draw_display_record() { char valueBuffer[20]; // Records gfx_draw_string("Records: ", &FONT_XSMALL, 0, 0, GFX_ALIGN_LEFT); itoa(recorder_count(), valueBuffer, 10); gfx_draw_string(valueBuffer, &FONT_XSMALL, 5, 12, GFX_ALIGN_LEFT); // Rate gfx_draw_string("Rate: ", &FONT_XSMALL, 0, 24, GFX_ALIGN_LEFT); format_rate(recorder_is_recording() ? recorder_rate() : SET_RATES[CLAMP(setRateIndex, 0, MAX_SET_RATE_INDEX)], valueBuffer); gfx_draw_string(valueBuffer, &FONT_XSMALL, 5, 36, GFX_ALIGN_LEFT); gfx_draw_menu(recorder_is_recording() ? "STOP" : "START", NULL, NULL, "EXIT"); }
void log_to_history(const IQuotesProvider* pProvider, MCONTACT hContact, time_t nTime, const tstring& rsFormat) { tstring s = format_rate(pProvider, hContact, rsFormat); T2Utf psz(s.c_str()); DBEVENTINFO dbei = { sizeof(dbei) }; dbei.szModule = QUOTES_PROTOCOL_NAME; dbei.timestamp = static_cast<DWORD>(nTime); dbei.flags = DBEF_READ | DBEF_UTF; dbei.eventType = EVENTTYPE_MESSAGE; dbei.cbBlob = (int)::mir_strlen(psz) + 1; dbei.pBlob = (PBYTE)(char*)psz; db_event_add(hContact, &dbei); }
void refresh_progress_meter(void) { char buf[MAX_WINSIZE + 1]; time_t now; off_t transferred; double elapsed; int percent; off_t bytes_left; int cur_speed; int hours, minutes, seconds; int i, len; int file_len; off_t delta_pos; transferred = *counter - cur_pos; cur_pos = *counter; now = time(NULL); bytes_left = end_pos - cur_pos; delta_pos = cur_pos - last_pos; if (delta_pos > max_delta_pos) max_delta_pos = delta_pos; if (bytes_left > 0) elapsed = now - last_update; else { elapsed = now - start; /* Calculate true total speed when done */ transferred = end_pos; bytes_per_second = 0; } /* calculate speed */ if (elapsed != 0) cur_speed = (transferred / elapsed); else cur_speed = transferred; #define AGE_FACTOR 0.9 if (bytes_per_second != 0) { bytes_per_second = (bytes_per_second * AGE_FACTOR) + (cur_speed * (1.0 - AGE_FACTOR)); } else bytes_per_second = cur_speed; /* filename */ buf[0] = '\0'; file_len = win_size - 45; if (file_len > 0) { len = snprintf(buf, file_len + 1, "\r%s", file); if (len < 0) len = 0; if (len >= file_len + 1) len = file_len; for (i = len; i < file_len; i++) buf[i] = ' '; buf[file_len] = '\0'; } /* percent of transfer done */ if (end_pos != 0) percent = ((float)cur_pos / end_pos) * 100; else percent = 100; snprintf(buf + strlen(buf), win_size - strlen(buf-8), " %3d%% ", percent); /* amount transferred */ format_size(buf + strlen(buf), win_size - strlen(buf), cur_pos); strlcat(buf, " ", win_size); /* bandwidth usage */ format_rate(buf + strlen(buf), win_size - strlen(buf), (off_t)bytes_per_second); strlcat(buf, "/s ", win_size); /* instantaneous rate */ format_rate(buf + strlen(buf), win_size - strlen(buf), delta_pos); strlcat(buf, "/s ", win_size); /* ETA */ if (!transferred) stalled += elapsed; else stalled = 0; if (stalled >= STALL_TIME) strlcat(buf, "- stalled -", win_size); else if (bytes_per_second == 0 && bytes_left) strlcat(buf, " --:-- ETA", win_size); else { if (bytes_left > 0) seconds = bytes_left / bytes_per_second; else seconds = elapsed; hours = seconds / 3600; seconds -= hours * 3600; minutes = seconds / 60; seconds -= minutes * 60; if (hours != 0) snprintf(buf + strlen(buf), win_size - strlen(buf), "%d:%02d:%02d", hours, minutes, seconds); else snprintf(buf + strlen(buf), win_size - strlen(buf), " %02d:%02d", minutes, seconds); if (bytes_left > 0) strlcat(buf, " ETA", win_size); else strlcat(buf, " ", win_size); } write(STDOUT_FILENO, buf, win_size - 1); last_update = now; last_pos = cur_pos; }
void CQuotesProviderBase::WriteContactRate(MCONTACT hContact, double dRate, const tstring& rsSymbol/* = ""*/) { time_t nTime = ::time(NULL); if (false == rsSymbol.empty()) db_set_ts(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_SYMBOL, rsSymbol.c_str()); double dPrev = 0.0; bool bValidPrev = Quotes_DBReadDouble(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_CURR_VALUE, dPrev); if (true == bValidPrev) Quotes_DBWriteDouble(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_PREV_VALUE, dPrev); Quotes_DBWriteDouble(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_CURR_VALUE, dRate); db_set_dw(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_FETCH_TIME, nTime); tstring sSymbol = rsSymbol; tostringstream oNick; oNick.imbue(GetSystemLocale()); if (false == m_sContactListFormat.empty()) { tstring s = format_rate(this, hContact, m_sContactListFormat); oNick << s; } else { if (true == sSymbol.empty()) sSymbol = Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_SYMBOL); oNick << std::setfill(_T(' ')) << std::setw(10) << std::left << sSymbol << std::setw(6) << std::right << dRate; } CTendency tendency; if (true == tendency.Parse(this, m_sTendencyFormat, hContact)) do_set_contact_extra_icon(hContact, tendency); db_set_ts(hContact, LIST_MODULE_NAME, CONTACT_LIST_NAME, oNick.str().c_str()); tstring sStatusMsg = format_rate(this, hContact, m_sStatusMsgFormat); if (false == sStatusMsg.empty()) db_set_ts(hContact, LIST_MODULE_NAME, STATUS_MSG_NAME, sStatusMsg.c_str()); else db_unset(hContact, LIST_MODULE_NAME, STATUS_MSG_NAME); bool bUseContactSpecific = (db_get_b(hContact, QUOTES_PROTOCOL_NAME, DB_STR_CONTACT_SPEC_SETTINGS, 0) > 0); CAdvProviderSettings global_settings(this); WORD dwMode = (bUseContactSpecific) ? db_get_w(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_LOG, static_cast<WORD>(lmDisabled)) : global_settings.GetLogMode(); if (dwMode&lmExternalFile) { bool bAdd = true; bool bOnlyIfChanged = (bUseContactSpecific) ? (db_get_w(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_LOG_FILE_CONDITION, 1) > 0) : global_settings.GetLogOnlyChangedFlag(); if (true == bOnlyIfChanged) { bAdd = ((false == bValidPrev) || (false == IsWithinAccuracy(dRate, dPrev))); } if (true == bAdd) { tstring sLogFileName = (bUseContactSpecific) ? Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_LOG_FILE, global_settings.GetLogFileName().c_str()) : global_settings.GetLogFileName(); if (true == sSymbol.empty()) { sSymbol = Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_SYMBOL); } sLogFileName = GenerateLogFileName(sLogFileName, sSymbol); tstring sFormat = global_settings.GetLogFormat(); if (bUseContactSpecific) { CQuotesProviderVisitorDbSettings visitor; Accept(visitor); sFormat = Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_FORMAT_LOG_FILE, visitor.m_pszDefLogFileFormat); } log_to_file(this, hContact, sLogFileName, sFormat); } } if (dwMode&lmInternalHistory) { bool bAdd = true; bool bOnlyIfChanged = (bUseContactSpecific) ? (db_get_w(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_HISTORY_CONDITION, 1) > 0) : global_settings.GetHistoryOnlyChangedFlag(); if (true == bOnlyIfChanged) { bAdd = ((false == bValidPrev) || (false == IsWithinAccuracy(dRate, dPrev))); } if (true == bAdd) { tstring sFormat = (bUseContactSpecific) ? Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_FORMAT_HISTORY, global_settings.GetHistoryFormat().c_str()) : global_settings.GetHistoryFormat(); log_to_history(this, hContact, nTime, sFormat); } } if (dwMode&lmPopup) { bool bOnlyIfChanged = (bUseContactSpecific) ? (1 == db_get_b(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_POPUP_CONDITION, 1) > 0) : global_settings.GetShowPopupIfValueChangedFlag(); if ((false == bOnlyIfChanged) || ((true == bOnlyIfChanged) && (true == bValidPrev) && (false == IsWithinAccuracy(dRate, dPrev)))) { tstring sFormat = (bUseContactSpecific) ? Quotes_DBGetStringT(hContact, QUOTES_PROTOCOL_NAME, DB_STR_QUOTE_FORMAT_POPUP, global_settings.GetPopupFormat().c_str()) : global_settings.GetPopupFormat(); CPopupSettings ps = *(global_settings.GetPopupSettingsPtr()); ps.InitForContact(hContact); show_popup(this, hContact, tendency, sFormat, ps); } } SetContactStatus(hContact, ID_STATUS_ONLINE); }
bool show_popup(const IQuotesProvider* pProvider, MCONTACT hContact, const CTendency& tendency, const tstring& rsFormat, const CPopupSettings& ps) { if (!ServiceExists(MS_POPUP_ADDPOPUPT)) return false; POPUPDATAT ppd; memset(&ppd, 0, sizeof(ppd)); ppd.lchContact = hContact; if (tendency.IsValid()) { CTendency::EResult nComparison = tendency.Compare(); if (CTendency::NotChanged == nComparison) ppd.lchIcon = Quotes_LoadIconEx(IDI_ICON_NOTCHANGED); else if (CTendency::Up == nComparison) ppd.lchIcon = Quotes_LoadIconEx(IDI_ICON_UP); else if (CTendency::Down == nComparison) ppd.lchIcon = Quotes_LoadIconEx(IDI_ICON_DOWN); } CQuotesProviderVisitorFormater visitor(hContact, _T('s'), 0); pProvider->Accept(visitor); const tstring& sTitle = visitor.GetResult(); mir_tstrncpy(ppd.lptzContactName, sTitle.c_str(), MAX_CONTACTNAME); { ptrT ss(variables_parsedup((TCHAR*)rsFormat.c_str(), 0, hContact)); tstring sText = format_rate(pProvider, hContact, tstring(ss)); mir_tstrncpy(ppd.lptzText, sText.c_str(), MAX_SECONDLINE); } if (CPopupSettings::colourDefault == ps.GetColourMode()) { ppd.colorText = CPopupSettings::GetDefColourText(); ppd.colorBack = CPopupSettings::GetDefColourBk(); } else { ppd.colorText = ps.GetColourText(); ppd.colorBack = ps.GetColourBk(); } switch (ps.GetDelayMode()) { default: assert(!"Unknown popup delay mode"); case CPopupSettings::delayFromPopup: ppd.iSeconds = 0; break; case CPopupSettings::delayPermanent: ppd.iSeconds = -1; break; case CPopupSettings::delayCustom: ppd.iSeconds = ps.GetDelayTimeout(); break; } LPARAM lp = 0; if (false == ps.GetHistoryFlag()) lp |= 0x08; return (0 == CallService(MS_POPUP_ADDPOPUPT, reinterpret_cast<WPARAM>(&ppd), lp)); }
static void print_one_if(FILE *fp, struct ifstat_ent *n) { int i; if(!conf.show_errors) { if(conf.noformat) fprintf(fp, "%s ", n->name); else fprintf(fp, "%-10s ", n->name); nformat_bits(fp, n->rate[2]); nformat_rate(fp, n->rate[0]); nformat_bits(fp, n->rate[3]); nformat_rate(fp, n->rate[1]); fprintf(fp, "%s", "\n"); return; } fprintf(fp, "%-15s ", n->name); for (i=0; i<4; i++) format_rate(fp, n, i); fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, n, 4); /* rx_err */ format_rate(fp, n, 6); /* rx_dropped */ format_rate(fp, n, 11);/* rx_over_err */ format_rate(fp, n, 10); /* rx_len_err */ fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, n, 12); /* rx_crc_err */ format_rate(fp, n, 13); /* rx_frame_err */ format_rate(fp, n, 14); /* rx_fifo_err */ format_rate(fp, n, 15); /* rx_missed_err */ fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, n, 5); /* tx_err */ format_rate(fp, n, 7); /* tx_dropped */ format_rate(fp, n, 9); /* collisons */ format_rate(fp, n, 17); fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, n, 16); format_rate(fp, n, 18); format_rate(fp, n, 19); format_rate(fp, n, 20); fprintf(fp, "\n"); }
void print_one_if(FILE *fp, struct ifstat_ent *n) { int i; if(!show_errors) { fprintf(fp, "%-10s ", n->name); nformat_bits(fp, n->rate[2]); nformat_rate(fp, n->rate[0]); nformat_bits(fp, n->rate[3]); nformat_rate(fp, n->rate[1]); fprintf(fp, "%s", "\n"); return; } fprintf(fp, "%-15s ", n->name); for (i=0; i<4; i++) format_rate(fp, n, i); fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, n, 4); format_rate(fp, n, 6); format_rate(fp, n, 11); format_rate(fp, n, 10); fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, n, 12); format_rate(fp, n, 13); format_rate(fp, n, 14); format_rate(fp, n, 15); fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, n, 5); format_rate(fp, n, 7); format_rate(fp, n, 9); format_rate(fp, n, 17); fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, n, 16); format_rate(fp, n, 18); format_rate(fp, n, 19); format_rate(fp, n, 20); fprintf(fp, "\n"); }
static void print_one_if(FILE *fp, const struct ifstat_ent *n, const unsigned long long *vals) { int i; fprintf(fp, "%-15s ", n->name); for (i = 0; i < 4; i++) format_rate(fp, vals, n->rate, i); fprintf(fp, "\n"); if (!show_errors) { fprintf(fp, "%-15s ", ""); format_pair(fp, vals, 4, 6); format_pair(fp, vals, 5, 7); format_rate(fp, vals, n->rate, 11); format_rate(fp, vals, n->rate, 9); fprintf(fp, "\n"); } else { fprintf(fp, "%-15s ", ""); format_rate(fp, vals, n->rate, 4); format_rate(fp, vals, n->rate, 6); format_rate(fp, vals, n->rate, 11); format_rate(fp, vals, n->rate, 10); fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, vals, n->rate, 12); format_rate(fp, vals, n->rate, 13); format_rate(fp, vals, n->rate, 14); format_rate(fp, vals, n->rate, 15); fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, vals, n->rate, 5); format_rate(fp, vals, n->rate, 7); format_rate(fp, vals, n->rate, 9); format_rate(fp, vals, n->rate, 17); fprintf(fp, "\n"); fprintf(fp, "%-15s ", ""); format_rate(fp, vals, n->rate, 16); format_rate(fp, vals, n->rate, 18); format_rate(fp, vals, n->rate, 19); format_rate(fp, vals, n->rate, 20); fprintf(fp, "\n"); } }