int criu_dump_iters(int (*more)(criu_predump_info pi)) { int ret = -1, fd = -1, uret; CriuReq req = CRIU_REQ__INIT; CriuResp *resp = NULL; saved_errno = 0; req.type = CRIU_REQ_TYPE__PRE_DUMP; req.opts = opts; ret = -EINVAL; /* * Self-dump in iterable manner is tricky and * not supported for the moment. * * Calls w/o iteration callback is, well, not * allowed either. */ if (!opts->has_pid || !more) goto exit; ret = -ECONNREFUSED; fd = criu_connect(); if (fd < 0) goto exit; while (1) { ret = send_req_and_recv_resp_sk(fd, &req, &resp); if (ret) goto exit; if (!resp->success) { ret = -EBADE; goto exit; } uret = more(NULL); if (uret < 0) { ret = uret; goto exit; } criu_resp__free_unpacked(resp, NULL); if (uret == 0) break; } req.type = CRIU_REQ_TYPE__DUMP; ret = send_req_and_recv_resp_sk(fd, &req, &resp); if (!ret) ret = (resp->success ? 0 : -EBADE); exit: if (fd >= 0) close(fd); if (resp) criu_resp__free_unpacked(resp, NULL); errno = saved_errno; return ret; }
x_gpl() { strcpy(vetitle, "[GNU ¨Ï¥Î°õ·Ó]"); more("etc/GPL", YEA); return 0; }
int Goodbye() { extern void movie(); char genbuf[200]; /* woju */ char ans[4]; setuserfile(genbuf, fn_writelog); if (more(genbuf, NA) != -1) { /* MH */ /* Àˬd¤ô²y°O¿ý®e¶q, ÁקK¦³¤H¡u¤Ù¿n¡v¤j¶q¤ô²y */ struct stat st; int writelog_limit; if (HAS_PERM(PERM_BM)) writelog_limit = MH_WRITELOGLIMIT_BM; else if (HAS_PERM(PERM_LOGINOK)) writelog_limit = MH_WRITELOGLIMIT_LOGINOK; else writelog_limit = MH_WRITELOGLIMIT_BASIC; do { char buf[80]; setuserfile(buf, fn_writelog); stat(buf, &st); if(!HAVE_PERM(PERM_SYSOP) && !HAVE_PERM(PERM_MAILLIMIT) && st.st_size / 1024 > writelog_limit) { my_outmsg_row("[1;41;37m±zªº¤ô²y°O¿ý¤w¶W¹L©w®e¶q¡AµLªk¿ï¾Ü¡u«O¯d¡v[0m", b_lines - 2); getdata(b_lines - 1, 0, "²M°£(C) ²¾¦Ü³Æ§Ñ¿ý(M) (C/M)?[M]", ans, 3, LCECHO, 0); } else { getdata(b_lines - 1, 0, "²M°£(C) ²¾¦Ü³Æ§Ñ¿ý(M) «O¯d(R) (C/M/R)?[R]", ans, 3, LCECHO, 0); } if (*ans == 'm') { fileheader mymail; char title[128], buf[80]; sethomepath(buf, cuser.userid); stampfile(buf, &mymail); mymail.savemode = 'H'; /* hold-mail flag */ mymail.filemode = FILE_READ; strcpy(mymail.owner, "[³Æ.§Ñ.¿ý]"); strcpy(mymail.title, "¼ö½u[37;41m°O¿ý[m"); if(mh_memoforward(cuser.userid, genbuf, &mymail, sizeof(mymail))) { sethomedir(title, cuser.userid); append_record(title, &mymail, sizeof(mymail)); /* MH: ³Æ§Ñ¿ý¥[¤W§@ªÌ¼ÐÃDµ¥¸ê°T...¤£µM¦b'x'Âà±H©Î¬Obuildirªº®ÉÔ ·|Äê±¼ */ #if 1 { FILE *src, *dst; char buf2[200]; time_t now; if((src = fopen(genbuf, "r")) == NULL) { sprintf(buf2, "errno: %d, genbuf:%s", errno, genbuf); log_usies("MH ", buf2); } if((dst = fopen(buf, "w")) == NULL) { sprintf(buf2, "errno: %d, buf:%s", errno, buf); log_usies("MH ", buf2); fclose(src); } now = time(NULL); sprintf(buf2, "§@ªÌ: %s\n¼ÐÃD: %s\n®É¶¡: %s\n", mymail.owner, mymail.title, ctime(&now)); fputs(buf2, dst); while(fgets(buf2, 199, src) != NULL) fputs(buf2, dst); fclose(src); fclose(dst); unlink(genbuf); } #else Rename(genbuf, buf); #endif } } else if (*ans == 'c') { char buf[80]; setuserfile(buf, fn_writelog); unlink(buf); } } while(!HAVE_PERM(PERM_SYSOP) && !HAVE_PERM(PERM_MAILLIMIT) && st.st_size / 1024 > writelog_limit && *ans != 'm' && *ans != 'c'); clear(); move(0, 0); prints("[1;44;33m °ª¶¯¤¤¾Ç-¬õ¼Ó¿v¹Ú [m"); movie(0); } /* */ getdata(b_lines - 1, 0, "±z½T©wnÂ÷¶}¡i " BOARDNAME " ¡j¶Ü(Y/N)¡H[N] ", genbuf, 3, LCECHO, 0); if (*genbuf != 'y') return 0; movie(999); if (cuser.userlevel) { getdata(b_lines - 1, 0, "(G)ÀH·¦Ó³u (M)¦«¹Ú¯¸ªø (N)¦X§@ªÀªº¨¥½×¼s³õ¡H[G] ", genbuf, 3, LCECHO, 0); if (genbuf[0] == 'm') mail_sysop(); else if (genbuf[0] == 'n') note(); } save_userrc(); #if 0 save_mailmsg(); #endif clear(); prints("[1;36m¿Ë·Rªº [33m%s(%s)[36m¡A§O§Ñ¤F¦A«×¥úÁ{[45;33m" " %s [40;36m¡I\n¥H¤U¬O±z¦b¯¸¤ºªºµù¥U¸ê®Æ:[0m\n", cuser.userid, cuser.username, BoardName); user_display(&cuser, 0); if (currmode) u_exit("EXIT "); pressanykey(); sleep(1); reset_tty(); exit(0); }
/* Be careful not to call panic from here! */ void done(const char *st1) { #ifdef WIZARD if(wizard && *st1 == 'd'){ u.uswldtim = 0; if(u.uhpmax < 0) u.uhpmax = 100; /* arbitrary */ u.uhp = u.uhpmax; pline("For some reason you are still alive."); flags.move = 0; if(multi > 0) multi = 0; else multi = -1; flags.botl = 1; return; } #endif /* WIZARD */ signal(SIGINT, done_intr); signal(SIGQUIT, done_intr); signal(SIGHUP, done_hangup); if(*st1 == 'q' && u.uhp < 1){ st1 = "died"; killer = "quit while already on Charon's boat"; } if(*st1 == 's') killer = "starvation"; else if(*st1 == 'd' && st1[1] == 'r') killer = "drowning"; else if(*st1 == 'p') killer = "panic"; else if(*st1 == 't') killer = "trickery"; else if(!index("bcd", *st1)) killer = st1; paybill(); clearlocks(); if(flags.toplin == 1) more(); if(index("bcds", *st1)){ #ifdef WIZARD if(!wizard) #endif /* WIZARD */ savebones(); if(!flags.notombstone) outrip(); } if(*st1 == 'c') killer = st1; /* after outrip() */ settty(NULL); /* does a clear_screen() */ if(!done_stopprint) printf("Goodbye %s %s...\n\n", pl_character, plname); { long int tmp; tmp = u.ugold - u.ugold0; if(tmp < 0) tmp = 0; if(*st1 == 'd' || *st1 == 'b') tmp -= tmp/10; u.urexp += tmp; u.urexp += 50 * maxdlevel; if(maxdlevel > 20) u.urexp += 1000*((maxdlevel > 30) ? 10 : maxdlevel - 20); } if(*st1 == 'e') { struct monst *mtmp; struct obj *otmp; int i; unsigned worthlessct = 0; boolean has_amulet = FALSE; killer = st1; keepdogs(); mtmp = mydogs; if(mtmp) { if(!done_stopprint) printf("You"); while(mtmp) { if(!done_stopprint) printf(" and %s", monnam(mtmp)); if(mtmp->mtame) u.urexp += mtmp->mhp; mtmp = mtmp->nmon; } if(!done_stopprint) printf("\nescaped from the dungeon with %ld points,\n", u.urexp); } else if(!done_stopprint) printf("You escaped from the dungeon with %ld points,\n", u.urexp); for(otmp = invent; otmp; otmp = otmp->nobj) { if(otmp->olet == GEM_SYM){ i = otmp->quan*objects[otmp->otyp].g_val; if(i == 0) { worthlessct += otmp->quan; continue; } u.urexp += i; if(!done_stopprint) printf("\t%s (worth %d Zorkmids),\n", doname(otmp), i); } else if(otmp->olet == AMULET_SYM) { i = (otmp->spe < 0) ? 2 : 5000; u.urexp += i; if(!done_stopprint) printf("\t%s (worth %d Zorkmids),\n", doname(otmp), i); if(otmp->spe >= 0) { has_amulet = TRUE; killer = "escaped (with amulet)"; } } } if(worthlessct) if(!done_stopprint) printf("\t%u worthless piece%s of coloured glass,\n", worthlessct, plur(worthlessct)); if(has_amulet) u.urexp *= 2; } else if(!done_stopprint) printf("You %s on dungeon level %d with %ld points,\n", st1, dlevel, u.urexp); if(!done_stopprint) printf("and %ld piece%s of gold, after %ld move%s.\n", u.ugold, plur(u.ugold), moves, plur(moves)); if(!done_stopprint) printf("You were level %u with a maximum of %d hit points when you %s.\n", u.ulevel, u.uhpmax, st1); if(*st1 == 'e' && !done_stopprint){ getret(); /* all those pieces of coloured glass ... */ cls(); } #ifdef WIZARD if(!wizard) #endif /* WIZARD */ topten(); if(done_stopprint) printf("\n\n"); exit(0); }
void StringSplitter::split(vector<string>& l) { while (more()) { l.push_back(next()); } }
bool TestExtFile::test_fileperms() { VERIFY(more(f_fileperms("test/test_ext_file.txt"), 0)); return Count(true); }
AdvancedFilterForm::AdvancedFilterForm(QWidget* parent, bool all, QList<int> descrDetDescr, QList<int> contNCont, QStringList text, bool caseSensitive, const QString& textToSettings): QDialog(parent) { atts=textToSettings; assert(descrDetDescr.count()==contNCont.count()); assert(contNCont.count()==text.count()); assert(text.count()>=ADVANCED_FILTER_MIN_ROWS && text.count()<=ADVANCED_FILTER_MAX_ROWS); rows=descrDetDescr.count(); setWindowTitle(tr("Advanced filter for constraints")); allRadio=new QRadioButton(tr("Match all of the following:")); anyRadio=new QRadioButton(tr("Match any of the following:")); if(all) allRadio->setChecked(true); else anyRadio->setChecked(true); caseSensitiveCheckBox=new QCheckBox(tr("Case sensitive")); caseSensitiveCheckBox->setChecked(caseSensitive); caseSensitiveLayout=new QHBoxLayout(); caseSensitiveLayout->addStretch(); caseSensitiveLayout->addWidget(caseSensitiveCheckBox); allAnyLayout=new QVBoxLayout(); allAnyLayout->addWidget(allRadio); allAnyLayout->addWidget(anyRadio); for(int i=0; i<ADVANCED_FILTER_MAX_ROWS; i++){ QComboBox* cb1=new QComboBox(); cb1->addItem(tr("Description")); cb1->addItem(tr("Detailed description")); if(i<rows) cb1->setCurrentIndex(descrDetDescr.at(i)); else cb1->setCurrentIndex(0); QComboBox* cb2=new QComboBox(); cb2->addItem(tr("Contains", "A text string contains other substring")); cb2->addItem(tr("Does not contain", "A text string does not contain other substring")); cb2->addItem(tr("Matches regular expr.", "A text string matches a regular expression (regexp)." " Regular expressions are a complex notion, see definition on the internet if you don't know about them or how to translate the words. " "\nDefinition from Wikipedia: 'In computing, regular expressions, also referred to as regex or regexp, provide a concise and flexible means " "for identifying strings of text, such as particular characters, words, or patterns of characters. A regular expression is written in " "a formal language that can be interpreted by a regular expression processor, a program that either serves as a parser generator or " "examines text and identifies parts that match the provided specification.")); cb2->addItem(tr("Does not match reg. expr.", "A text string does not match a regular expression (regexp)." " Regular expressions are a complex notion, see definition on the internet if you don't know about them or how to translate the words. " "\nDefinition from Wikipedia: 'In computing, regular expressions, also referred to as regex or regexp, provide a concise and flexible means " "for identifying strings of text, such as particular characters, words, or patterns of characters. A regular expression is written in " "a formal language that can be interpreted by a regular expression processor, a program that either serves as a parser generator or " "examines text and identifies parts that match the provided specification.")); if(i<rows) cb2->setCurrentIndex(contNCont.at(i)); else cb2->setCurrentIndex(0); QLineEdit* ln1=new QLineEdit(); if(i<rows) ln1->setText(text.at(i)); else ln1->setText(QString("")); descrDetDescrComboBoxList.append(cb1); contNContReNReComboBoxList.append(cb2); textLineEditList.append(ln1); } filtersLayout=new QGridLayout(); assert(descrDetDescrComboBoxList.count()==contNContReNReComboBoxList.count()); assert(descrDetDescrComboBoxList.count()==textLineEditList.count()); assert(descrDetDescrComboBoxList.count()==ADVANCED_FILTER_MAX_ROWS); for(int i=0; i<ADVANCED_FILTER_MAX_ROWS; i++){ QComboBox* cb1=descrDetDescrComboBoxList.at(i); QComboBox* cb2=contNContReNReComboBoxList.at(i); QLineEdit* ln1=textLineEditList.at(i); filtersLayout->addWidget(cb1, i, 0); filtersLayout->addWidget(cb2, i, 1); filtersLayout->addWidget(ln1, i, 2); } morePushButton=new QPushButton(tr("More")); fewerPushButton=new QPushButton(tr("Fewer")); moreFewerLayout=new QHBoxLayout(); moreFewerLayout->addWidget(morePushButton); moreFewerLayout->addWidget(fewerPushButton); moreFewerLayout->addStretch(); morePushButton->setEnabled(rows<ADVANCED_FILTER_MAX_ROWS); fewerPushButton->setEnabled(rows>ADVANCED_FILTER_MIN_ROWS); resetPushButton=new QPushButton(tr("Reset")); okPushButton=new QPushButton(tr("OK")); okPushButton->setDefault(true); cancelPushButton=new QPushButton(tr("Cancel")); buttonsLayout=new QHBoxLayout(); buttonsLayout->addWidget(resetPushButton); buttonsLayout->addStretch(); buttonsLayout->addWidget(okPushButton); buttonsLayout->addWidget(cancelPushButton); layout=new QVBoxLayout(this); layout->addLayout(allAnyLayout); layout->addLayout(filtersLayout); layout->addLayout(moreFewerLayout); layout->addLayout(caseSensitiveLayout); layout->addStretch(); layout->addLayout(buttonsLayout); connect(resetPushButton, SIGNAL(clicked()), this, SLOT(reset())); connect(okPushButton, SIGNAL(clicked()), this, SLOT(accept())); connect(cancelPushButton, SIGNAL(clicked()), this, SLOT(reject())); connect(morePushButton, SIGNAL(clicked()), this, SLOT(more())); connect(fewerPushButton, SIGNAL(clicked()), this, SLOT(fewer())); int w=this->sizeHint().width(); int h=this->sizeHint().height(); this->resize(w, h); centerWidgetOnScreen(this); restoreFETDialogGeometry(this, atts); for(int i=0; i<ADVANCED_FILTER_MAX_ROWS; i++){ descrDetDescrComboBoxList.at(i)->setVisible(i<rows); contNContReNReComboBoxList.at(i)->setVisible(i<rows); textLineEditList.at(i)->setVisible(i<rows); } assert(textLineEditList.at(0)!=NULL); textLineEditList.at(0)->selectAll(); textLineEditList.at(0)->setFocus(); }
bool more(int v1, const StringData *v2) { return more((int64_t)v1, v2); }
int dark(int fd, user_info *uin, int t) { char x=0,y=0,turn=0,xx,yy,mark=0,color=-1; char data[100],shown[2]={0,0},result=0,peace=0; time_t rest,init=time(0); int key,datac; // screenline *screen; //for save the scre data[0]=0; start(uin); add_io(fd, 0); t=t?1:0; if(!t) { /* 兩邊棋盤資料同步 */ for(yy=0; yy<8; yy++) strncat(data, chess[yy], 4); do { datac=send(fd, data, strlen(data), 0); } while(datac<0); } else { do { key=igetkey(); if (key == I_OTHERDATA) { datac= recv(fd, data, sizeof(data), 0); if(datac<=0) {add_io(0, 0); return;} for(yy=0; yy<8; yy++) strncpy(chess[yy], data+yy*4, 4); } } while(key != I_OTHERDATA); } move(18,0); clrtoeol(); do { printtt(19, 56, "%s",t==turn?"自己":"對方"); refresh(); rest=time(0); do { if(t==turn) { show_cursor(y, x, 1); move(18, 0); } key=time(0)-init; datac=ttt+rest-time(0); if(datac<1 && turn==t) { change_record(1); add_io(0,0); bell(); pressanykey("時間到囉!!..這局輸囉.. :~("); return 0; } else if(datac<1) { change_record(0); add_io(0,0); bell(); pressanykey("對方可能睡著啦~ so算你贏了!! ^^Y"); return 0; } move(22,34); prints("%2d:%2d:%2d",key/3600,(key%3600)/60,key%60); printtt(21,47,"4%d;1m %d:%2d",datac<30?1:4,datac/60,datac%60); move(b_lines,0); clrtoeol(); prints("[45;37m 說明 [47;31m [←↑↓→/jikl][30m移動 [31m\ [Enter/Space][30m確定 [31m[w][30m傳訊 [31m[p][30m和棋 [31m[q]\ [30m投降 [31m[h][30mHelp [m"); refresh(); key=igetkey(); peace=0; if(key==I_OTHERDATA) { bell(); datac= recv(fd, data, sizeof(data), 0); if(datac<=0) {add_io(0, 0); return;} if(*data=='P') { getdata(18, 0, "對方提出和棋的要求..答應和棋嗎?? (y/n) [n]", data, 4, LCECHO, 0); move(18,0); clrtoeol(); do { datac=send(fd, data, 1, 0); } while(datac<0); if(*data=='y') { change_record(2); add_io(0, 0); pressanykey("雙方握手言和 :)"); return 0; } key=0; } else if(*data=='Q') { change_record(0); add_io(0, 0); pressanykey("耶耶耶..對方投降了.. ^^Y"); return 0; } else { yy=data[0]-1; xx=data[1]-1; y=data[2]-1; x=data[3]-1; if(darked(chess[y][x])) { /* 對方翻棋 */ if(color<0) { color=nexturn(red(chess[y][x])); show_color(color); } show_chess(y, x, chess[y][x], 0); chess[y][x]--; turn=nexturn(turn); } else { if(chess[y][x]) result=show_eaten(chess[y][x],shown[t]++,0); move_chess(y,x,yy,xx,&mark,&turn); } } } switch(key) { case 'h': { extern screenline* big_picture; screenline* screen0 = calloc(t_lines, sizeof(screenline)); memcpy(screen0, big_picture, t_lines * sizeof(screenline)); more("game/dark.help",YEA); //* 改成自己的路徑 memcpy(big_picture, screen0, t_lines * sizeof(screenline)); free(screen0); redoscr(); } break; case 'w': { extern screenline* big_picture; screenline* screen0 = calloc(2, sizeof(screenline)); memcpy(screen0, big_picture, 2 * sizeof(screenline)); my_write(uin->pid, "傳訊息: "); memcpy(big_picture, screen0, 2 * sizeof(screenline)); free(screen0); redoscr(); } break; case 'p': if(t==turn) { int keyy; if(peace) break; bell(); getdata(18, 0, "真的要和棋嗎?? (y/n) [n]", data, 4, LCECHO, 0); move(18, 0); clrtoeol(); if(*data!='y') break; prints("[33;1m詢問對手是否同意和棋..[5m請稍後... :)[m"); refresh(); peace=1; do { datac=send(fd, "P", 1, 0); } while(datac<0); do { keyy=igetkey(); if(keyy==I_OTHERDATA) { datac= recv(fd, data, sizeof(data), 0); if(datac<=0) {add_io(0, 0); return 0;} move(18, 0); clrtoeol(); if(*data=='y') { change_record(2); add_io(0, 0); pressanykey("雙方握手言和 :)"); return 0; } else pressanykey("對方不同意和棋.. :~"); } } while (keyy!=I_OTHERDATA); } break; case 'q': if(t==turn) { bell(); getdata(18, 0, "真的要投降嗎?? (y/n) [n]", data, 4, LCECHO, 0); move(18,0); clrtoeol(); if(*data!='y') break; do { datac=send(fd, "Q", 1, 0); } while(datac<0); change_record(1); add_io(0, 0); pressanykey("啊啊啊..我不行了..投降~ ^^;"); return 0; } break; default: if(t!=turn) key=0; break; } if(t!=turn) continue; switch(key) { case ' ': case 13: if(!mark && darked(chess[y][x])) { /* 翻棋 */ if(color<0) { color=red(chess[y][x]); show_color(color); } show_chess(y, x, chess[y][x], 0); chess[y][x]--; turn=nexturn(turn); } else if(mark) { /* 已 mark 的處理 */ if(!chess[y][x] && nexto(x-xx,y-yy)) /* 移動 */ move_chess(y,x,yy,xx,&mark,&turn); else if(!mychess(y,x,color) && !darked(chess[y][x])) { /* 吃對方的棋子 */ if(nexto2(x-xx,y-yy) && mark==6) { /* mark 起來的棋子不在隔壁(炮) */ char i,tmp=0; if(x==xx) for(i=min(y,yy)+1; i<max(y,yy); i++) tmp+=(chess[i][x]!=0); else for(i=min(x,xx)+1; i<max(x,xx); i++) tmp+=(chess[y][i]!=0); if(tmp==1 && chess[y][x]) { result=show_eaten(chess[y][x],shown[nexturn(t)]++,1); move_chess(y,x,yy,xx,&mark,&turn); } else cancel_mark(yy,xx,&mark,&key); } else { /* mark 起來的棋子在隔壁 */ if( nexto(x-xx,y-yy) && ((mark==7 && rank(chess[y][x])==1) || /* 小兵立大功 */ ( mark<=rank(chess[y][x]) && rank(chess[y][x])-mark!=6 )) ) { /* 將軍怕小兵 */ result=show_eaten(chess[y][x],shown[nexturn(t)]++,1); move_chess(y,x,yy,xx,&mark,&turn); } else cancel_mark(yy,xx,&mark,&key); } } else cancel_mark(yy,xx,&mark,&key); /* 不能移不能吃 */ } /* mark 起來 */ else if(!mark && chess[y][x] && mychess(y,x,color)) { /* mark 起來 */ show_chess(y, x, chess[y][x], 1); mark=rank(chess[y][x]); xx=x; yy=y; key=0; } else key=0; break; case 'u': if(mark) cancel_mark(yy, xx, &mark, &key); break; case KEY_LEFT: case 'j': show_cursor(y, x, 0); y=y==0?7:y-1; break; case KEY_RIGHT: case 'l': show_cursor(y, x, 0); y=y==7?0:y+1; break; case KEY_UP: case 'i': show_cursor(y, x, 0); x=x==0?3:x-1; break; case KEY_DOWN: case 'k': show_cursor(y, x, 0); x=x==3?0:x+1; break; } } while(key!=' ' && key!=13 && key!=I_OTHERDATA); show_cursor(y, x, 0); if(t==turn) continue; /* turn已經動過..so是相反的值 */ data[0]=yy+1; data[1]=xx+1; data[2]=y+1; data[3]=x+1; do { datac=send(fd, data, 4, 0); } while(datac<0); } while(!result); add_io(0, 0); if(!turn) { FILE *fs; init=time(0)-init; if(fs=fopen("log/dark.log","a+")) //* 可改成自己想要的路徑 { fprintf(fs,"%s win %s %d:%d\n",currutmp->userid,uin->userid,init/60,init%60); fclose(fs); } } change_record(1); pressanykey("恭禧你%s了 ^^Y",t==turn?"輸":"贏"); }
bool not_more(CVarRef v1, CVarRef v2) { if (v1.is(KindOfArray) && v2.is(KindOfArray)) { return !v1.toArray().more(v2.toArray(), false); } return !more(v1, v2); }
bool more(int v1, CStrRef v2) { return more((int64)v1, v2); }
int doread() { struct obj *scroll; boolean confused = (Confusion != 0); boolean known = FALSE; scroll = getobj("?", "read"); if(!scroll) return(0); if(!scroll->dknown && Blind) { pline("Being blind, you cannot read the formula on the scroll."); return(0); } if(Blind) pline("As you pronounce the formula on it, the scroll disappears."); else pline("As you read the scroll, it disappears."); if(confused) pline("Being confused, you mispronounce the magic words ... "); switch(scroll->otyp) { #ifdef MAIL case SCR_MAIL: readmail(/* scroll */); break; #endif /* MAIL */ case SCR_ENCHANT_ARMOR: { struct obj *otmp = some_armor(); if(!otmp) { strange_feeling(scroll,"Your skin glows then fades."); return(1); } if(confused) { pline("Your %s glows silver for a moment.", objects[otmp->otyp].oc_name); otmp->rustfree = 1; break; } if(otmp->spe > 3 && rn2(otmp->spe)) { pline("Your %s glows violently green for a while, then evaporates.", objects[otmp->otyp].oc_name); useup(otmp); break; } pline("Your %s glows green for a moment.", objects[otmp->otyp].oc_name); otmp->cursed = 0; otmp->spe++; break; } case SCR_DESTROY_ARMOR: if(confused) { struct obj *otmp = some_armor(); if(!otmp) { strange_feeling(scroll,"Your bones itch."); return(1); } pline("Your %s glows purple for a moment.", objects[otmp->otyp].oc_name); otmp->rustfree = 0; break; } if(uarm) { pline("Your armor turns to dust and falls to the floor!"); useup(uarm); } else if(uarmh) { pline("Your helmet turns to dust and is blown away!"); useup(uarmh); } else if(uarmg) { pline("Your gloves vanish!"); useup(uarmg); selftouch("You"); } else { strange_feeling(scroll,"Your skin itches."); return(1); } break; case SCR_CONFUSE_MONSTER: if(confused) { pline("Your hands begin to glow purple."); Confusion += rnd(100); } else { pline("Your hands begin to glow blue."); u.umconf = 1; } break; case SCR_SCARE_MONSTER: { int ct = 0; struct monst *mtmp; for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) if(cansee(mtmp->mx,mtmp->my)) { if(confused) mtmp->mflee = mtmp->mfroz = mtmp->msleep = 0; else mtmp->mflee = 1; ct++; } if(!ct) { if(confused) pline("You hear sad wailing in the distance."); else pline("You hear maniacal laughter in the distance."); } break; } case SCR_BLANK_PAPER: if(confused) pline("You see strange patterns on this scroll."); else pline("This scroll seems to be blank."); break; case SCR_REMOVE_CURSE: { struct obj *obj; if(confused) pline("You feel like you need some help."); else pline("You feel like someone is helping you."); for(obj = invent; obj ; obj = obj->nobj) if(obj->owornmask) obj->cursed = confused; if(Punished && !confused) { Punished = 0; freeobj(uchain); unpobj(uchain); free(uchain); uball->spe = 0; uball->owornmask &= ~W_BALL; uchain = uball = (struct obj *) 0; } break; } case SCR_CREATE_MONSTER: { int cnt = 1; if(!rn2(73)) cnt += rnd(4); if(confused) cnt += 12; while(cnt--) (void) makemon(confused ? PM_ACID_BLOB : (struct permonst *) 0, u.ux, u.uy); break; } case SCR_ENCHANT_WEAPON: if(uwep && confused) { pline("Your %s glows silver for a moment.", objects[uwep->otyp].oc_name); uwep->rustfree = 1; } else if(!chwepon(scroll, 1)) /* tests for !uwep */ return(1); break; case SCR_DAMAGE_WEAPON: if(uwep && confused) { pline("Your %s glows purple for a moment.", objects[uwep->otyp].oc_name); uwep->rustfree = 0; } else if(!chwepon(scroll, -1)) /* tests for !uwep */ return(1); break; case SCR_TAMING: { int i,j; int bd = confused ? 5 : 1; struct monst *mtmp; for(i = -bd; i <= bd; i++) for(j = -bd; j <= bd; j++) if ((mtmp = m_at(u.ux+i, u.uy+j))) (void) tamedog(mtmp, NULL); break; } case SCR_GENOCIDE: { extern char genocided[], fut_geno[]; char buf[BUFSZ]; struct monst *mtmp, *mtmp2; pline("You have found a scroll of genocide!"); known = TRUE; if(confused) *buf = u.usym; else do { pline("What monster do you want to genocide (Type the letter)? "); getlin(buf); } while(strlen(buf) != 1 || !monstersym(*buf)); if(!strchr(fut_geno, *buf)) charcat(fut_geno, *buf); if(!strchr(genocided, *buf)) charcat(genocided, *buf); else { pline("Such monsters do not exist in this world."); break; } for(mtmp = fmon; mtmp; mtmp = mtmp2){ mtmp2 = mtmp->nmon; if(mtmp->data->mlet == *buf) mondead(mtmp); } pline("Wiped out all %c's.", *buf); if(*buf == u.usym) { killer = "scroll of genocide"; u.uhp = -1; } break; } case SCR_LIGHT: if(!Blind) known = TRUE; litroom(!confused); break; case SCR_TELEPORTATION: if(confused) level_tele(); else { #ifdef QUEST int oux = u.ux, ouy = u.uy; tele(); if(dist(oux, ouy) > 100) known = TRUE; #else /* QUEST */ int uroom = inroom(u.ux, u.uy); tele(); if(uroom != inroom(u.ux, u.uy)) known = TRUE; #endif /* QUEST */ } break; case SCR_GOLD_DETECTION: /* Unfortunately this code has become slightly less elegant, now that gold and traps no longer are of the same type. */ if(confused) { struct trap *ttmp; if(!ftrap) { strange_feeling(scroll, "Your toes stop itching."); return(1); } else { for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap) if(ttmp->tx != u.ux || ttmp->ty != u.uy) goto outtrapmap; /* only under me - no separate display required */ pline("Your toes itch!"); break; outtrapmap: cls(); for(ttmp = ftrap; ttmp; ttmp = ttmp->ntrap) at(ttmp->tx, ttmp->ty, '$'); prme(); pline("You feel very greedy!"); } } else { struct gold *gtmp; if(!fgold) { strange_feeling(scroll, "You feel materially poor."); return(1); } else { known = TRUE; for(gtmp = fgold; gtmp; gtmp = gtmp->ngold) if(gtmp->gx != u.ux || gtmp->gy != u.uy) goto outgoldmap; /* only under me - no separate display required */ pline("You notice some gold between your feet."); break; outgoldmap: cls(); for(gtmp = fgold; gtmp; gtmp = gtmp->ngold) at(gtmp->gx, gtmp->gy, '$'); prme(); pline("You feel very greedy, and sense gold!"); } } /* common sequel */ more(); docrt(); break; case SCR_FOOD_DETECTION: { int ct = 0, ctu = 0; struct obj *obj; char foodsym = confused ? POTION_SYM : FOOD_SYM; for(obj = fobj; obj; obj = obj->nobj) if(obj->olet == FOOD_SYM) { if(obj->ox == u.ux && obj->oy == u.uy) ctu++; else ct++; } if(!ct && !ctu) { strange_feeling(scroll,"Your nose twitches."); return(1); } else if(!ct) { known = TRUE; pline("You smell %s close nearby.", confused ? "something" : "food"); } else { known = TRUE; cls(); for(obj = fobj; obj; obj = obj->nobj) if(obj->olet == foodsym) at(obj->ox, obj->oy, FOOD_SYM); prme(); pline("Your nose tingles and you smell %s!", confused ? "something" : "food"); more(); docrt(); } break; } case SCR_IDENTIFY: /* known = TRUE; */ if(confused) pline("You identify this as an identify scroll."); else pline("This is an identify scroll."); useup(scroll); objects[SCR_IDENTIFY].oc_name_known = 1; if(!confused) while( !ggetobj("identify", identify, rn2(5) ? 1 : rn2(5)) && invent ); return(1); case SCR_MAGIC_MAPPING: { struct rm *lev; int num, zx, zy; known = TRUE; pline("On this scroll %s a map!", confused ? "was" : "is"); for(zy = 0; zy < ROWNO; zy++) for(zx = 0; zx < COLNO; zx++) { if(confused && rn2(7)) continue; lev = &(levl[zx][zy]); if((num = lev->typ) == 0) continue; if(num == SCORR) { lev->typ = CORR; lev->scrsym = CORR_SYM; } else if(num == SDOOR) { lev->typ = DOOR; lev->scrsym = '+'; /* do sth in doors ? */ } else if(lev->seen) continue; #ifndef QUEST if(num != ROOM) #endif /* QUEST */ { lev->seen = lev->new = 1; if(lev->scrsym == ' ' || !lev->scrsym) newsym(zx,zy); else on_scr(zx,zy); } } break; } case SCR_AMNESIA: { int zx, zy; known = TRUE; for(zx = 0; zx < COLNO; zx++) for(zy = 0; zy < ROWNO; zy++) if(!confused || rn2(7)) if(!cansee(zx,zy)) levl[zx][zy].seen = 0; docrt(); pline("Thinking of Maud you forget everything else."); break; } case SCR_FIRE: { int num; struct monst *mtmp; known = TRUE; if(confused) { pline("The scroll catches fire and you burn your hands."); losehp(1, "scroll of fire"); } else { pline("The scroll erupts in a tower of flame!"); if(Fire_resistance) pline("You are uninjured."); else { num = rnd(6); u.uhpmax -= num; losehp(num, "scroll of fire"); } } num = (2*num + 1)/3; for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) { if(dist(mtmp->mx,mtmp->my) < 3) { mtmp->mhp -= num; if(strchr("FY", mtmp->data->mlet)) mtmp->mhp -= 3*num; /* this might well kill 'F's */ if(mtmp->mhp < 1) { killed(mtmp); break; /* primitive */ } } } break; } case SCR_PUNISHMENT: known = TRUE; if(confused) { pline("You feel guilty."); break; } pline("You are being punished for your misbehaviour!"); if(Punished){ pline("Your iron ball gets heavier."); uball->owt += 15; break; } Punished = INTRINSIC; setworn(mkobj_at(CHAIN_SYM, u.ux, u.uy), W_CHAIN); setworn(mkobj_at(BALL_SYM, u.ux, u.uy), W_BALL); uball->spe = 1; /* special ball (see save) */ break; default: impossible("What weird language is this written in? (%u)", scroll->otyp); }
mkshop(){ register struct mkroom *sroom; register int sh,sx,sy,i = -1; register char let; int roomno; register struct monst *shk; #ifdef WIZARD /* first determine shoptype */ if(wizard){ extern char *getenv(); register char *ep = getenv("SHOPTYPE"); if(ep){ if(*ep == 'z' || *ep == 'Z'){ mkzoo(ZOO); return; } if(*ep == 'm' || *ep == 'M'){ mkzoo(MORGUE); return; } if(*ep == 'b' || *ep == 'B'){ mkzoo(BEEHIVE); return; } if(*ep == 's' || *ep == 'S'){ mkswamp(); return; } for(i=0; shtypes[i]; i++) if(*ep == shtypes[i]) break; goto gottype; } } gottype: #endif WIZARD for(sroom = &rooms[0], roomno = 0; ; sroom++, roomno++){ if(sroom->hx < 0) return; if(sroom - rooms >= nroom) { pline("rooms not closed by -1?"); return; } if(sroom->rtype) continue; if(!sroom->rlit || has_dnstairs(sroom) || has_upstairs(sroom)) continue; if( #ifdef WIZARD (wizard && getenv("SHOPTYPE") && sroom->doorct != 0) || #endif WIZARD sroom->doorct == 1) break; } if(i < 0) { /* shoptype not yet determined */ register int j; for(j = rn2(100), i = 0; (j -= shprobs[i])>= 0; i++) if(!shtypes[i]) break; /* superfluous */ if(isbig(sroom) && i + SHOPBASE == WANDSHOP) i = GENERAL-SHOPBASE; } sroom->rtype = i + SHOPBASE; let = shtypes[i]; sh = sroom->fdoor; sx = doors[sh].x; sy = doors[sh].y; if(sx == sroom->lx-1) sx++; else if(sx == sroom->hx+1) sx--; else if(sy == sroom->ly-1) sy++; else if(sy == sroom->hy+1) sy--; else { #ifdef WIZARD /* This is said to happen sometimes, but I've never seen it. */ if(wizard) { register int j = sroom->doorct; extern int doorindex; pline("Where is shopdoor?"); pline("Room at (%d,%d),(%d,%d).", sroom->lx, sroom->ly, sroom->hx, sroom->hy); pline("doormax=%d doorct=%d fdoor=%d", doorindex, sroom->doorct, sh); while(j--) { pline("door [%d,%d]", doors[sh].x, doors[sh].y); sh++; } more(); } #endif WIZARD return; } if(!(shk = makemon(PM_SHK,sx,sy))) return; shk->isshk = shk->mpeaceful = 1; shk->msleep = 0; shk->mtrapseen = ~0; /* we know all the traps already */ ESHK->shoproom = roomno; ESHK->shoplevel = dlevel; ESHK->shd = doors[sh]; ESHK->shk.x = sx; ESHK->shk.y = sy; ESHK->robbed = 0; ESHK->visitct = 0; ESHK->following = 0; shk->mgold = 1000 + 30*rnd(100); /* initial capital */ ESHK->billct = 0; findname(ESHK->shknam, let); for(sx = sroom->lx; sx <= sroom->hx; sx++) for(sy = sroom->ly; sy <= sroom->hy; sy++){ register struct monst *mtmp; if((sx == sroom->lx && doors[sh].x == sx-1) || (sx == sroom->hx && doors[sh].x == sx+1) || (sy == sroom->ly && doors[sh].y == sy-1) || (sy == sroom->hy && doors[sh].y == sy+1)) continue; if(rn2(100) < dlevel && !m_at(sx,sy) && (mtmp = makemon(PM_MIMIC, sx, sy))){ mtmp->mimic = 1; mtmp->mappearance = (let && rn2(10) < dlevel) ? let : ']'; continue; } (void) mkobj_at(let, sx, sy); } }
int main (int argc, char *argv[]) { FILE *fpi = stdin, *fpo = stdout, *fpmap; struct mapper mapper; struct record record; struct map *map; struct field *field; struct buf *val_buf = buf_new(1024), *xml_buf = NULL; char *xml_key, *key_buf, prev_seq[9], seq[9], tag[4], ind1, ind2; int file_args = 0, array = 1, xml = 0, mapfile = 0, count = 0, first = 0, first_sub = 0, first_char, skip_sub = 0, c, i, j; tag[3] = '\0'; for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "--usage") || !strcmp(argv[i], "--help") || !strcmp(argv[i], "-?")) { usage(argv[0], 0); } else if (!strcmp(argv[i], "--newline")) { array = 0; } else if (!strcmp(argv[i], "--xml")) { xml = 1; } else if (!strcmp(argv[i], "--json")) { xml = 0; } else if (!strcmp(argv[i], "--xmlkey")) { if (++i == argc) usage(argv[0], 1); xml_key = argv[i]; xml_buf = buf_new(2048); } else if (!strcmp(argv[i], "--mapfile")) { if (++i == argc) usage(argv[0], 1); key_buf = malloc(256); if ((fpmap = fopen(argv[i], "r")) == NULL) { fprintf(stderr, "Can't open %s for reading\n", argv[i]); return 1; } if (!mapfile) { mapfile = 1; mapper.size = mapper.grow = 100; mapper.used = 0; mapper.maps = malloc(sizeof(struct map) * mapper.size); record.size = record.grow = 100; record.used = 0; record.fields = malloc(sizeof(struct field) * record.size); for (j = 0; j < record.size; j++) { record.fields[j].val = buf_new(1024); } } while ((c = getc(fpmap)) != EOF) { if (isspace(c)) continue; if (c == '#') { while (more(c = getc(fpmap))); continue; } map = mapper.maps + mapper.used; map->key = NULL; map->tag[0] = c; map->tag[1] = getc(fpmap); map->tag[2] = getc(fpmap); if (isspace(c = getc(fpmap))) { map->op = '\0'; } else { map->op = c; fscanf(fpmap, "%s", map->subfields); } fscanf(fpmap, "%s", key_buf); for (j = 0; j < mapper.used; j++) { if (!strcmp(mapper.maps[j].key, key_buf)) { map->key = mapper.maps[j].key; break; } } if (!map->key) { map->key = malloc(strlen(key_buf) + 1); strcpy(map->key, key_buf); } mapper.used++; if (mapper.used == mapper.size) { mapper.size += mapper.grow; mapper.maps = realloc(mapper.maps, sizeof(struct map) * mapper.size); } } free(key_buf); fclose(fpmap); } else { switch (++file_args) { case 1: if ((fpi = fopen(argv[i], "r")) == NULL) { fprintf(stderr, "Can't open %s for reading\n", argv[i]); return 1; } break; case 2: if ((fpo = fopen(argv[i], "w")) == NULL) { fprintf(stderr, "Can't open %s for writing\n", argv[i]); return 1; } break; } } } if (xml) { fputs("<?xml version=\"1.0\" encoding=\"UTF-8\"?><collection xmlns=\"http://www.loc.gov/MARC21/slim\">", fpo); } else if (array) { fputs("[", fpo); } while ((c = getc(fpi)) != EOF) { if (isspace(c)) continue; seq[0] = c; for (i = 1; i < 9; ++i) seq[i] = getc(fpi); getc(fpi); for (i = 0; i < 3; ++i) tag[i] = getc(fpi); ind1 = getc(fpi); ind2 = getc(fpi); for (i = 0; i < 3; ++i) getc(fpi); val_buf->used = 0; while (more(c = getc(fpi))) buf_add(val_buf, c); buf_add(val_buf, '\0'); if (!count || strncmp(seq, prev_seq, 9)) { if (count++) { if (xml_buf) { buf_add_str(xml_buf, "</record>"); buf_add(xml_buf, '\0'); } if (mapfile) { fputs("{", fpo); for (i = 0; i < record.used; i++) { field = record.fields + i; if (i) putc(',', fpo); buf_add(field->val, '\0'); fprintf(fpo, "\"%s\":[%s]", field->key, field->val->str); } if (xml_buf) { if (i) putc(',', fpo); fprintf(fpo, "\"%s\":\"", xml_key); put_json_str(xml_buf->str, fpo); putc('\"', fpo); } fputs(array ? "},\n" : "}\n", fpo); record.used = 0; } else if (xml) { fputs("</record>\n", fpo); } else { fputs(array ? "]},\n" : "]}\n", fpo); } if (xml_buf) { xml_buf->used = 0; } } } for (i = 0; i < 9; ++i) prev_seq[i] = seq[i]; if (mapfile) { for (i = 0; i < mapper.used; i++) { map = mapper.maps + i; if ((map->tag[0] == '*' || map->tag[0] == tag[0]) && (map->tag[1] == '*' || map->tag[1] == tag[1]) && (map->tag[2] == '*' || map->tag[2] == tag[2])) { field = NULL; for (j = 0; j < record.used; j++) { field = record.fields + j; if (field->key == map->key) { break; } field = NULL; } if (!field) { field = record.fields + record.used; field->key = map->key; field->val->used = 0; record.used++; } skip_sub = 0; first_char = 1; for (j = 0; j < val_buf->used-1; j++) { if (val_buf->str[j] == '$' && val_buf->str[j+1] == '$') { j+= 2; if ( (map->op == '+' && strchr(map->subfields, val_buf->str[j]) == NULL) || (map->op == '-' && strchr(map->subfields, val_buf->str[j]) != NULL) ) { skip_sub = 1; continue; } skip_sub = 0; j++; if (j == val_buf->used-1) break; } if (!skip_sub) { if (first_char) { if (field->val->used) buf_add(field->val, ','); buf_add(field->val, '"'); first_char = 0; } if (val_buf->str[j] == '"') buf_add(field->val, '\\'); if (val_buf->str[j] == '\\') buf_add(field->val, '\\'); buf_add(field->val, val_buf->str[j]); } } if (!first_char) buf_add(field->val, '"'); } } } if (!strncmp(tag, "FMT", 3)) continue; if (!strncmp(tag, "LDR", 3)) { if (xml_buf) { buf_add_str(xml_buf, "<record><leader>"); buf_add_str(xml_buf, val_buf->str); buf_add_str(xml_buf, "</leader>"); } else if (xml) { fprintf(fpo, "<record><leader>%s</leader>", val_buf->str); } else if (!mapfile) { fprintf(fpo, "{\"leader\":\"%s\",\"fields\":[", val_buf->str); } first = 1; continue; } if (first) { first = 0; } else if (!xml_buf && !xml && !mapfile) { putc(',', fpo); } if (tag[0] == '0' && tag[1] == '0') { if (xml_buf) { buf_add_str(xml_buf, "<controlfield tag=\""); for (i = 0; i < 3; i++) buf_add(xml_buf, tag[i]); buf_add_str(xml_buf, "\">"); buf_add_xml_str(xml_buf, val_buf->str); buf_add_str(xml_buf, "</controlfield>"); } else if (xml) { fprintf(fpo, "<controlfield tag=\"%3s\">", tag); for (i = 0; i < val_buf->used-1; i++) put_xml(val_buf->str[i], fpo); fputs("</controlfield>", fpo); } else if (!mapfile) { fprintf(fpo, "{\"%3s\":\"", tag); for (i = 0; i < val_buf->used-1; i++) put_json(val_buf->str[i], fpo); fputs("\"}", fpo); } } else { if (xml_buf) { buf_add_str(xml_buf, "<datafield tag=\""); for (i = 0; i < 3; i++) buf_add(xml_buf, tag[i]); buf_add_str(xml_buf, "\" ind1=\""); buf_add(xml_buf, ind1); buf_add_str(xml_buf, "\" ind2=\""); buf_add(xml_buf, ind2); buf_add_str(xml_buf, "\">"); } else if (xml) { fprintf(fpo, "<datafield tag=\"%3s\" ind1=\"%c\" ind2=\"%c\">", tag, ind1, ind2); } else if (!mapfile) { fprintf(fpo, "{\"%3s\":{\"ind1\":\"%c\",\"ind2\":\"%c\",\"subfields\":[", tag, ind1, ind2); } first_sub = 1; for (i = 0; i < val_buf->used-1; i++) { if (val_buf->str[i] == '$' && val_buf->str[i+1] == '$') { i+= 2; if (first_sub) { first_sub = 0; } else { if (xml_buf) { buf_add_str(xml_buf, "</subfield>"); } else if (xml) { fputs("</subfield>", fpo); } else if (!mapfile) { fputs("\"},", fpo); } } if (xml_buf) { buf_add_str(xml_buf, "<subfield code=\""); buf_add(xml_buf, val_buf->str[i]); buf_add_str(xml_buf, "\">"); } else if (xml) { fprintf(fpo, "<subfield code=\"%c\">", val_buf->str[i]); } else if (!mapfile) { fprintf(fpo, "{\"%c\":\"", val_buf->str[i]); } continue; } if (xml_buf) { buf_add_xml(xml_buf, val_buf->str[i]); } else if (xml) { put_xml(val_buf->str[i], fpo); } else if (!mapfile) { put_json(val_buf->str[i], fpo); } } if (!first_sub) { if (xml_buf) { buf_add_str(xml_buf, "</subfield>"); } else if (xml) { fputs("</subfield>", fpo); } else if (!mapfile) { fputs("\"}", fpo); } } if (xml_buf) { buf_add_str(xml_buf, "</datafield>"); } else if (xml) { fputs("</datafield>", fpo); } else if (!mapfile) { fputs("]", fpo); } } } if (count && mapfile) { fputs("{", fpo); for (i = 0; i < record.used; i++) { field = record.fields + i; if (i) putc(',', fpo); buf_add(field->val, '\0'); fprintf(fpo, "\"%s\":[%s]", field->key, field->val->str); } if (xml_buf) { if (i) putc(',', fpo); fprintf(fpo, "\"%s\":\"", xml_key); put_json_str(xml_buf->str, fpo); putc('\"', fpo); } } if (xml) { if (count) fputs("</record>", fpo); fputs("</collection>", fpo); } else { if (count) fputs("}", fpo); if (array) fputs("]", fpo); } fclose(fpi); fclose(fpo); return 0; }
AdvancedSearchDialog::AdvancedSearchDialog(const QString &defaultName, const PlaylistSearch &defaultSearch, QWidget *parent, const char *name) : KDialog(parent) { setCaption( i18n("Create Search Playlist") ); setButtons( Ok|Cancel ); setDefaultButton( Ok ); setObjectName( QLatin1String( name ) ); setModal(true); KVBox *mw = new KVBox(this); setMainWidget(mw); KHBox *box = new KHBox(mw); box->setSpacing(5); new QLabel(i18n("Playlist name:"), box); m_playlistNameLineEdit = new KLineEdit(defaultName, box); QGroupBox *criteriaGroupBox = new QGroupBox(i18n("Search Criteria"), mw); mw->setStretchFactor(criteriaGroupBox, 1); m_criteriaLayout = new QVBoxLayout; QGroupBox *group = new QGroupBox(); m_matchAnyButton = new QRadioButton(i18n("Match any of the following")); m_matchAllButton = new QRadioButton(i18n("Match all of the following")); QHBoxLayout *hgroupbox = new QHBoxLayout; hgroupbox->addWidget(m_matchAnyButton); hgroupbox->addWidget(m_matchAllButton); group->setLayout(hgroupbox); m_criteriaLayout->addWidget(group); if(defaultSearch.isNull()) { SearchLine *newSearchLine = new SearchLine(this); m_searchLines.append(newSearchLine); m_criteriaLayout->addWidget(newSearchLine); newSearchLine = new SearchLine(this); m_searchLines.append(newSearchLine); m_criteriaLayout->addWidget(newSearchLine); m_matchAnyButton->setChecked(true); } else { PlaylistSearch::ComponentList components = defaultSearch.components(); for(PlaylistSearch::ComponentList::ConstIterator it = components.constBegin(); it != components.constEnd(); ++it) { SearchLine *s = new SearchLine(this); s->setSearchComponent(*it); m_searchLines.append(s); m_criteriaLayout->addWidget(s); } if(defaultSearch.searchMode() == PlaylistSearch::MatchAny) m_matchAnyButton->setChecked(true); else m_matchAllButton->setChecked(true); } QWidget *buttons = new QWidget(mw); QHBoxLayout *l = new QHBoxLayout(buttons); l->setSpacing(5); l->setMargin(0); KPushButton *clearButton = new KPushButton(KStandardGuiItem::clear(), buttons); connect(clearButton, SIGNAL(clicked()), SLOT(clear())); l->addWidget(clearButton); l->addStretch(1); m_moreButton = new KPushButton(i18nc("additional search options", "More"), buttons); connect(m_moreButton, SIGNAL(clicked()), SLOT(more())); l->addWidget(m_moreButton); m_fewerButton = new KPushButton(i18n("Fewer"), buttons); connect(m_fewerButton, SIGNAL(clicked()), SLOT(fewer())); l->addWidget(m_fewerButton); m_criteriaLayout->addStretch(1); criteriaGroupBox->setLayout(m_criteriaLayout); m_playlistNameLineEdit->setFocus(); }
bool DRect::isInside(const DRect &r, double percent) const { return ( more(r._top, _top, percent) && less(r._bottom, _bottom, percent) && more(r._left, _left, percent) && less(r._right, _right, percent) ); }
void start_more(string msg) { write("\n"); more("", explode(msg, "\n"), 0); }
int dodrink() { struct obj *otmp,*objs; struct monst *mtmp; int unkn = 0, nothing = 0; otmp = getobj("!", "drink"); if(!otmp) return(0); if(!strcmp(objects[otmp->otyp].oc_descr, "smoky") && !rn2(13)) { ghost_from_bottle(); goto use_it; } switch(otmp->otyp){ case POT_RESTORE_STRENGTH: unkn++; pline("Wow! This makes you feel great!"); if(u.ustr < u.ustrmax) { u.ustr = u.ustrmax; flags.botl = 1; } break; case POT_BOOZE: unkn++; pline("Ooph! This tastes like liquid fire!"); Confusion += d(3,8); /* the whiskey makes us feel better */ if(u.uhp < u.uhpmax) losehp(-1, "bottle of whiskey"); if(!rn2(4)) { pline("You pass out."); multi = -rnd(15); nomovemsg = "You awake with a headache."; } break; case POT_INVISIBILITY: if(Invis || See_invisible) nothing++; else { if(!Blind) pline("Gee! All of a sudden, you can't see yourself."); else pline("You feel rather airy."), unkn++; newsym(u.ux,u.uy); } Invis += rn1(15,31); break; case POT_FRUIT_JUICE: pline("This tastes like fruit juice."); lesshungry(20); break; case POT_HEALING: pline("You begin to feel better."); flags.botl = 1; u.uhp += rnd(10); if(u.uhp > u.uhpmax) u.uhp = ++u.uhpmax; if(Blind) Blind = 1; /* see on next move */ if(Sick) Sick = 0; break; case POT_PARALYSIS: if(Levitation) pline("You are motionlessly suspended."); else pline("Your feet are frozen to the floor!"); nomul(-(rn1(10,25))); break; case POT_MONSTER_DETECTION: if(!fmon) { strange_feeling(otmp, "You feel threatened."); return(1); } else { cls(); for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) if(mtmp->mx > 0) at(mtmp->mx,mtmp->my,mtmp->data->mlet); prme(); pline("You sense the presence of monsters."); more(); docrt(); } break; case POT_OBJECT_DETECTION: if(!fobj) { strange_feeling(otmp, "You feel a pull downward."); return(1); } else { for(objs = fobj; objs; objs = objs->nobj) if(objs->ox != u.ux || objs->oy != u.uy) goto outobjmap; pline("You sense the presence of objects close nearby."); break; outobjmap: cls(); for(objs = fobj; objs; objs = objs->nobj) at(objs->ox,objs->oy,objs->olet); prme(); pline("You sense the presence of objects."); more(); docrt(); } break; case POT_SICKNESS: pline("Yech! This stuff tastes like poison."); if(Poison_resistance) pline("(But in fact it was biologically contaminated orange juice.)"); losestr(rn1(4,3)); losehp(rnd(10), "contaminated potion"); break; case POT_CONFUSION: if(!Confusion) pline("Huh, What? Where am I?"); else nothing++; Confusion += rn1(7,16); break; case POT_GAIN_STRENGTH: pline("Wow do you feel strong!"); if(u.ustr >= 118) break; /* > 118 is impossible */ if(u.ustr > 17) u.ustr += rnd(118-u.ustr); else u.ustr++; if(u.ustr > u.ustrmax) u.ustrmax = u.ustr; flags.botl = 1; break; case POT_SPEED: if(Wounded_legs) { heal_legs(); unkn++; break; } if(!(Fast & ~INTRINSIC)) pline("You are suddenly moving much faster."); else pline("Your legs get new energy."), unkn++; Fast += rn1(10,100); break; case POT_BLINDNESS: if(!Blind) pline("A cloud of darkness falls upon you."); else nothing++; Blind += rn1(100,250); seeoff(0); break; case POT_GAIN_LEVEL: pluslvl(); break; case POT_EXTRA_HEALING: pline("You feel much better."); flags.botl = 1; u.uhp += d(2,20)+1; if(u.uhp > u.uhpmax) u.uhp = (u.uhpmax += 2); if(Blind) Blind = 1; if(Sick) Sick = 0; break; case POT_LEVITATION: if(!Levitation) float_up(); else nothing++; Levitation += rnd(100); u.uprops[PROP(RIN_LEVITATION)].p_tofn = float_down; break; default: impossible("What a funny potion! (%u)", otmp->otyp); return(0); } if(nothing) { unkn++; pline("You have a peculiar feeling for a moment, then it passes."); } if(otmp->dknown && !objects[otmp->otyp].oc_name_known) { if(!unkn) { objects[otmp->otyp].oc_name_known = 1; more_experienced(0,10); } else if(!objects[otmp->otyp].oc_uname) docall(otmp); } use_it: useup(otmp); return(1); }
bool TestExtFile::test_disk_total_space() { VERIFY(more(f_disk_total_space("test"), 0)); return Count(true); }
char peekChar(CurrPtr& curr, EndPtr end) { more(curr, end); return *curr; }
static inline void forth_vm_execute_instruction(forth_context_type *fc, char cmd) { // printf("%c\n",cmd); // getchar(); switch(cmd) { case '0': push(fc,0); break; case '1': push(fc,1); break; case '2': push(fc,2); break; case '3': push(fc,3); break; case '4': push(fc,4); break; case '5': push(fc,5); break; case '6': push(fc,6); break; case '7': push(fc,7); break; case '8': push(fc,8); break; case '9': push(fc,9); break; case '@': at(fc); break; //@ case '!': to(fc); break; //! case 'd': fc->SP+=fc->cell; break; //drop case 'D': dup(fc); break; //dup case 's': swap_(fc); break; //swap case 'l': push(fc,next_cell(fc)); break; //lit case '+': add(fc); break; //+ case '-': sub(fc); break; //- case '*': mul(fc); break; //* case '/': div_(fc); break; // / case '%': mod(fc); break; //mod case '&': and(fc); break; // and case '|': or(fc); break; // or case '^': xor(fc); break; // xor case '>': more(fc); break; // > case '<': less(fc); break; // < case '=': eq(fc); break; // = case 'b': branch(fc); break; // branch case '?': cbranch(fc); break; // ?branch case 'c': call(fc); break; // call case 'r': ret(fc); break; // ret case 't': to_r(fc); break; // >R case 'f': from_r(fc); break; // R> case 'i': in(fc); break; // in case 'o': out(fc); break; // out case '_': fc->stop=1; break; // stop case 'A': adr0(fc); break; // @0 case 1: push(fc,fc->SP); break; // SP@ case 2: fc->SP=pop(fc); break; // SP! case 3: push(fc,fc->RP); break; // RP@ case 4: fc->RP=pop(fc); break; // RP! case 5: shl(fc); break; // << case 6: shr(fc); break; // >> case 7: push(fc,*(size_t *)(fc->mem+fc->RP)); break; // i case 8: cat(fc); break; // c@ case 9: cto(fc); break; // c! case 10: set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(1); break; // nop case 11: in_ready(fc); break; // ?in case 12: out_ready(fc); break; // ?out case 16: umod(fc); break; // umod case 17: udiv(fc); break; // u/ // kernel case 'K': kalsym_lookup(fc); break; // lookup kallsym address case 18: kcall(fc); break; // kcall } }
bool peekChar(char c, CurrPtr& curr, EndPtr end) { more(curr, end); return c == *curr; }
int peek() { return(more() ? data[c.idx] : -1); }
bool TestExtMysql::test_mysql_thread_id() { Variant conn = f_mysql_connect(TEST_HOSTNAME, TEST_USERNAME, TEST_PASSWORD); VERIFY(more(f_mysql_thread_id(), 0)); return Count(true); }
x_program() { strcpy(vetitle, "[¥»µ{¦¡¤§ª©¥»»Pª©Åv«Å§i]"); more("etc/version", YEA); return 0; }
int cmd_cat (int ac, char *av[]) { char path[256] = {0}; // char s[LINE_MAX+1] = {0}; char* s = NULL; char* buf = NULL; int flags = 0; int bootfd; int n = LINE_MAX; ExecId id; int siz = 0; int ln = 0; int i, j; int m; if (ac != 2) return -1; flags |= RFLAG; strcpy(path, av[1]); if ((bootfd = open (path, O_RDONLY | O_NONBLOCK)) < 0) { perror (path); return EXIT_FAILURE; } s = malloc(LINE_MAX + 1); if (s == NULL) { perror("malloc"); return EXIT_FAILURE; } memset(s, 0, LINE_MAX + 1); siz = moresz; ioctl(STDIN, CBREAK, NULL); ln = siz; i = 0; j = 0; buf = malloc(LINESZ + 8); if (buf == NULL) { perror("malloc"); free(s); return EXIT_FAILURE; } id = getExec("txt"); if (id != NULL) { do { n = LINE_MAX; exec(id, bootfd, s, &n, flags); if (n <= 0) { break; } s[n] = '\0'; j += sprintf(buf + j, "%s", s); if ((i % 2) != 0) { if (more(buf, &ln, siz)) { free(buf); free(s); close(bootfd); return 0; } j = 0; } i++; } while (n > 0); if (i % 2 != 0) { printf("%s", buf); } #if 0 do { exec(id, bootfd, s, &n, flags); s[n]='\0'; j += sprintf(buf + j, "%s", s); if (s[0] == '\n') { if ((i % 2) != 0) { more(buf, &ln, siz); j = 0; } /* else { j += sprintf(buf + j, "\n"); } */ i++; } }while(n>0 ); #endif }else{ printf("[error] this pmon can't read file!"); free(s); free(buf); close(bootfd); return -2; } close(bootfd); free(buf); free(s); return 0; }
static void note() { static char *fn_note_tmp = "note.tmp"; static char *fn_note_dat = "note.dat"; #if 0 static char *fn_note_dat2 = "note.dat2"; #endif int total, i, collect, len; struct stat st; char buf[256], buf2[80], *p; int fd, fx; FILE *fp, *foo,*outf; struct notedata { time_t date; char userid[IDLEN + 1]; char username[19]; char buf[3][80]; }; struct notedata myitem; do { myitem.buf[0][0] = myitem.buf[1][0] = myitem.buf[2][0] = '\0'; move(12, 0); clrtobot(); outs("\n½Ð¯d¨¥ (¦Ü¦h¤T¦æ)¡A«ö[Enter]µ²§ô"); for (i = 0; (i < 3) && getdata(16 + i, 0, "¡G", myitem.buf[i], 78, DOECHO, 0); i++); getdata(b_lines - 1, 0, "(S)Àx¦s (E)«·s¨Ó¹L (Q)¨ú®ø¡H[S] ", buf, 3, LCECHO, 0); /* woju */ if (buf[0] == 'q' || i == 0 && *buf != 'e') return; } while (buf[0] == 'e'); strcpy(myitem.userid, cuser.userid); strncpy(myitem.username, cuser.username, 18); myitem.username[18] = '\0'; time(&(myitem.date)); /* begin load file */ #if 0 /* MH */ if((fp = fopen(fn_note_dat2, "a")) == NULL) return; fwrite(&myitem, sizeof(myitem), 1, fp); fclose(fp); /* */ #endif if ((foo = fopen(".note", "a")) == NULL) return; if ((fp = fopen(fn_note_ans, "w")) == NULL) return; if ((fx = open(fn_note_tmp, O_WRONLY | O_CREAT, 0644)) <= 0) return; if ((fd = open(fn_note_dat, O_RDONLY)) == -1) { total = 1; } else if (fstat(fd, &st) != -1) { total = st.st_size / sizeof(struct notedata) + 1; if (total > MAX_NOTE) total = MAX_NOTE; } fputs("\t\t\t[37;45m ¡´ ¦X §@ ªÀ ¨¥ ½× ¼s ³õ ¡´ \n\n", fp); collect = 1; while (total) { sprintf(buf, "[1;33;41m£X[47;30m %s [34m(%s)", myitem.userid, myitem.username); len = strlen(buf); strcat(buf, " [35;45m" + (len & 1)); for (i = len >> 1; i < 41; i++) strcat(buf, "¢e"); sprintf(buf2, "[44;37m %.14s [33;41m£X[0m\n", Cdate(&(myitem.date))); strcat(buf, buf2); fputs(buf, fp); if (collect) fputs(buf, foo); sprintf(buf, "%s\n%s\n%s\n", myitem.buf[0], myitem.buf[1], myitem.buf[2]); fputs(buf, fp); if (collect) { fputs(buf, foo); fclose(foo); collect = 0; } write(fx, &myitem, sizeof(myitem)); if (--total) read(fd, (char *) &myitem, sizeof(myitem)); } fclose(fp); close(fd); close(fx); Rename(fn_note_tmp, fn_note_dat); #if 0 /* MH */ if ((fp = fopen(fn_note_ans2, "w")) == NULL) return; if ((fd = open(fn_note_dat2, O_RDONLY)) == -1) return; if (fstat(fd, &st) != -1) { total = st.st_size / sizeof(struct notedata); } else total = 0; fputs("\t\t\t[37;45m ¡´ ¦X §@ ªÀ ¨¥ ½× ¼s ³õ ¡´ \n\n", fp); while (total > 0) { if(lseek(fd, (total - 1) * sizeof(myitem), SEEK_SET) == -1) break; if(read(fd, (char *) &myitem, sizeof(myitem)) != sizeof(myitem)) break; sprintf(buf, "[1;33;41m£X[47;30m %s [34m(%s)", myitem.userid, myitem.username); len = strlen(buf); strcat(buf, " [35;45m" + (len & 1)); for (i = len >> 1; i < 41; i++) strcat(buf, "¢e"); sprintf(buf2, "[44;37m %.14s [33;41m£X[0m\n", Cdate(&(myitem.date))); strcat(buf, buf2); fputs(buf, fp); sprintf(buf, "%s\n%s\n%s\n", myitem.buf[0], myitem.buf[1], myitem.buf[2]); fputs(buf, fp); total --; } fclose(fp); close(fd); /* */ #endif strcpy(vetitle, "[¦X§@ªÀªº¨¥½×¼s³õ]"); more(fn_note_ans, YEA); }
void changestats(bool ingameflag) { static char flag[2] = /* for printing values of bools */ { 'F', 'T' }; struct player *playerp; /* pointer to structure to alter */ const char *prompt; /* pointer to prompt string */ int c; /* input */ int today; /* day of year of today */ int temp; /* temporary variable */ long loc; /* location in player file */ time_t now; /* time now */ double dtemp; /* temporary variable */ bool *bptr; /* pointer to bool item to change */ double *dptr; /* pointer to double item to change */ short *sptr; /* pointer to short item to change */ clear(); for (;;) { /* get name of player to examine/alter */ mvaddstr(5, 0, "Which character do you want to look at ? "); getstring(Databuf, SZ_DATABUF); truncstring(Databuf); if (Databuf[0] == '\0') userlist(ingameflag); else break; } loc = -1L; if (!ingameflag) /* use 'Player' structure */ playerp = &Player; else if (strcmp(Databuf, Player.p_name) == 0) { /* alter/examine current player */ playerp = &Player; loc = Fileloc; } else /* use 'Other' structure */ playerp = &Other; /* find player on file */ if (loc < 0L && (loc = findname(Databuf, playerp)) < 0L) { /* didn't find player */ clear(); mvaddstr(11, 0, "Not found."); return; } time(&now); today = localtime(&now)->tm_yday; clear(); for (;;) { /* print player structure, and prompt for action */ mvprintw(0, 0, "A:Name %s\n", playerp->p_name); if (Wizard) printw("B:Password %s\n", playerp->p_password); else addstr("B:Password XXXXXXXX\n"); printw(" :Login %s\n", playerp->p_login); printw("C:Experience %.0f\n", playerp->p_experience); printw("D:Level %.0f\n", playerp->p_level); printw("E:Strength %.0f\n", playerp->p_strength); printw("F:Sword %.0f\n", playerp->p_sword); printw(" :Might %.0f\n", playerp->p_might); printw("G:Energy %.0f\n", playerp->p_energy); printw("H:Max-Energy %.0f\n", playerp->p_maxenergy); printw("I:Shield %.0f\n", playerp->p_shield); printw("J:Quickness %.0f\n", playerp->p_quickness); printw("K:Quicksilver %.0f\n", playerp->p_quksilver); printw(" :Speed %.0f\n", playerp->p_speed); printw("L:Magic Level %.0f\n", playerp->p_magiclvl); printw("M:Mana %.0f\n", playerp->p_mana); printw("N:Brains %.0f\n", playerp->p_brains); if (Wizard || playerp->p_specialtype != SC_VALAR) mvaddstr(0, 40, descrstatus(playerp)); mvprintw(1, 40, "O:Poison %0.3f\n", playerp->p_poison); mvprintw(2, 40, "P:Gold %.0f\n", playerp->p_gold); mvprintw(3, 40, "Q:Gem %.0f\n", playerp->p_gems); mvprintw(4, 40, "R:Sin %0.3f\n", playerp->p_sin); if (Wizard) { mvprintw(5, 40, "S:X-coord %.0f\n", playerp->p_x); mvprintw(6, 40, "T:Y-coord %.0f\n", playerp->p_y); } else { mvaddstr(5, 40, "S:X-coord ?\n"); mvaddstr(6, 40, "T:Y-coord ?\n"); } mvprintw(7, 40, "U:Age %ld\n", playerp->p_age); mvprintw(8, 40, "V:Degenerated %d\n", playerp->p_degenerated); mvprintw(9, 40, "W:Type %d (%s)\n", playerp->p_type, descrtype(playerp, FALSE) + 1); mvprintw(10, 40, "X:Special Type %d\n", playerp->p_specialtype); mvprintw(11, 40, "Y:Lives %d\n", playerp->p_lives); mvprintw(12, 40, "Z:Crowns %d\n", playerp->p_crowns); mvprintw(13, 40, "0:Charms %d\n", playerp->p_charms); mvprintw(14, 40, "1:Amulets %d\n", playerp->p_amulets); mvprintw(15, 40, "2:Holy Water %d\n", playerp->p_holywater); temp = today - playerp->p_lastused; if (temp < 0) /* last year */ temp += 365; mvprintw(16, 40, "3:Lastused %d (%d)\n", playerp->p_lastused, temp); mvprintw(18, 8, "4:Palantir %c 5:Blessing %c 6:Virgin %c 7:Blind %c", flag[playerp->p_palantir], flag[playerp->p_blessing], flag[playerp->p_virgin], flag[playerp->p_blindness]); if (!Wizard) mvprintw(19, 8, "8:Ring %c", flag[playerp->p_ring.ring_type != R_NONE]); else mvprintw(19, 8, "8:Ring %d 9:Duration %d", playerp->p_ring.ring_type, playerp->p_ring.ring_duration); if (!Wizard && (ingameflag || strcmp(Login, playerp->p_login) != 0)) { /* in game or not examining own character */ if (ingameflag) { more(LINES - 1); clear(); return; } else cleanup(TRUE); /* NOTREACHED */ } mvaddstr(20, 0, "!:Quit ?:Delete"); mvaddstr(21, 0, "What would you like to change ? "); if (Wizard) c = getanswer(" ", TRUE); else /* examining own player; allow to change name and password */ c = getanswer("!BA", FALSE); switch (c) { case 'A': /* change name */ case 'B': /* change password */ if (!Wizard) { /* prompt for password */ mvaddstr(23, 0, "Password ? "); Echo = FALSE; getstring(Databuf, 9); Echo = TRUE; if (strcmp(Databuf, playerp->p_password) != 0) continue; } if (c == 'A') { /* get new name */ mvaddstr(23, 0, "New name: "); getstring(Databuf, SZ_NAME); truncstring(Databuf); if (Databuf[0] != '\0') if (Wizard || findname(Databuf, &Other) < 0L) strcpy(playerp->p_name, Databuf); } else { /* get new password */ if (!Wizard) Echo = FALSE; do { /* get two copies of new password until they match */ /* get first copy */ mvaddstr(23, 0, "New password ? "); getstring(Databuf, SZ_PASSWORD); if (Databuf[0] == '\0') break; /* get second copy */ mvaddstr(23, 0, "One more time ? "); getstring(playerp->p_password, SZ_PASSWORD); } while (strcmp(playerp->p_password, Databuf) != 0); Echo = TRUE; } continue; case 'C': /* change experience */ prompt = "experience"; dptr = &playerp->p_experience; goto DALTER; case 'D': /* change level */ prompt = "level"; dptr = &playerp->p_level; goto DALTER; case 'E': /* change strength */ prompt = "strength"; dptr = &playerp->p_strength; goto DALTER; case 'F': /* change swords */ prompt = "sword"; dptr = &playerp->p_sword; goto DALTER; case 'G': /* change energy */ prompt = "energy"; dptr = &playerp->p_energy; goto DALTER; case 'H': /* change maximum energy */ prompt = "max energy"; dptr = &playerp->p_maxenergy; goto DALTER; case 'I': /* change shields */ prompt = "shield"; dptr = &playerp->p_shield; goto DALTER; case 'J': /* change quickness */ prompt = "quickness"; dptr = &playerp->p_quickness; goto DALTER; case 'K': /* change quicksilver */ prompt = "quicksilver"; dptr = &playerp->p_quksilver; goto DALTER; case 'L': /* change magic */ prompt = "magic level"; dptr = &playerp->p_magiclvl; goto DALTER; case 'M': /* change mana */ prompt = "mana"; dptr = &playerp->p_mana; goto DALTER; case 'N': /* change brains */ prompt = "brains"; dptr = &playerp->p_brains; goto DALTER; case 'O': /* change poison */ prompt = "poison"; dptr = &playerp->p_poison; goto DALTER; case 'P': /* change gold */ prompt = "gold"; dptr = &playerp->p_gold; goto DALTER; case 'Q': /* change gems */ prompt = "gems"; dptr = &playerp->p_gems; goto DALTER; case 'R': /* change sin */ prompt = "sin"; dptr = &playerp->p_sin; goto DALTER; case 'S': /* change x coord */ prompt = "x"; dptr = &playerp->p_x; goto DALTER; case 'T': /* change y coord */ prompt = "y"; dptr = &playerp->p_y; goto DALTER; case 'U': /* change age */ mvprintw(23, 0, "age = %ld; age = ", playerp->p_age); dtemp = infloat(); if (dtemp != 0.0) playerp->p_age = (long)dtemp; continue; case 'V': /* change degen */ mvprintw(23, 0, "degen = %d; degen = ", playerp->p_degenerated); dtemp = infloat(); if (dtemp != 0.0) playerp->p_degenerated = (int)dtemp; continue; case 'W': /* change type */ prompt = "type"; sptr = &playerp->p_type; goto SALTER; case 'X': /* change special type */ prompt = "special type"; sptr = &playerp->p_specialtype; goto SALTER; case 'Y': /* change lives */ prompt = "lives"; sptr = &playerp->p_lives; goto SALTER; case 'Z': /* change crowns */ prompt = "crowns"; sptr = &playerp->p_crowns; goto SALTER; case '0': /* change charms */ prompt = "charm"; sptr = &playerp->p_charms; goto SALTER; case '1': /* change amulet */ prompt = "amulet"; sptr = &playerp->p_amulets; goto SALTER; case '2': /* change holy water */ prompt = "holy water"; sptr = &playerp->p_holywater; goto SALTER; case '3': /* change last-used */ prompt = "last-used"; sptr = &playerp->p_lastused; goto SALTER; case '4': /* change palantir */ prompt = "palantir"; bptr = &playerp->p_palantir; goto BALTER; case '5': /* change blessing */ prompt = "blessing"; bptr = &playerp->p_blessing; goto BALTER; case '6': /* change virgin */ prompt = "virgin"; bptr = &playerp->p_virgin; goto BALTER; case '7': /* change blindness */ prompt = "blindness"; bptr = &playerp->p_blindness; goto BALTER; case '8': /* change ring type */ prompt = "ring-type"; sptr = &playerp->p_ring.ring_type; goto SALTER; case '9': /* change ring duration */ prompt = "ring-duration"; sptr = &playerp->p_ring.ring_duration; goto SALTER; case '!': /* quit, update */ if (Wizard && (!ingameflag || playerp != &Player)) { /* turn off status if not modifying self */ playerp->p_status = S_OFF; playerp->p_tampered = T_OFF; } writerecord(playerp, loc); clear(); return; case '?': /* delete player */ if (ingameflag && playerp == &Player) /* cannot delete self */ continue; freerecord(playerp, loc); clear(); return; default: continue; } DALTER: mvprintw(23, 0, "%s = %f; %s = ", prompt, *dptr, prompt); dtemp = infloat(); if (dtemp != 0.0) *dptr = dtemp; continue; SALTER: mvprintw(23, 0, "%s = %d; %s = ", prompt, *sptr, prompt); dtemp = infloat(); if (dtemp != 0.0) *sptr = (short)dtemp; continue; BALTER: mvprintw(23, 0, "%s = %c; %s = ", prompt, flag[*bptr], prompt); c = getanswer("\nTF", TRUE); if (c == 'T') *bptr = TRUE; else if (c == 'F') *bptr = FALSE; continue; } }
void ReplicationCoordinatorExternalStateImpl::cleanUpLastApplyBatch(OperationContext* txn) { if (_storageInterface->getInitialSyncFlag(txn)) { return; // Initial Sync will take over so no cleanup is needed. } const auto deleteFromPoint = _storageInterface->getOplogDeleteFromPoint(txn); const auto appliedThrough = _storageInterface->getAppliedThrough(txn); const bool needToDeleteEndOfOplog = !deleteFromPoint.isNull() && // This version should never have a non-null deleteFromPoint with a null appliedThrough. // This scenario means that we downgraded after unclean shutdown, then the downgraded node // deleted the ragged end of our oplog, then did a clean shutdown. !appliedThrough.isNull() && // Similarly we should never have an appliedThrough higher than the deleteFromPoint. This // means that the downgraded node deleted our ragged end then applied ahead of our // deleteFromPoint and then had an unclean shutdown before upgrading. We are ok with // applying these ops because older versions wrote to the oplog from a single thread so we // know they are in order. !(appliedThrough.getTimestamp() >= deleteFromPoint); if (needToDeleteEndOfOplog) { log() << "Removing unapplied entries starting at: " << deleteFromPoint; truncateOplogTo(txn, deleteFromPoint); } _storageInterface->setOplogDeleteFromPoint(txn, {}); // clear the deleteFromPoint if (appliedThrough.isNull()) { // No follow-up work to do. return; } // Check if we have any unapplied ops in our oplog. It is important that this is done after // deleting the ragged end of the oplog. const auto topOfOplog = fassertStatusOK(40290, loadLastOpTime(txn)); if (topOfOplog >= appliedThrough) { return; // We've applied all the valid oplog we have. } log() << "Replaying stored operations from " << appliedThrough << " (exclusive) to " << topOfOplog << " (inclusive)."; DBDirectClient db(txn); auto cursor = db.query(rsOplogName, QUERY("ts" << BSON("$gte" << appliedThrough.getTimestamp())), /*batchSize*/ 0, /*skip*/ 0, /*projection*/ nullptr, QueryOption_OplogReplay); // Check that the first document matches our appliedThrough point then skip it since it's // already been applied. if (!cursor->more()) { // This should really be impossible because we check above that the top of the oplog is // strictly > appliedThrough. If this fails it represents a serious bug in either the // storage engine or query's implementation of OplogReplay. severe() << "Couldn't find any entries in the oplog >= " << appliedThrough << " which should be impossible."; fassertFailedNoTrace(40293); } auto firstOpTimeFound = fassertStatusOK(40291, OpTime::parseFromOplogEntry(cursor->nextSafe())); if (firstOpTimeFound != appliedThrough) { severe() << "Oplog entry at " << appliedThrough << " is missing; actual entry found is " << firstOpTimeFound; fassertFailedNoTrace(40292); } // Apply remaining ops one at at time, but don't log them because they are already logged. const bool wereWritesReplicated = txn->writesAreReplicated(); ON_BLOCK_EXIT([&] { txn->setReplicatedWrites(wereWritesReplicated); }); txn->setReplicatedWrites(false); while (cursor->more()) { auto entry = cursor->nextSafe(); fassertStatusOK(40294, SyncTail::syncApply(txn, entry, true)); _storageInterface->setAppliedThrough( txn, fassertStatusOK(40295, OpTime::parseFromOplogEntry(entry))); } }
// Adds an optimized FCallBuiltin for min with 2 operands to SystemLib Variant HHVM_FUNCTION(SystemLib_min2, const Variant& value1, const Variant& value2) { return more(value1, value2) ? value2 : value1; }