summaryrefslogtreecommitdiffstats
path: root/console/lovepaper.c
diff options
context:
space:
mode:
Diffstat (limited to 'console/lovepaper.c')
-rw-r--r--console/lovepaper.c114
1 files changed, 114 insertions, 0 deletions
diff --git a/console/lovepaper.c b/console/lovepaper.c
new file mode 100644
index 00000000..50c643bb
--- /dev/null
+++ b/console/lovepaper.c
@@ -0,0 +1,114 @@
+/* $Id$ */
+#include "bbs.h"
+#define DATA "etc/lovepaper.dat"
+
+int
+x_love(void)
+{
+ char buf1[200], title[TTLEN + 1];
+ char receiver[61], path[STRLEN] = "home/";
+ int x, y = 0, tline = 0, poem = 0;
+ FILE *fp, *fpo;
+ struct tm *gtime;
+ fileheader_t mhdr;
+
+ setutmpmode(LOVE);
+ gtime = localtime4(&now);
+ snprintf(buf1, sizeof(buf1), "%c/%s/love%d%d",
+ cuser.userid[0], cuser.userid, gtime->tm_sec, gtime->tm_min);
+ strcat(path, buf1);
+ move(1, 0);
+ clrtobot();
+
+ outs("\n歡迎使用情書產生器 v0.00 板 \n");
+ outs("有何難以啟齒的話,交由系統幫你說吧.\n爸爸說 : 濫情不犯法.\n");
+
+ if (!getdata(7, 0, "收信人:", receiver, sizeof(receiver), DOECHO))
+ return 0;
+ if (receiver[0] && !(searchuser(receiver, receiver) &&
+ getdata(8, 0, "主 題:", title,
+ sizeof(title), DOECHO))) {
+ move(10, 0);
+ vmsg("收信人或主題不正確,情書無法傳遞");
+ return 0;
+ }
+ fpo = fopen(path, "w");
+ assert(fpo);
+ fprintf(fpo, "\n");
+ if ((fp = fopen(DATA, "r"))) {
+ while (fgets(buf1, 100, fp)) {
+ switch (buf1[0]) {
+ case '#':
+ break;
+ case '@':
+ if (!strncmp(buf1, "@begin", 6) || !strncmp(buf1, "@end", 4))
+ tline = 3;
+ else if (!strncmp(buf1, "@poem", 5)) {
+ poem = 1;
+ tline = 1;
+ fprintf(fpo, "\n\n");
+ } else
+ tline = 2;
+ break;
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ sscanf(buf1, "%d", &x);
+ y = (random() % (x - 1)) * tline;
+ break;
+ default:
+ if (!poem) {
+ if (y > 0)
+ y = y - 1;
+ else {
+ if (tline > 0) {
+ fputs(buf1, fpo);
+ tline--;
+ }
+ }
+ } else {
+ if (buf1[0] == '$')
+ y--;
+ else if (y == 0)
+ fputs(buf1, fpo);
+ }
+ }
+
+ }
+
+ fclose(fp);
+ fclose(fpo);
+ strlcpy(save_title, title, sizeof(save_title));
+ curredit |= EDIT_MAIL;
+ if (vedit(path, YEA, NULL) == -1) {
+ curredit &= ~EDIT_MAIL;
+ unlink(path);
+ clear();
+ outs("\n\n 放棄寄情書\n");
+ pressanykey();
+ return -2;
+ }
+ curredit &= ~EDIT_MAIL;
+ sethomepath(buf1, receiver);
+ stampfile(buf1, &mhdr);
+ Rename(path, buf1);
+ strlcpy(mhdr.title, save_title, sizeof(mhdr.title));
+ strlcpy(mhdr.owner, cuser.userid, sizeof(mhdr.owner));
+ sethomedir(path, receiver);
+ if (append_record(path, &mhdr, sizeof(mhdr)) == -1)
+ return -1;
+ sendalert(receiver, ALERT_NEW_MAIL);
+ hold_mail(buf1, receiver);
+ return 1;
+ } else {
+ vmsg("本站目前無情書資料庫,請向站長反應。");
+ }
+ fclose(fpo);
+ return 0;
+}