int getty(char *tty, speed_t speed, char *term, char *user) { int fd; char name[30]; /* Detach from initial controlling TTY */ vhangup(); fd = open(tty, O_RDWR); if (fd < 0) err(1, "Failed opening %s", tty); dup2(fd, STDIN_FILENO); dup2(fd, STDOUT_FILENO); dup2(fd, STDERR_FILENO); if (ioctl(STDIN_FILENO, TIOCSCTTY, 1) < 0) warn("Failed TIOCSCTTY"); /* The getty process is responsible for the UTMP login record */ utmp_set_login(tty, NULL); if (!user) do_getty(tty, name, sizeof(name)); else strlcpy(name, user, sizeof(name)); /* Set up TTY, re-enabling ISIG et al. */ stty(fd, speed); close(fd); if (term && term[0]) setenv("TERM", term, 1); return do_login(name); }
/** * Create or delete guest account * * @parma path The pathname of the script to run * @param username The name of the guest account * @return Zero on success, -1 on error */ static int do_guest(char* path, char* username) { char* args[3]; pid_t pid, reaped; int status; args[0] = path; args[1] = username; args[2] = NULL; /* Call the script. */ pid = do_login(args); if (pid == -1) return -1; /* Wait for the script to exit. */ for (;;) { reaped = waitpid(-1, &status, 0); if (reaped == -1) { if (errno != EINTR) return perror("waitpid"), -1; } else if (reaped == pid) return status ? -1 : 0; } }
main(int argc, char **argv) { /* * Optionally let them specify device. */ if (argc > 1) { tty_dev = argv[1]; open_tty_dev(tty_dev); } /* * Randomize a bit */ srandom(time((long *)0)); /* * Display welcoming banner */ cat(_PATH_BANNER); /* * Set up the TTY mode for cbreak noecho type of interaction */ init_tty(); /* * Login or bust */ for (;;) { do_login(); } }
G_MODULE_EXPORT void linphone_gtk_login_frame_connect_clicked(GtkWidget *button){ GtkWidget *mw=gtk_widget_get_toplevel(button); const char *username; const char *password; char *identity; gboolean autologin; LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)g_object_get_data(G_OBJECT(mw),"login_proxy_config"); LinphoneAddress *from; SipSetupContext *ssctx=linphone_proxy_config_get_sip_setup_context(cfg); username=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(mw,"login_username"))); password=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(mw,"login_password"))); if (username==NULL || username[0]=='\0') return; autologin=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(mw,"automatic_login"))); linphone_gtk_set_ui_config_int("automatic_login",autologin); linphone_gtk_set_ui_config("login_username",username); from=linphone_address_new(linphone_proxy_config_get_identity(cfg)); linphone_address_set_username(from,username); identity=linphone_address_as_string(from); do_login(ssctx,identity,password); /*we need to refresh the identities since the proxy config may have changed.*/ linphone_gtk_load_identities(); }
gint qq_login(QQInfo *info, const gchar *qqnum, const gchar *passwd , const gchar *status, GError **err) { if(info == NULL){ g_warning("info == NULL. (%s, %d)", __FILE__, __LINE__); create_error_msg(err, PARAMETER_ERR, "info == NULL"); return PARAMETER_ERR; } if(qqnum == NULL || passwd == NULL || strlen(qqnum) == 0){ g_warning("qqnumber or passwd == NULL.(%s, %d)" , __FILE__, __LINE__); create_error_msg(err, PARAMETER_ERR, "qqnum or passwd == NULL"); return PARAMETER_ERR; } // // The user's uin and qq number are the same. // qq_buddy_set(info -> me, "qqnumber", qqnum); qq_buddy_set(info -> me, "uin", qqnum); if(status != NULL){ qq_buddy_set(info -> me, "status", status); }else{ qq_buddy_set(info -> me, "status", "online"); } return do_login(info, qqnum, passwd, status, err); }
int main(int argc, char **argv) { char *outtyp; char *outcomp; int forcehead; int n, err; int stdret = standard_args(argc, argv); if (!stdret) return 0; if (argc < 2) return help(argc, argv); ignore_arg("-itype", 2, &argc, argv); ignore_arg("-iside", 2, &argc, argv); ignore_arg("-icomp", 2, &argc, argv); ignore_arg("-otype", 2, &argc, argv); ignore_arg("-oside", 2, &argc, argv); ignore_arg("-ocomp", 2, &argc, argv); outtyp = check_type("-type", &argc, argv); outcomp = check_type("-comp", &argc, argv); forcehead = check_forcehead("-side", &argc, argv); retries = check_retry("-retry", &argc, argv); if (find_arg("--help", argc, argv) > 0) return help(argc, argv); args_complete(&argc, argv); err = 0; for (n = 1; n < argc; n++) { if (do_login(argc, argv[n], outtyp, outcomp, forcehead)) ++err; } return err; }
int main(int argc, char **argv) { register char *s; char name[30]; struct sigaction sa; /* Don't let QUIT dump core. */ sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sa.sa_handler = exit; sigaction(SIGQUIT, &sa, NULL); tty_name = ttyname(0); if (tty_name == NULL) { std_out("getty: tty name unknown\n"); pause(); return(1); } chown(tty_name, 0, 0); /* set owner of TTY to root */ chmod(tty_name, 0600); /* mode to max secure */ do_getty(name, sizeof(name), argv+1, tty_name); /* handle getty() */ name[29] = '\0'; /* make sure the name fits! */ do_login(name); /* and call login(1) if OK */ return(1); /* never executed */ }
/** * Mane method * * @param argc The number of command line arguments * @param argv The command line arguments * @return Return code */ int main(int argc, char** argv) { char* tty_device = ttyname(STDIN_FILENO); do_login(argc, argv); /* Ignore signals */ signal(SIGQUIT, SIG_IGN); signal(SIGINT, SIG_IGN); /* Wait for the login shell and all grandchildren to exit */ while ((wait(NULL) == -1) && (errno == EINTR)) ; /* Regain access to the terminal */ if (tty_device) { int fd = open(tty_device, O_RDWR | O_NONBLOCK); if (fd != 0) dup2(fd, 0); if (fd != 1) dup2(fd, 1); if (fd != 2) dup2(fd, 2); } /* Reset terminal ownership and mode */ chown_tty(0, tty_group, 0); /* Close login session */ close_login_session(); /* Run logout hook */ exec_hook(HOOK_LOGOUT, argc, argv); return 0; }
/** * WebQQ login function * Step: * 1. Get webqq version * 2. Get verify code * 3. Calculate password's md5 * 4. Do real login * 5. check whether logining successfully * * @param client Lwqq Client * @param err Error code */ void lwqq_login(LwqqClient *client, LwqqErrorCode *err) { if (!client || !err) { lwqq_log(LOG_ERROR, "Invalid pointer\n"); return ; } /* First: get webqq version */ get_version(client, err); if (*err) { lwqq_log(LOG_ERROR, "Get webqq version error\n"); return ; } lwqq_log(LOG_NOTICE, "Get webqq version: %s\n", client->version); /** * Second, we get the verify code from server. * If server provide us a image and let us enter code shown * in image number, in this situation, we just return LWQQ_EC_LOGIN_NEED_VC * simply, so user should call lwqq_login() again after he set correct * code to vc->str; * Else, if we can get the code directly, do login immediately. * */ if (!client->vc) { get_verify_code(client, err); switch (*err) { case LWQQ_EC_LOGIN_NEED_VC: get_verify_image(client); lwqq_log(LOG_WARNING, "Need to enter verify code\n"); return ; case LWQQ_EC_NETWORK_ERROR: lwqq_log(LOG_ERROR, "Network error\n"); return ; case LWQQ_EC_OK: lwqq_log(LOG_DEBUG, "Get verify code OK\n"); break; default: lwqq_log(LOG_ERROR, "Unknown error\n"); return ; } } /* Third: calculate the md5 */ char *md5 = lwqq_enc_pwd(client->password, client->vc->str, client->vc->uin); /* Last: do real login */ do_login(client, md5, err); s_free(md5); /* Free old value */ lwqq_vc_free(client->vc); client->vc = NULL; }
static void irc_login_cb_ssl(gpointer data, GaimSslConnection *gsc, GaimInputCondition cond) { GaimConnection *gc = data; if (do_login(gc)) { gaim_ssl_input_add(gsc, irc_input_cb_ssl, gc); } }
static void irc_login_cb_ssl(gpointer data, PurpleSslConnection *gsc, PurpleInputCondition cond) { PurpleConnection *gc = data; if (do_login(gc)) { purple_ssl_input_add(gsc, irc_input_cb_ssl, gc); } }
static unsigned int WINAPI worker_func (void *data) #endif { test_t *lpBenchInfo = (test_t *) data; #if defined(PTHREADS) unsigned long result = TRUE; #elif defined(WIN32) unsigned int result; #endif bench_msg_t msg; memset (&msg, '\0', sizeof (msg)); msg.Type = 'F'; msg.nConn = lpBenchInfo->tpc._.nConn; msg.nThread = lpBenchInfo->tpc._.nThreadNo; if (!do_cancel) { lpBenchInfo->ShowProgress = dummy_ShowProgress; lpBenchInfo->StopProgress = dummy_StopProgress; lpBenchInfo->SetWorkingItem = dummy_SetWorkingItem; lpBenchInfo->SetProgressText = threaded_SendProgress; lpBenchInfo->fCancel = threaded_fCancel; lpBenchInfo->hstmt = 0; lpBenchInfo->hdbc = 0; lpBenchInfo->tpc._.nThreads = 1; if (do_login (lpBenchInfo)) { result = FALSE; if (lpBenchInfo->hstmt) switch (lpBenchInfo->TestType) { case TPC_A: result = DoThreadsRun (lpBenchInfo); break; case TPC_C: result = tpcc_run_test (NULL, lpBenchInfo) ? TRUE : FALSE; break; } do_logout (lpBenchInfo); } } if (!signal_pipe[1] || sizeof (bench_msg_t) != write (signal_pipe[1], &msg, sizeof (bench_msg_t))) abort (); #if defined(PTHREADS) return ((void *) result); #elif defined(WIN32) return (result); #endif }
interface::interface(QObject *parent) : QObject(parent) { connect(&connection, SIGNAL(on_start()), this, SLOT(do_login())); /* Creating the user interface */ w_login = new login; w_gameplay = new gameplay; connect(&connection, SIGNAL(on_login()), w_login, SLOT(do_wait_ready())); connect(&connection, SIGNAL(on_ready()), w_login, SLOT(do_wait())); w_login->show(); }
static void login_stage_4(LwqqClient* lc) { if(!lwqq_client_valid(lc)) return; /* Third: calculate the md5 */ char *md5 = lwqq_enc_pwd(lc->password, lc->vc->str, lc->vc->uin); /* Last: do real login */ LwqqAsyncEvent* ev = do_login(lc, md5, NULL); s_free(md5); lwqq_async_add_event_listener(ev,_C_(p,login_stage_5,ev)); }
//分析message函数, on_read之后调用 void talk_to_client::do_analyze(const std::string &msg) { if (msg.find(requests.request_register) == 0)do_register(msg); else if (msg.find(requests.request_login) == 0)do_login(msg); else if (msg.find(requests.request_ping) == 0)do_ping(); else if (msg.find(requests.request_ask) == 0)do_anw_clients(); else if (msg.find(requests.request_send_to) == 0)do_sendto(msg); else if (msg.find(requests.request_exit) == 0)do_exit(); else std::cout << msg << std::endl; return; }
int auth_init() { printf("|Student Gradebook|\n" "1) Login\n" "2) Create New Account\n" "3) Exit\n"); char c; printf("Enter a command: "); while (! ((c = getchar()) >= '1' && c <= '3')); while (getchar() != '\n'); if (c == '3') exit(EXIT_SUCCESS); printf("\n"); if (c == '1') return do_login(); else if (c == '2') return do_register(); return 1; }
static void irc_login_cb(gpointer data, gint source, const gchar *error_message) { PurpleConnection *gc = data; struct irc_conn *irc = gc->proto_data; if (source < 0) { purple_connection_error(gc, _("Couldn't connect to host")); return; } irc->fd = source; if (do_login(gc)) { gc->inpa = purple_input_add(irc->fd, PURPLE_INPUT_READ, irc_input_cb, gc); } }
const char *login(const char *uid, const char *pass, int *can_changepwd) { const char *driver; const char *p=do_login(uid, pass, &driver, can_changepwd); static char *login_id_buf=0; if (p) { if (badstr(uid) || badstr(pass)) return (NULL); if (login_id_buf) free(login_id_buf); if ((login_id_buf=malloc(strlen(p)+strlen(driver)+2)) == 0) enomem(); p=strcat(strcat(strcpy(login_id_buf, p), "."), driver); } return (p); }
static gboolean do_login_noprompt(LinphoneProxyConfig *cfg){ SipSetupContext *ssctx=linphone_proxy_config_get_sip_setup_context(cfg); LinphoneAddress *addr; const char *username; char *tmp; if (ssctx==NULL) return TRUE;/*not ready ?*/ username=linphone_gtk_get_ui_config ("login_username",NULL); if (username==NULL) { linphone_gtk_set_ui_config_int("automatic_login",0); linphone_gtk_show_login_frame(cfg); return FALSE; } addr=linphone_address_new(linphone_proxy_config_get_identity(cfg)); linphone_address_set_username(addr,username); tmp=linphone_address_as_string (addr); do_login(ssctx,tmp,NULL); linphone_address_destroy(addr); return FALSE; }
int do_client(int sockfd,sqlite3 *pdb) { MSG msg; char *p_username,*p_password; while(1) { recv(sockfd,&msg,sizeof(msg),0); switch(msg.type) { case REGISTER: p_password = strdup(msg.password); p_username = strdup(msg.username); do_register(sockfd,pdb,p_username,p_password); free(p_username); free(p_password); break; case LOGIN: p_password = strdup(msg.password); p_username = strdup(msg.username); do_login(sockfd,pdb,p_username,p_password); free(p_username); free(p_password); break; case WORD: do_word(sockfd,pdb,msg.mtext); break; defalut: exit(EXIT_SUCCESS); } } return 0; }
static void irc_login_cb(gpointer data, gint source, const gchar *error_message) { PurpleConnection *gc = data; struct irc_conn *irc = gc->proto_data; if (source < 0) { gchar *tmp = g_strdup_printf(_("Unable to connect: %s"), error_message); purple_connection_error_reason (gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); g_free(tmp); return; } irc->fd = source; if (do_login(gc)) { gc->inpa = purple_input_add(irc->fd, PURPLE_INPUT_READ, irc_input_cb, gc); } }
st NetUtil::login(const char* host, const char* user, const char* pwd) { cJSON* root = cJSON_CreateObject(); cJSON_AddItemToObject(root, "username", cJSON_CreateString(user)); cJSON_AddItemToObject(root, "password", cJSON_CreateString(pwd)); char* str = cJSON_PrintUnformatted(root); cl::StringUtil::copy(g_host, 256, host); cJSON* ret = do_login("/v2/logon", str); cJSON_Delete(root); free(str); if(ret == NULL) return FALSE; cJSON* tokenItem = cJSON_GetObjectItem(ret, "token"); cl::StringUtil::copy(g_token, 64, tokenItem->valuestring); cJSON_Delete(ret); return TRUE; }
/* * If a user account exists which is associated with the Claimed ID, log it in and return zero. * Otherwise it returns nonzero. */ int login_via_openid(StrBuf *claimed_id) { struct cdbdata *cdboi; long usernum = 0; cdboi = cdb_fetch(CDB_OPENID, ChrPtr(claimed_id), StrLength(claimed_id)); if (cdboi == NULL) { return(-1); } memcpy(&usernum, cdboi->ptr, sizeof(long)); cdb_free(cdboi); if (!CtdlGetUserByNumber(&CC->user, usernum)) { /* Now become the user we just created */ safestrncpy(CC->curr_user, CC->user.fullname, sizeof CC->curr_user); do_login(); return(0); } else { memset(&CC->user, 0, sizeof(struct ctdluser)); return(-1); } }
void do_stuff(int arg_sock) { // rsp -- 0x990 bytes for locals -- rbp int sock = arg_sock; // -0x984(rbp) int i; // -0x978(rbp) int len; // -0x974(rbp) char* p1, p2 // -0x970(rbp), -0x968(rbp) // -0x960(rbp), 1224 bytes total struct { int sock; // -0x960(rbp) char* something1; // -0x950(rbp) char* something2; // -0x948(rbp) char* username; // offset 0x20, -0x940(rbp) char* password; // offset 0x28 char dir[1024]; // offset 0xc0 } state; int logged_in; // -0x4a0(rbp), overlap with dir? char buf[0x80]; // -0x490(rbp) char directory[1024]; // -0x410(rbp) alarm(65); srand(time(0)); memset(state, 0, 1224); state->sock = sock; if(getcwd(directory, 0x400)) { strcpy(state->dir, directory); } else { error("CWD"); } send_(sock, "Welcome to FTP server\n"); for(;; free(p2)) { memset(buf, 0, 0x80); p1 = p2 = recv_(sock); len = strlen(p1); for(i=0; (*p1 != ' ') && (i < len-1); i++) { buf[i] = *p1++; } if(*p1 == ' ') { p1++; } p1[strlen(p1)-1] = 0; if(!strncasecmp("USER", buf, 4)) { if(logged_in) { send_(sock, "Cannot change user "); send_(sock, state->username); send_(sock, "\n"); continue; } else { state->username = p1; state->something2 = p1; do_login(state); continue; } } if(!strncasecmp("PASS", buf, 4)) { send_(sock, "send user first.\n"); continue; } if(!strncasecmp("HELP", buf, 4)) { send_(sock, "USER PASS PASV PORT\nNOOP REIN LIST SYST SIZE\nRETR STOR PWD CWD\n"); continue; } if(!logged_in) { send_(sock, "login with USER first.\n"); continue; } if(!strncasecmp("REIN", buf, 4)) { logged_in = 0; continue; } if(!strncasecmp("PORT", buf, 4)) { do_port(...); } if(!strncasecmp("PASV", buf, 4)) { do_pasv(...); } if(!strncasecmp("STOR", buf, 4)) { do_stor(...); } if(!strncasecmp("RETR", buf, 4)) { do_retr(...); } if(!strncasecmp("QUIT", buf, 4)) { do_quit(...); } if(!strncasecmp("LIST", buf, 4)) { do_list(...); } if(!strncasecmp("SYST", buf, 4)) { do_syst(...); } if(!strncasecmp("NOOP", buf, 4)) { do_noop(...); } if(!strncasecmp("PWD", buf, 4)) { do_pwd(...); } if(!strncasecmp("CWD", buf, 4)) { do_cwd(...); } if(!strncasecmp("RDF", buf, 4)) { state->something1 = p1; state->something2 = buf; do_rdf(state); } } }
void bbsstart(void) { unsigned char stdinbuf[STDINBUFSIZ]; long uglastmsg; /* last msg seen in prev. rm */ long ugtemp = TWILIGHTZONE; short prev_rm = TWILIGHTZONE; char cit_cmd; char bueller = 0; room = &sroom; setvbuf(stdin, (char *)stdinbuf, _IOFBF, STDINBUFSIZ); setvbuf(stdout, (char *)stdoutbuf, _IOFBF, STDOUTBUFSIZ); init_system(); /* Putty.exe is obstinate */ /* IAC WILL SGA */ putchar(IAC); putchar(WILL); putchar(TELOPT_SGA); /* magic to set telnet into character mode */ /* IAC DO LINEMODE, IAC WILL ECHO */ write(1,"\377\375\042\377\373\001",6); /* let window sizes come through */ /* IAC DO NAWS */ write(1,"\377\375\037",3); reserve_slot(); do_login(); colorize("\n@G"); curr = LOBBY_RM_NBR; inituser(); openroom(); storeug(&uglastmsg, &ugtemp); /* The first thing we do is make the user read the lobby */ cit_cmd = 'N'; readroom(cit_cmd); for(;;) { /* * check if user has been kicked out of this room while they were in it, * or if room was deleted */ if (ouruser->generation[curr] < 0 || !msg->room[curr].flags) { curr = LOBBY_RM_NBR; openroom(); storeug(&uglastmsg, &ugtemp); } if (cit_cmd) colorize("\n@Y%s>@G ", msg->room[curr].name); checkx(0); if (ouruser->f_prog) cit_cmd = get_single_quiet("ABCD\005eEFGHIJKLNOpPqQRsSTUvVwWxX\027\030yYZ /?#%@-\""); else if (ouruser->f_aide) cit_cmd = get_single_quiet("ABC\005eEFGHIJKLNOpPqQRsSTUvVwWxX\027\030yYZ /?#%@-\""); else if (ouruser->usernum == msg->room[curr].roomaide && !ouruser->f_twit) cit_cmd = get_single_quiet("ABC\005eEFGHIJKLNOpPqQRsSTUwWxX\027\030yYZ /?#%-\""); else cit_cmd = get_single_quiet("BCeEFGHIJKLNOpPqQRsSTUwWxX\027\030yYZ /?#%-\""); if (cit_cmd == SP) cit_cmd = 'N'; if (guest && !strchr("BFGHIJKLNOpPRsSTUwWyY/?#-", cit_cmd)) { colorize("\n\n@RThe Guest user cannot do that.@G\n"); continue; } if (curr == LOBBY_RM_NBR && strchr("DGNqsTU\027X\030Z% ", cit_cmd)) { if (bueller++ >= 12) flush_input(bueller / 25); if (bueller >= 100) { colorize("@R\n\n\nGo away until you have something useful to do!\n\n\n@G"); my_exit(10); } } else bueller = 0; if (strchr("AC\005eEHJpPQSvVx\030yYZ#-\"", cit_cmd)) mybtmp->nox = 1; switch (cit_cmd) { case 'A': printf("Sysop commands (%s)\n", msg->room[curr].name); aide_menu(); break; case 'R': case 'B': cit_cmd = 'R'; printf("Read Reverse\n"); readroom(cit_cmd); break; case 'C': printf("Change config\n"); change_setup(NULL); break; case 'D': printf("Debug\n"); debug(); break; case '\005': if (ouruser->usernum == msg->room[curr].roomaide) { printf("Enter Forum Moderator message\n\nAre you sure you want to enter a message as Forum Moderator? (Y/N) -> "); if (!yesno(-1)) break; sysopflags |= SYSOP_FROM_FM; } else if (ouruser->f_admin) { printf("Enter Sysop message\n\nNOTE: You are entering this message as Sysop!\n\n"); sysopflags |= SYSOP_FROM_SYSOP; } /* FALL THRU */ case 'e': case 'E': { char work[20]; if (ouruser->f_newbie && (curr == MAIL_RM_NBR || curr > 4)) help("newuseraccess", NO); else { if (cit_cmd == 'E') printf("Upload message\n\n"); else if (cit_cmd == 'e') printf("Enter message\n\n"); *work = 0; (void)entermessage(curr, work, cit_cmd == 'e' ? 0 : 2); sysopflags &= ~(SYSOP_FROM_SYSOP | SYSOP_FROM_FM); } } break; case 'F': printf("Read Forward\n"); readroom(cit_cmd); break; case 'G': printf("Goto "); updatels(&prev_rm); /* find next room with unread msgs and open it */ nextroom(); openroom(); storeug(&uglastmsg, &ugtemp); break; case 'H': printf("Help!\n"); help("topics", YES); break; case 'q': case 'Q': get_syself_help(cit_cmd); break; case 'I': printf("Forum Info\n"); readdesc(); break; case 'J': { int old_rm; printf("Jump to "); old_rm = curr; if (findroom() == YES) { int save_rm; mybtmp->nox = 0; save_rm = curr; curr = old_rm; updatels(&prev_rm); curr = save_rm; openroom(); storeug(&uglastmsg, &ugtemp); } } break; case 'K': printf("Known forums and zapped list\n"); knrooms(); break; case 'L': dologout(); break; case 'N': if (ouruser->lastseen[curr] < room->num[MSGSPERRM - 1]) { printf("Read New\n"); readroom(cit_cmd); } else { /* No new notes so just do a Goto now */ printf("Goto "); updatels(&prev_rm); /* find next room with unread msgs and open it */ nextroom(); openroom(); storeug(&uglastmsg, &ugtemp); } break; case 'O': printf("Read Old messages reverse\n"); readroom(cit_cmd); break; case 'p': case 'P': profile_user(cit_cmd == 'P'); break; case 's': /* don't update lastseen, you're skipping the room */ printf("Skip %s\n", msg->room[curr].name); skipping[curr >> 3] |= 1 << (curr & 7); /* after skipping a room, find the next unread room (not a goto) */ nextroom(); openroom(); ugtemp = ouruser->lastseen[curr]; break; case 'S': { int old_rm; printf("Skip %s to ", msg->room[curr].name); old_rm = curr; if (findroom() == YES) { mybtmp->nox = 0; skipping[old_rm >> 3] |= 1 << (old_rm & 7); openroom(); ugtemp = ouruser->lastseen[curr]; } } break; case 'T': printdate("Time\n\n%s"); break; case 'U': printf("Ungoto\n"); ungoto(prev_rm, &uglastmsg, &ugtemp); break; case 'v': cit_cmd = 0; break; case 'V': printf("Validate new users\n"); validate_users(1); break; case '\027': if (client) clientwho(); else cit_cmd = 0; break; case 'w': /* Short form of who's online */ show_online(3); break; case 'W': /* Who's online */ show_online(0); break; case 'x': express(); break; case 'X': change_express(1); break; case CTRL_X: old_express(); break; case 'y': case 'Y': if (!wanttoyell(cit_cmd)) break; (void)entermessage(-1, "", cit_cmd == 'y' ? 0 : 2); break; case 'Z': printf("Zap forum\n"); if (forgetroom()) { nextroom(); openroom(); ugtemp = ouruser->lastseen[curr]; } break; case '?': case '/': if (guest) help("guestforumlevel", NO); else help("doccmd", NO); break; case '#': readroom(cit_cmd); break; case '%': if (ouruser->f_elf && !ouruser->f_restricted && !ouruser->f_twit) if (mybtmp->xstat && !mybtmp->elf) printf("\n\nYou can't enable yourself as a guide while your X's are disabled.\n"); else if ((mybtmp->elf = !mybtmp->elf)) printf("\n\nYou are now marked as being available to help others.\n"); else printf("\n\nYou are no longer marked as being available to help others.\n"); else cit_cmd = 0; break; case '-': readroom(cit_cmd); break; case '@': printf("Sysops, programmers, and forum moderators\n"); more(AIDELIST, 0); break; case '"': { char work[20]; printf("Quote X messages to Sysop\n"); *work = 0; (void)entermessage(-1, work, -1); } break; default: break; } /* switch */ }
int main(int argc, char **argv) { int max_tries = 5; int try; char username[32]; int optidx = 0; int ask = 1; struct sigaction sa; setprogname(argv[0]); #ifdef KRB5 { krb5_error_code ret; ret = krb5_init_context(&context); if (ret) errx (1, "krb5_init_context failed: %d", ret); } #endif openlog("login", LOG_ODELAY | LOG_PID, LOG_AUTH); if (getarg (args, sizeof(args) / sizeof(args[0]), argc, argv, &optidx)) usage (1); argc -= optidx; argv += optidx; if(help_flag) usage(0); if (version_flag) { print_version (NULL); return 0; } if (geteuid() != 0) errx(1, "only root may use login, use su"); /* Default tty settings. */ stty_default(); if(p_flag) copy_env(); else { /* this set of variables is always preserved by BSD login */ if(getenv("TERM")) add_env("TERM", getenv("TERM")); if(getenv("TZ")) add_env("TZ", getenv("TZ")); } if(*argv){ if(strchr(*argv, '=') == NULL && strcmp(*argv, "-") != 0){ strlcpy (username, *argv, sizeof(username)); ask = 0; } } #if defined(DCE) && defined(AIX) esetenv("AUTHSTATE", "DCE", 1); #endif /* XXX should we care about environment on the command line? */ memset(&sa, 0, sizeof(sa)); sa.sa_handler = sig_handler; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(SIGALRM, &sa, NULL); alarm(login_timeout); for(try = 0; try < max_tries; try++){ struct passwd *pwd; char password[128]; int ret; char ttname[32]; char *tty, *ttyn; char prompt[128]; #ifdef OTP char otp_str[256]; #endif if(ask){ f_flag = 0; #if 0 r_flag = 0; #endif ret = read_string("login: "******""); } else #endif { #ifdef OTP if(auth_level && strcmp(auth_level, "otp") == 0 && otp_challenge(&otp_ctx, username, otp_str, sizeof(otp_str)) == 0) snprintf (prompt, sizeof(prompt), "%s's %s Password: "******"Password: "******"Login incorrect.\n"); ask = 1; continue; } if(f_flag == 0 && check_password(pwd, password)){ fprintf(stderr, "Login incorrect.\n"); ask = 1; continue; } ttyn = ttyname(STDIN_FILENO); if(ttyn == NULL){ snprintf(ttname, sizeof(ttname), "%s??", _PATH_TTY); ttyn = ttname; } if (strncmp (ttyn, _PATH_DEV, strlen(_PATH_DEV)) == 0) tty = ttyn + strlen(_PATH_DEV); else tty = ttyn; if (login_access (pwd, remote_host ? remote_host : tty) == 0) { fprintf(stderr, "Permission denied\n"); if (remote_host) syslog(LOG_NOTICE, "%s LOGIN REFUSED FROM %s", pwd->pw_name, remote_host); else syslog(LOG_NOTICE, "%s LOGIN REFUSED ON %s", pwd->pw_name, tty); exit (1); } else { if (remote_host) syslog(LOG_NOTICE, "%s LOGIN ACCEPTED FROM %s ppid=%d", pwd->pw_name, remote_host, (int) getppid()); else syslog(LOG_NOTICE, "%s LOGIN ACCEPTED ON %s ppid=%d", pwd->pw_name, tty, (int) getppid()); } alarm(0); do_login(pwd, tty, ttyn); } exit(1); }
static void login_state_machine(gpointer data) { QQLoginPanel *panel = (QQLoginPanel*)data; while(TRUE){ switch(state) { case LOGIN_SM_CHECKVC: if(qq_check_verifycode(info, panel -> uin, NULL) != 0){ state = LOGIN_SM_ERR; break; } state = LOGIN_SM_LOGIN; if(info -> need_vcimage){ gqq_mainloop_attach(>kloop, read_verifycode, 1, panel); // Quit the state machine. // The state machine will restart in the read verify code // dialog. return; } case LOGIN_SM_LOGIN: if(do_login(panel) != 0){ state = LOGIN_SM_ERR; }else{ state = LOGIN_SM_GET_DATA; } break; case LOGIN_SM_GET_DATA: //Read cached data from db gqq_config_load(cfg, panel -> uin); qq_get_buddies_and_categories(info, NULL); qq_get_groups(info, NULL); state = LOGIN_SM_DONE; break; case LOGIN_SM_DONE: g_debug("Login done. show main panel!(%s, %d)", __FILE__, __LINE__); // // Start poll message // qq_start_poll(info, qq_poll_message_callback, >kloop, NULL); // update main panel gqq_mainloop_attach(>kloop, qq_mainpanel_update , 1, QQ_MAINWINDOW(panel -> container) -> main_panel); // show main panel gqq_mainloop_attach(>kloop, qq_mainwindow_show_mainpanel , 1, panel -> container); update_details(info, panel); return; case LOGIN_SM_ERR: g_debug("Login error... (%s, %d)", __FILE__, __LINE__); gqq_mainloop_attach(>kloop, qq_mainwindow_show_loginpanel , 1, panel -> container); g_debug("Show login panel.(%s, %d)", __FILE__, __LINE__); return; default: break; } } return; }
int do_threads_run (int nConnCount, OList * tests, int nMinutes, char *szTitle) { test_t *lpBenchInfo; test_t **data; int *n_threads, nThreads = 0, nThreadsWork; char szTemp[2048]; long nRuns = 0; FILE *fi; THREAD_T **workers; bench_msg_t msg; time_t start_time, now_time; long time_remaining; #ifdef WIN32 DWORD thrid; #endif int thr, conn; int rc = 0; void (*old_pane_log) (const char *format, ...) = pane_log; OList *iter; BOOL wasError = FALSE; nProgressIncrement = bench_get_long_pref (A_REFRESH_RATE); if (!nConnCount) return 0; if (pipe (signal_pipe)) { old_pane_log ("Can't open the pipe"); return rc; } fi = fdopen (signal_pipe[0], "rb"); lpBenchInfo = (test_t *) tests->data; do_cancel = FALSE; time (&start_time); sprintf (szTemp, "Running for %d minutes", nMinutes); lpBenchInfo->ShowProgress (NULL, szTitle, FALSE, nMinutes * 60); lpBenchInfo->SetWorkingItem (szTemp); data = (test_t **) calloc (nConnCount, sizeof (test_t *)); workers = (THREAD_T **) calloc (nConnCount, sizeof (THREAD_T *)); n_threads = (int *) calloc (nConnCount, sizeof (int)); pane_log = dummy_pane_log; for (iter = tests, conn = 0; iter; iter = o_list_next (iter), conn++) { test_t *test = (test_t *) iter->data; test->tpc._.nMinutes = nMinutes; if (do_login (test)) { get_dsn_data (test); if (test->hdbc && IS_A (*test)) { fExecuteSql (test, (SQLCHAR *) "delete from HISTORY"); SQLTransact (SQL_NULL_HENV, test->hdbc, SQL_COMMIT); } do_logout (test); n_threads[conn] = test->tpc._.nThreads ? test->tpc._.nThreads : 1; data[conn] = (test_t *) calloc (n_threads[conn], sizeof (test_t)); workers[conn] = (THREAD_T *) calloc (n_threads[conn], sizeof (THREAD_T)); nThreads += n_threads[conn]; memset (test->szSQLError, 0, sizeof (test->szSQLError)); memset (test->szSQLState, 0, sizeof (test->szSQLState)); for (thr = 0; thr < n_threads[conn]; thr++) { memcpy (&(data[conn][thr]), test, sizeof (test_t)); data[conn][thr].test = test; data[conn][thr].tpc._.nThreadNo = thr; data[conn][thr].tpc._.nConn = conn; START_THREAD (workers[conn][thr], worker_func, data[conn][thr]); } } } nThreadsWork = nThreads; while (nThreadsWork && fread (&msg, sizeof (bench_msg_t), 1, fi)) { if (lpBenchInfo->fCancel ()) do_cancel = TRUE; switch (msg.Type) { case 'F': if (gui.do_MarkFinished) gui.do_MarkFinished (msg.nConn, msg.nThread); sprintf (szTemp, "%s %3d threads running", szTitle, --nThreadsWork); lpBenchInfo->SetWorkingItem (szTemp); if (data[msg.nConn][msg.nThread].szSQLError[0]) { old_pane_log ("*** Error : Thread %3d in dsn %s : [%s] %s\r\n", msg.nThread + 1, data[msg.nConn][msg.nThread].szLoginDSN, data[msg.nConn][msg.nThread].szSQLState, data[msg.nConn][msg.nThread].szSQLError); strcpy ((char *) data[msg.nConn][msg.nThread].test->szSQLState, (char *) data[msg.nConn][msg.nThread].szSQLState); strcpy ((char *) data[msg.nConn][msg.nThread].test->szSQLError, (char *) data[msg.nConn][msg.nThread].szSQLError); wasError = TRUE; } break; case 'R': time (&now_time); time_remaining = nMinutes * 60 - (now_time - start_time); time_remaining = (time_remaining > 0 ? time_remaining : 0); sprintf (szTemp, "%10ld secs remaining", time_remaining); nRuns += 1; lpBenchInfo->SetProgressText (szTemp, msg.nConn, msg.nThread, msg.percent, msg.nTrnPerCall, time_remaining, msg.tpca_dDiffSum); break; } } fclose (fi); close (signal_pipe[1]); close (signal_pipe[0]); memset (signal_pipe, 0, sizeof (signal_pipe)); pane_log = old_pane_log; lpBenchInfo->StopProgress (); rc = ThreadedCalcStats (tests, workers, data, nConnCount, n_threads); for (iter = tests, conn = 0; iter; iter = o_list_next (iter), conn++) { XFREE (workers[conn]); XFREE (data[conn]); } XFREE (workers); XFREE (data); XFREE (n_threads); if (do_cancel || wasError) rc = 0; return rc; }
static void make_sub_controls (TPCATableProps * tableloader) { GtkWidget *CreateTablesFrame, *LoadTablesFrame, *IndexesFrame, *RecordsToInsertFrame; GtkWidget *main_hbox, *first_vbox, *second_vbox, *remotes = NULL; GtkWidget *helper, *label; GList *list = NULL; int i, ofs; do_login (tableloader->ptest); tableloader->pDSN = (ServerDSN *) ServerDSN_new (tableloader->ptest); if (tableloader->ptest->tpc.a.uwDrvIdx == -1) { tableloader->ptest->tpc.a.uwDrvIdx = getDriverTypeIndex (tableloader->ptest->szDBMS); tableloader->ptest->is_dirty = 1; } gtk_signal_connect (GTK_OBJECT (tableloader->pDSN), "dsns_changed", GTK_SIGNAL_FUNC (set_dsn_combos), GTK_OBJECT (tableloader)); gtk_container_border_width (GTK_CONTAINER (&tableloader->parent), 10); main_hbox = gtk_hbox_new (FALSE, 10); gtk_container_add (GTK_CONTAINER (tableloader), main_hbox); first_vbox = gtk_vbox_new (FALSE, 10); gtk_box_pack_start (GTK_BOX (main_hbox), first_vbox, TRUE, TRUE, 0); CreateTablesFrame = gtk_frame_new ("Create Tables"); gtk_box_pack_start (GTK_BOX (first_vbox), CreateTablesFrame, TRUE, TRUE, 0); helper = gtk_table_new (tableloader->pDSN->isVirtuoso ? 5 : 4, tableloader->pDSN->isVirtuoso ? 3 : 1, TRUE); gtk_container_border_width (GTK_CONTAINER (helper), 5); gtk_container_add (GTK_CONTAINER (CreateTablesFrame), helper); if (tableloader->pDSN->isVirtuoso) { GtkWidget *dsn_btn = gtk_button_new_with_label ("DSNs ..."); gtk_signal_connect (GTK_OBJECT (dsn_btn), "clicked", GTK_SIGNAL_FUNC (show_server_data_sources_dialog), tableloader); gtk_table_attach_defaults (GTK_TABLE (helper), dsn_btn, 2, 3, 0, 1); gtk_widget_set_sensitive (dsn_btn, FALSE); remotes = gtk_check_button_new_with_label ("Remote tables"); gtk_table_attach_defaults (GTK_TABLE (helper), remotes, 1, 2, 0, 1); gtk_signal_connect (GTK_OBJECT (remotes), "clicked", GTK_SIGNAL_FUNC (enable_widget_as), dsn_btn); ofs = 1; } else ofs = 0; tableloader->create_branch = gtk_check_button_new_with_label ("Branch"); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->create_branch, 0, 1, ofs, ofs + 1); tableloader->create_teller = gtk_check_button_new_with_label ("Teller"); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->create_teller, 0, 1, ofs + 1, ofs + 2); tableloader->create_account = gtk_check_button_new_with_label ("Account"); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->create_account, 0, 1, ofs + 2, ofs + 3); tableloader->create_history = gtk_check_button_new_with_label ("History"); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->create_history, 0, 1, ofs + 3, ofs + 4); tableloader->branch_dsn = gtk_combo_new (); gtk_combo_set_value_in_list (GTK_COMBO (tableloader->branch_dsn), TRUE, TRUE); gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (tableloader->branch_dsn)->entry), ""); if (tableloader->pDSN->isVirtuoso) { if (tableloader->pDSN->dsn_info.dsns) gtk_combo_set_popdown_strings (GTK_COMBO (tableloader->branch_dsn), tableloader->pDSN->dsn_info.dsns); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->branch_dsn, 1, 3, ofs + 0, ofs + 1); gtk_widget_set_sensitive (tableloader->branch_dsn, FALSE); gtk_signal_connect (GTK_OBJECT (remotes), "clicked", GTK_SIGNAL_FUNC (enable_widget_as), tableloader->branch_dsn); } tableloader->teller_dsn = gtk_combo_new (); gtk_combo_set_value_in_list (GTK_COMBO (tableloader->teller_dsn), TRUE, TRUE); gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (tableloader->teller_dsn)->entry), ""); if (tableloader->pDSN->isVirtuoso) { if (tableloader->pDSN->dsn_info.dsns) gtk_combo_set_popdown_strings (GTK_COMBO (tableloader->teller_dsn), tableloader->pDSN->dsn_info.dsns); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->teller_dsn, 1, 3, ofs + 1, ofs + 2); gtk_widget_set_sensitive (tableloader->teller_dsn, FALSE); gtk_signal_connect (GTK_OBJECT (remotes), "clicked", GTK_SIGNAL_FUNC (enable_widget_as), tableloader->teller_dsn); } tableloader->account_dsn = gtk_combo_new (); gtk_combo_set_value_in_list (GTK_COMBO (tableloader->account_dsn), TRUE, TRUE); gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (tableloader->account_dsn)->entry), ""); if (tableloader->pDSN->isVirtuoso) { if (tableloader->pDSN->dsn_info.dsns) gtk_combo_set_popdown_strings (GTK_COMBO (tableloader->account_dsn), tableloader->pDSN->dsn_info.dsns); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->account_dsn, 1, 3, ofs + 2, ofs + 3); gtk_widget_set_sensitive (tableloader->account_dsn, FALSE); gtk_signal_connect (GTK_OBJECT (remotes), "clicked", GTK_SIGNAL_FUNC (enable_widget_as), tableloader->account_dsn); } tableloader->history_dsn = gtk_combo_new (); gtk_combo_set_value_in_list (GTK_COMBO (tableloader->history_dsn), TRUE, TRUE); gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (tableloader->history_dsn)->entry), ""); if (tableloader->pDSN->isVirtuoso) { if (tableloader->pDSN->dsn_info.dsns) gtk_combo_set_popdown_strings (GTK_COMBO (tableloader->history_dsn), tableloader->pDSN->dsn_info.dsns); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->history_dsn, 1, 3, ofs + 3, ofs + 4); gtk_widget_set_sensitive (tableloader->history_dsn, FALSE); gtk_signal_connect (GTK_OBJECT (remotes), "clicked", GTK_SIGNAL_FUNC (enable_widget_as), tableloader->history_dsn); } LoadTablesFrame = gtk_frame_new ("Load Tables"); gtk_container_border_width (GTK_CONTAINER (LoadTablesFrame), 5); gtk_box_pack_start (GTK_BOX (first_vbox), LoadTablesFrame, TRUE, TRUE, 0); helper = gtk_table_new (3, 1, TRUE); gtk_container_border_width (GTK_CONTAINER (helper), 5); gtk_container_add (GTK_CONTAINER (LoadTablesFrame), helper); tableloader->load_branch = gtk_check_button_new_with_label ("Branch"); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->load_branch, 0, 1, 0, 1); tableloader->load_teller = gtk_check_button_new_with_label ("Teller"); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->load_teller, 0, 1, 1, 2); tableloader->load_account = gtk_check_button_new_with_label ("Account"); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->load_account, 0, 1, 2, 3); second_vbox = gtk_vbox_new (FALSE, 10); gtk_box_pack_start (GTK_BOX (main_hbox), second_vbox, TRUE, TRUE, 0); IndexesFrame = gtk_frame_new ("Indices"); gtk_container_border_width (GTK_CONTAINER (IndexesFrame), 5); gtk_box_pack_start (GTK_BOX (second_vbox), IndexesFrame, TRUE, TRUE, 0); helper = gtk_hbox_new (TRUE, 10); gtk_container_border_width (GTK_CONTAINER (helper), 5); gtk_container_add (GTK_CONTAINER (IndexesFrame), helper); tableloader->create_indexes = gtk_check_button_new_with_label ("Create Indices"); gtk_box_pack_start (GTK_BOX (helper), tableloader->create_indexes, TRUE, TRUE, 0); tableloader->create_procedures = gtk_check_button_new_with_label ("Create Procedures"); gtk_box_pack_start (GTK_BOX (helper), tableloader->create_procedures, TRUE, TRUE, 0); RecordsToInsertFrame = gtk_frame_new ("Records to Insert"); gtk_container_border_width (GTK_CONTAINER (RecordsToInsertFrame), 5); gtk_box_pack_start (GTK_BOX (second_vbox), RecordsToInsertFrame, TRUE, TRUE, 0); helper = gtk_table_new (3, 2, FALSE); gtk_container_border_width (GTK_CONTAINER (helper), 5); gtk_container_add (GTK_CONTAINER (RecordsToInsertFrame), helper); label = gtk_label_new ("Number of branches"); gtk_table_attach_defaults (GTK_TABLE (helper), label, 0, 1, 0, 1); tableloader->num_branches = gtk_entry_new_with_max_length (10); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->num_branches, 1, 2, 0, 1); label = gtk_label_new ("Number of Tellers"); gtk_table_attach_defaults (GTK_TABLE (helper), label, 0, 1, 1, 2); tableloader->num_tellers = gtk_entry_new_with_max_length (10); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->num_tellers, 1, 2, 1, 2); label = gtk_label_new ("Number of Accounts"); gtk_table_attach_defaults (GTK_TABLE (helper), label, 0, 1, 2, 3); tableloader->num_accounts = gtk_entry_new_with_max_length (10); gtk_table_attach_defaults (GTK_TABLE (helper), tableloader->num_accounts, 1, 2, 2, 3); helper = gtk_vbox_new (TRUE, 0); gtk_container_border_width (GTK_CONTAINER (helper), 5); gtk_box_pack_start (GTK_BOX (second_vbox), helper, TRUE, TRUE, 0); label = gtk_label_new ("Schema for DBMS"); gtk_box_pack_start (GTK_BOX (helper), label, TRUE, TRUE, 0); for (i = 0; i < getDriverMapSize (); i++) list = g_list_append (list, getDriverDBMSName (i)); tableloader->dbmstype = gtk_combo_new (); gtk_combo_set_popdown_strings (GTK_COMBO (tableloader->dbmstype), list); gtk_box_pack_start (GTK_BOX (helper), tableloader->dbmstype, TRUE, TRUE, 0); gtk_widget_show_all (main_hbox); }
static int ThreadedCalcStats (OList * tests, THREAD_T ** workers, test_t ** data, int nConnCount, int *nThreads) { OList *iter; int nConn; int rc = 1; int rc1 = 1; for (iter = tests, nConn = 0; iter && nConn < nConnCount; nConn++, iter = o_list_next (iter)) { int nOkA = 0, nOkC = 0; int nA = 0, nC = 0; #if defined(PTHREADS) unsigned long result; #elif defined(WIN32) unsigned int result; #endif BOOL runStatus = TRUE; int i; test_t *test = (test_t *) iter->data; if (IS_A (*test)) { test->tpc.a.nTrnCnt = 0; test->tpc.a.nTrnCnt1Sec = 0; test->tpc.a.nTrnCnt2Sec = 0; test->tpc.a.dDiffSum = -1; } else { test->tpc.c.tpcc_sum = 0; test->tpc.c.run_time = 0; test->tpc.c.nRounds = 0; reset_times (test); } for (i = 0; i < nThreads[nConn]; i++) { GET_EXIT_STATUS (workers[nConn][i], &result); if (!result) runStatus = result; switch (data[nConn][i].TestType) { case TPC_A: nA++; if (!test->is_unsupported && result) { nOkA++; test->tpc.a.nTrnCnt += data[nConn][i].tpc.a.nTrnCnt; test->tpc.a.nTrnCnt1Sec += data[nConn][i].tpc.a.nTrnCnt1Sec; test->tpc.a.nTrnCnt2Sec += data[nConn][i].tpc.a.nTrnCnt2Sec; if (data[nConn][i].tpc.a.dDiffSum > test->tpc.a.dDiffSum) test->tpc.a.dDiffSum = data[nConn][i].tpc.a.dDiffSum; } break; case TPC_C: nC++; if (result) { nOkC++; test->tpc.c.tpcc_sum += data[nConn][i].tpc.c.tpcc_sum; test->tpc.c.run_time += data[nConn][i].tpc.c.run_time; test->tpc.c.nRounds += data[nConn][i].tpc.c.nRounds; /* individual transaction timings */ ta_merge (&(test->tpc.c.ten_pack_ta), &(data[nConn][i].tpc.c.ten_pack_ta)); ta_merge (&(test->tpc.c.new_order_ta), &(data[nConn][i].tpc.c.new_order_ta)); ta_merge (&(test->tpc.c.payment_ta), &(data[nConn][i].tpc.c.payment_ta)); ta_merge (&(test->tpc.c.delivery_ta), &(data[nConn][i].tpc.c.delivery_ta)); ta_merge (&(test->tpc.c.slevel_ta), &(data[nConn][i].tpc.c.slevel_ta)); ta_merge (&(test->tpc.c.ostat_ta), &(data[nConn][i].tpc.c.ostat_ta)); } break; } } if (nA || nOkC) rc1 = do_login (test); if (nA) { if (nOkA < nA) pane_log ("\r\n\r\n%s - %s(%s) - %d out of %d TPC-A Threads ended with errors.\r\n", test->szName, test->szDBMS, test->szDriverName, nA - nOkA, nA); else pane_log ("\r\n\r\n%s - %s(%s) - all %d TPC-A Threads completed successfully.\r\n", test->szName, test->szDBMS, test->szDriverName, nOkA); if (nOkA == 0 && !test->szSQLState[0] && !test->szSQLError[0]) { strcpy ((char *) test->szSQLState, "ERROR"); strcpy ((char *) test->szSQLError, "All Threads ended prematurely."); } if (test->hdbc) CalcStats (runStatus, nOkA, test, test->tpc.a.nTrnCnt, test->tpc.a.nTrnCnt1Sec, test->tpc.a.nTrnCnt2Sec, test->tpc.a.dDiffSum); } if (nOkC) { pane_log ("\r\n\r\n%s - %s(%s) - %d/%d TPC-C Threads ended with no errors.\r\n", test->szName, test->szDBMS, test->szDriverName, nOkC, nC); test->tpc.c.run_time /= nOkC; if (test->hdbc) add_tpcc_result (test); } if ((nA || nOkC) && rc1) do_logout (test); if (!(nOkA || nOkC)) { pane_log ("\r\n\r\n%s - %s(%s) - All Threads ended prematurely.\r\n", test->szName, test->szDBMS, test->szDriverName); rc = 0; } } return rc; }