int main() { struct fileheader *x; char board[80], file[80], target[80]; init_all(); strsncpy(board, getparm("board"), 30); strsncpy(file, getparm("file"), 30); strsncpy(target, getparm("target"), 30); if(!loginok) http_fatal("匆匆过客不能进行本项操作"); if(!has_read_perm(¤tuser, board)) http_fatal("错误的讨论区"); x=get_file_ent(board, file); if(x==0) http_fatal("错误的文件名"); printf("<center>%s -- 转寄/推荐给好友 [使用者: %s]<hr color=green>\n", BBSNAME, currentuser.userid); if(target[0]) { if(!strstr(target, "@")) { if(!getuser(target)) http_fatal("错误的使用者帐号"); strcpy(target, getuser(target)->userid); } return do_fwd(x, board, target); } printf("<table><tr><td>\n"); printf("文章标题: %s<br>\n", nohtml(x->title)); printf("文章作者: %s<br>\n", x->owner); printf("原讨论区: %s<br>\n", board); printf("<form action=bbsfwd method=post>\n"); printf("<input type=hidden name=board value=%s>", board); printf("<input type=hidden name=file value=%s>", file); printf("把文章转寄给 <input name=target size=30 maxlength=30 value=%s> (请输入对方的id或email地址). <br>\n", currentuser.email); printf("<input type=submit value=确定转寄></form>"); }
int main(int argc, char** argv) { char buf[255]; int reply; int proto; int client=6; int server=7; do_fwd(client, server, buf, ESD_KEY_LEN); do_fwd(client, server, buf, sizeof(int)); do_fwd(server, client, &reply, sizeof(reply)); //reply=1; //write(client, &reply, sizeof(reply)); /* Server will close connection anyway */ if (reply != 1) exit(1); while (read(client, &proto, sizeof(proto)) == sizeof(proto)) { write(server, &proto, sizeof(proto)); #ifdef DEBUG fprintf(stderr, "proto = %d\n", proto); #endif switch(proto) { case ESD_PROTO_SERVER_INFO: do_fwd(client, server, buf, sizeof(int)); do_fwd(server, client, buf, sizeof(int)+sizeof(esd_format_t)+sizeof(int)); break; case ESD_PROTO_LATENCY: do_fwd(server, client, buf, sizeof(int)); break; case ESD_PROTO_STREAM_PLAY: do_child(client, server, (argc > 1 && argv[1][0] == 'e')); exit(0); break; default: close(client); close(server); exit(1); } } exit(1); }
/* Event handler in Podzilla compiling style */ static int tuxchess_handle_event(GR_EVENT *event) { int ret = 0; switch (event->type) { case GR_EVENT_TYPE_KEY_DOWN: switch (event->keystroke.ch) { case'm': do_menu(); ret |= KEY_CLICK; break; case'w': if (end == 0) { do_rev(); ret |= KEY_CLICK; } break; case'f': if (end == 0) { do_fwd(); ret |= KEY_CLICK; } break; case'\r': if (end == 0) { do_action(); } else if (end == 1) { draw_end(end_type); } else { new_game(); } ret |= KEY_CLICK; break; case'l': if (end == 0) { do_left(); ret |= KEY_CLICK; } break; case'r': if (end == 0) { do_right(); ret |= KEY_CLICK; } break; default: ret |= KEY_UNUSED; break; } break; default: ret |= EVENT_UNUSED; break; } return ret; }