static void a_forward(const char *path, const fileheader_t * pitem, int mode) { fileheader_t fhdr; strlcpy(fhdr.filename, pitem->filename, sizeof(fhdr.filename)); strlcpy(fhdr.title, pitem->title, sizeof(fhdr.title)); switch (doforward(path, &fhdr, mode)) { case 0: outmsg(msg_fwd_ok); break; case -1: outmsg(msg_fwd_err1); break; case -2: outmsg(msg_fwd_err2); break; } }
int deal_gopherkey(char ch, int allnum, int pagenum) { char fname[STRLEN], fpath[STRLEN]; #ifdef INTERNET_EMAIL struct shortfile fhdr; #endif switch (ch) { case 'h': case 'H': show_help("help/announcereadhelp"); g_refresh(); break; case 'E': case 'e': tmpitem = nth_item(allnum - pagenum); setuserfile(fname, "gopher.tmp"); if (tmpitem->title[0] != '0') { return 1; } if (get_con(tmpitem->server, tmpitem->port) == -1) return 1; enterdir(tmpitem->file); savetmpfile(fname); if (dashf(fname)) { vedit(fname, NA, YEA); unlink(fname); g_refresh(); } show_message(NULL); break; case '=': { tmpitem = nth_item(allnum - pagenum); move(2, 0); clrtobot(); prints("[1;44;37m"); printdash("BBS Gopher Îï¼þ»ù±¾×ÊÁÏ"); prints("[m"); prints("ÀàÐÍ£º%c (%s)\n", tmpitem->title[0], (tmpitem->title[0] == '0') ? "Îļþ" : "Ŀ¼"); prints("±êÌ⣺%s\n", tmpitem->title + 1); prints("·¾¶£º%s\n", tmpitem->file); prints("λÖãº%s\n", tmpitem->server); prints("ʹÓãº%d²º\n", tmpitem->port); pressanykey(); g_refresh(); } break; case Ctrl('P'): tmpitem = nth_item(allnum - pagenum); if (!HAS_PERM(PERM_POST)) break; setuserfile(fname, "gopher.tmp"); if (tmpitem->title[0] != '0') { return 1; } if (get_con(tmpitem->server, tmpitem->port) == -1) return 1; enterdir(tmpitem->file); savetmpfile(fname); if (dashf(fname)) { char bname[30]; clear(); if (get_a_boardname(bname, "ÇëÊäÈëҪתÌùµÄÌÖÂÛÇøÃû³Æ: ")) { move(1, 0); sprintf(fpath, "ÄãÈ·¶¨Òª×ªÌùµ½ %s °åÂð", bname); if (askyn(fpath, NA, NA) == 1) { move(2, 0); Postfile(fname, bname, tmpitem->title + 1, 2); sprintf(fpath, "[1mÒѾ°ïÄãתÌùµ½ %s °åÁË...[m", bname); prints(fpath); refresh(); sleep(1); } } } unlink(fname); g_refresh(); return 1; #ifdef INTERNET_EMAIL case 'U': case 'F': case 'u': case 'f': case 'z': case 'Z': tmpitem = nth_item(allnum - pagenum); setuserfile(fname, "gopher.tmp"); if (tmpitem->title[0] != '0') { return 1; } if (get_con(tmpitem->server, tmpitem->port) == -1) return 1; enterdir(tmpitem->file); savetmpfile(fname); if (dashf(fname)) { strncpy(fhdr.title, tmpitem->title + 1, 70); strncpy(fhdr.filename, "gopher.tmp", STRLEN); sethomepath(fpath, currentuser.userid); // if (ch == 'Z' || ch == 'z') // a_download(fname); // else { switch (doforward(fpath, &fhdr, (ch == 'u' || ch == 'U') ? 1 : 0)) { case 0: show_message("ÎÄÕÂת¼ÄÍê³É!"); break; case -1: show_message("system error!!."); break; case -2: show_message("invalid address."); break; default: show_message("È¡Ïûת¼Ä¶¯×÷."); } // } refresh(); pressanykey(); g_refresh(); unlink(fname); return 1; } else return 1; break; #endif default: return 0; } return 1; }