void UTIL_LogToFile(char* szFileName, const char *fmt, ...) { va_list argptr; va_start ( argptr, fmt ); vsnprintf ( g_szLogString, sizeof(g_szLogString), fmt, argptr ); va_end ( argptr ); char* szFilePath = new char[strlen(GlobalVariables::g_szDLLDirPath) + 12 + 30 + 1]; char* szLogFile = get_timestring("_%Y%m%d.log"); sprintf(szFilePath, "%slogs/%s%s", (GlobalVariables::g_szDLLDirPath), szFileName, szLogFile); FILE* hFile = fopen(szFilePath, "a+"); delete[] szFilePath; delete[] szLogFile; if(hFile == NULL) { char szError[256]; sprintf(szError, "Error fopen: %s\n", strerror(errno)); SERVER_PRINT(szError); clearerr(hFile); return; } fprintf(hFile, g_szLogString); if(ferror(hFile)) { char szError[256]; sprintf(szError, "Error fprintf: %s\n", strerror(errno)); SERVER_PRINT(szError); clearerr(hFile); return; } fclose(hFile); }
char* UTIL_GetLog(const char *fmt, ...) { va_list argptr; static char temp[1024]; va_start ( argptr, fmt ); vsnprintf ( temp, sizeof(temp), fmt, argptr ); va_end ( argptr ); char* szDateTime = get_timestring("%d\\%m\\%Y %X"); sprintf(g_szLogString,"[Metamod Ultimate Unprecacher] [%s] : %s\n",szDateTime,temp); delete[] szDateTime; return str_copy(g_szLogString); }
/** * Seen **/ char *do_seen(User * u, char *target) { char *split1 = NULL; char *seenhost = NULL; char *seennick = NULL; char *seenuname = NULL; struct tm tm; char buf[255]; int i; MYSQL_RES *mysql_res; char *sqltarget; char usrchans[1024] = "\0"; time_t tsnow = time(NULL); MYSQL_RES *mysql_res2; MYSQL_ROW mysql_row2; char cmodep[32] = "\0"; char cmodes[32] = "\0"; char cmodeA[32] = "\0"; char cmodeO[32] = "\0"; char umodep[32] = "\0"; char umodeQ[32] = "\0"; char umodeI[32] = "\0"; double ctsdiff; time_t time0 = time(NULL); time_t time1 = time(NULL); time_t tt = time(NULL); char *message; char *uname = NULL; message = malloc(1024); sqltarget = rdb_escape(rdb_escape(target)); for (i = 0; sqltarget[i]; i++) if (sqltarget[i] == '*') sqltarget[i] = '%'; seenhost = myStrGetToken(sqltarget, '@', 1); split1 = myStrGetToken(sqltarget, '@', 0); seennick = myStrGetToken(split1, '!', 0); seenuname = myStrGetToken(split1, '!', 1); if (seenhost == NULL) seenhost = (char *) "%"; if (seennick == NULL) seennick = (char *) "%"; if (seenuname == NULL) seenuname = (char *) "%"; free(sqltarget); if (!strcmp(seennick, "%")) { uname = sstrdup("%"); } else { rdb_query(QUERY_LOW, "SELECT uname FROM %s WHERE nick LIKE \'%s\' ", AliasesTable, seennick); mysql_res = mysql_store_result(mysql); if (mysql_res && mysql_num_rows(mysql_res)) { mysql_row = mysql_fetch_row(mysql_res); uname = rdb_escape(mysql_row[0]); } } if (uname) { rdb_query(QUERY_LOW, "SELECT %s.nickid, %s.nick, %s.hostname, %s.hiddenhostname, %s.username, UNIX_TIMESTAMP(%s.connecttime), %s.away, %s.awaymsg, %s.online, UNIX_TIMESTAMP(%s.lastquit), %s.lastquitmsg FROM %s,%s,%s WHERE %s.uname LIKE \"%s\" AND %s.nick = %s.nick AND %s.username LIKE \"%s\" AND (%s.hostname LIKE \"%s\" OR %s.hiddenhostname LIKE \"%s\") AND %s.server = %s.server AND %s.uline = \"0\" ORDER BY online,lastquit DESC, %s.connecttime ASC LIMIT 1;", UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, ServerTable, AliasesTable, AliasesTable, uname, UserTable, AliasesTable, UserTable, seenuname, UserTable, seenhost, UserTable, seenhost, UserTable, ServerTable, ServerTable, UserTable); mysql_res = mysql_store_result(mysql); } else { rdb_query(QUERY_LOW, "SELECT %s.nickid, %s.nick, %s.hostname, %s.hiddenhostname, %s.username, UNIX_TIMESTAMP(%s.connecttime), %s.away, %s.awaymsg, %s.online, UNIX_TIMESTAMP(%s.lastquit), %s.lastquitmsg FROM %s,%s WHERE %s.nick LIKE \"%s\" AND %s.username LIKE \"%s\" AND (%s.hostname LIKE \"%s\" OR %s.hiddenhostname LIKE \"%s\") AND %s.server = %s.server AND %s.uline = \"0\" ORDER BY online,lastquit DESC, %s.connecttime ASC LIMIT 1;", UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, UserTable, ServerTable, UserTable, seennick, UserTable, seenuname, UserTable, seenhost, UserTable, seenhost, UserTable, ServerTable, ServerTable, UserTable); mysql_res = mysql_store_result(mysql); } if (mysql_num_rows(mysql_res) > 0) { SET_SEGV_LOCATION(); while ((mysql_row = mysql_fetch_row(mysql_res)) != NULL) { double tsdiff; if (mysql_row[5] != NULL) { time0 = atoi(mysql_row[5]); /* connect time */ } if (mysql_row[9] != NULL) { time1 = atoi(mysql_row[9]); /* quit time */ } if (strlen(mysql_row[3]) <= 1) mysql_row[3] = mysql_row[2]; /* no vhost, so using real host */ if (stricmp(mysql_row[8], "Y") == 0) { if (mysql_row[5] != NULL) { tt = atoi(mysql_row[5]); tm = *localtime(&tt); strftime(buf, sizeof(buf), "%d.%m %H:%M", &tm); mysql_row[5] = buf; } /* Display channels the user is in */ /* check for ircd compatibility: chanmodes +AOsp and usermode +p */ if (denora_cmode(CMODE_p) == 1) sprintf(cmodep, "AND %s.mode_lp = 'N' ", ChanTable); if (denora_cmode(CMODE_s) == 1) sprintf(cmodes, "AND %s.mode_ls = 'N' ", ChanTable); if (denora_cmode(CMODE_A) == 1) sprintf(cmodeA, "AND %s.mode_ua = 'N' ", ChanTable); if (denora_cmode(CMODE_O) == 1) sprintf(cmodeO, "AND %s.mode_uo = 'N' ", ChanTable); if (denora_umode(UMODE_p) == 1) sprintf(umodep, "AND %s.mode_lp = 'N' ", UserTable); if (denora_get_ircd() == IRC_INSPIRCD11 || denora_get_ircd() == IRC_INSPIRCD12) { if (denora_umode(UMODE_Q) == 1) sprintf(umodeQ, "AND %s.mode_uq = 'N' ", UserTable); if (denora_umode(UMODE_I) == 1) sprintf(umodeI, "AND %s.mode_ui = 'N' ", UserTable); } rdb_query(QUERY_LOW, "SELECT %s.channel FROM %s,%s,%s WHERE %s.nickid =%s AND %s.chanid = %s.chanid AND %s.nickid = %s.nickid %s%s%s%s%s%s%s ORDER BY %s.channel ASC", ChanTable, ChanTable, UserTable, IsOnTable, IsOnTable, mysql_row[0], ChanTable, IsOnTable, UserTable, IsOnTable, cmodep, cmodes, cmodeA, cmodeO, umodep, umodeQ, umodeI, ChanTable); mysql_res2 = mysql_store_result(mysql); while ((mysql_row2 = mysql_fetch_row(mysql_res2)) != NULL) { strlcat(usrchans, mysql_row2[0], sizeof(usrchans)); strlcat(usrchans, " ", sizeof(usrchans)); } mysql_free_result(mysql_res2); ctsdiff = difftime(tsnow, time0); /* total online time */ /* Prepare the reply for the user */ if (stricmp(mysql_row[6], "N") == 0) { if (strlen(usrchans) < 3) { sprintf(message, moduleGetLangString(u, SEEN_ONLINE), mysql_row[1], mysql_row[4], mysql_row[3], get_timestring(u, ctsdiff), mysql_row[5]); } else { sprintf(message, moduleGetLangString(u, SEEN_ONLINEC), mysql_row[1], mysql_row[4], mysql_row[3], get_timestring(u, ctsdiff), mysql_row[5], usrchans); } } else { if (strlen(usrchans) < 3) { sprintf(message, moduleGetLangString(u, SEEN_AWAY), mysql_row[1], mysql_row[4], mysql_row[3], get_timestring(u, ctsdiff), mysql_row[5], mysql_row[7]); } else { sprintf(message, moduleGetLangString(u, SEEN_AWAYC), mysql_row[1], mysql_row[4], mysql_row[3], get_timestring(u, ctsdiff), mysql_row[5], mysql_row[7], usrchans); } } } else { double dtsdiff; if (mysql_row[9] != NULL && mysql_row[5] != NULL) { tt = atoi(mysql_row[9]); tm = *localtime(&tt); strftime(buf, sizeof(buf), "%d.%m %H:%M", &tm); mysql_row[9] = buf; dtsdiff = difftime(tsnow, time1); /* total offline time */ tsdiff = difftime(time1, time0); /* total online time */ sprintf(message, moduleGetLangString(u, SEEN_OFFLINE), mysql_row[1], mysql_row[4], mysql_row[3], get_timestring(u, dtsdiff), mysql_row[9], get_timestring(u, tsdiff), mysql_row[10]); } else { sprintf(message, moduleGetLangString(u, SEEN_UNKNOWN), mysql_row[1], mysql_row[4], mysql_row[3]); } } } } else { sprintf(message, moduleGetLangString(u, SEEN_EMPTY), target); } SET_SEGV_LOCATION(); mysql_free_result(mysql_res); return message; }
static void set_device_ups_primary (CcPowerPanel *panel, GVariant *device) { CcPowerPanelPrivate *priv = panel->priv; gchar *details = NULL; gchar *time_string = NULL; gdouble percentage; GtkWidget *widget; guint64 time; UpDeviceState state; /* set the device */ g_variant_get (device, "(susdut)", NULL, /* object_path */ NULL, /* kind */ NULL, /* icon_name */ &percentage, &state, &time); /* set the percentage */ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->levelbar_primary), percentage / 100.0f); /* always show the warning */ widget = WID ("image_primary_warning"); gtk_widget_show (widget); /* set the description */ if (time > 0) { time_string = get_timestring (time); switch (state) { case UP_DEVICE_STATE_DISCHARGING: if (percentage < 20) { /* TRANSLATORS: %1 is a time string, e.g. "1 hour 5 minutes" */ details = g_strdup_printf(_("Caution low UPS, %s remaining"), time_string); } else { /* TRANSLATORS: %1 is a time string, e.g. "1 hour 5 minutes" */ details = g_strdup_printf(_("Using UPS power - %s remaining"), time_string); } break; default: details = g_strdup_printf ("error: %s", up_device_state_to_string (state)); break; } } else { switch (state) { case UP_DEVICE_STATE_DISCHARGING: if (percentage < 20) { /* TRANSLATORS: UPS battery */ details = g_strdup(_("Caution low UPS")); } else { /* TRANSLATORS: UPS battery */ details = g_strdup(_("Using UPS power")); } break; default: details = g_strdup_printf ("error: %s", up_device_state_to_string (state)); break; } } if (details == NULL) goto out; widget = WID ("label_battery_primary"); gtk_label_set_label (GTK_LABEL (widget), details); /* show the primary device */ widget = WID ("box_primary"); gtk_widget_show (widget); /* hide the addon device as extra UPS devices are not possible */ widget = WID ("box_battery_addon"); gtk_widget_hide (widget); out: g_free (time_string); g_free (details); }