所謂?戰?

原因是我不願意放下身段思考,秉持著我的意見單刀直入,硬押著夥伴

或者敵人上架,不顧其他人甚至是一個團隊的好處,我堅持著那樣做就

是那樣做。


我媽說,人人不一樣,資質、經歷都有差。是的,我可以繼續這樣戰,

戰那些跟我意見不一樣的人,用我的高調語氣與尖銳的語言。月亮的男

人說我這樣不成人之美,以我的腦袋多想兩分鐘就可以用其他句子來說

一件事情,但我以前喜歡,也常用聽聞起來較為刺耳的字詞,因為那很

爽,可以把別人弄到失焦或者火冒三丈。我就像是惟恐天下不亂的樣子




就像是老師教學生那樣,老師可以用不同的方法教不同程度的學生,讓

每個學生都快快樂樂的有所學,不過那樣老師要花很多力氣想教學方法

。也可以用教精英的方法教所有學生,不過那樣的話,後段的學生只會

在下課後幹譙,或者跑去看妹。但是精英的學生可以學到更多東西!


這讓我想到『曲高和寡』的故事,不過不知道這意思這樣對不對。


看到很多人常常花時間放鬆自己,甚至有人無時無刻都在放鬆自己,而

且是近乎渾沌了的那種放鬆,他們花時間去做那種我認為毫無意思的事

情(注意到沒,這句話容易引戰?應該吧)我媽建議我選擇閉口不語,

我可以知道或者認為誰怎麼樣做不好,但是不用說出來,反正別人的命

是他的,他要怎麼使用與我何干?後面兩句話是我自己的註解。不是我

媽說的。


我認為,沒有什麼事情是不能說出來的,彼此的友誼或者任何關係之間

糝有著秘密或者謊言,怎麼可能不會垮掉?為什麼有人會認為不能講?

不講就會好嗎?學研營有一句話,做了不一定有機會,不做絕對沒機會

,依照偉期的照樣照句『說了不一定會好,不說一定不會好!』


如果我為了迎合每個人,開始去掩飾原本的情緒,開始用皆大歡喜的說

法來溝通,是不是會比較好?



如果生氣,卻還要想想如何表達才能不傷人,又要傳達出我很憤怒的情

緒?這樣真的能行嗎?這樣還叫做生氣嗎?



給那些不一定有幸看到這篇文章,但是我有些話想告誡的人

Who do you think you are? You are nobody!

沒有那個能耐讓大家亂了陣腳!

永遠別再希冀誰會再給予幫助。

rm link director 刪除建立的連結或者資料夾

案發經過(下面是一模一樣情況的模擬,不是刪掉當時檔案的經過)

pwd:/usr/home/aaa/bbb

ln -s /usr/home/aaa/ccc/ /usr/home/aaa/bbb/ccc

rm -r ccc/

也就是說我在 /usr/home/aaa/bbb/ccc

給了刪除ccc這個link的指令 rm -r ccc/

但是正確的方法是 rm ccc

我要刪掉的ccc是一個連結檔案,給了斜線並加上 -r 之後

變成遞迴刪除ccc/底下的東西,哭哭阿!!!

因為多給了一條斜線,所以資料全毀了!

最基本的密碼登入網頁製作方法

1. login.html







<html>
<FORM METHOD=POST ACTION="auth.php">
帳號: <INPUT TYPE="text" NAME="account"><BR>
密碼: <INPUT TYPE="text" NAME="password"><BR>
<INPUT TYPE="submit" value="送出">
</FORM>
</html>



2. auth.php







<?php
if($account == "lord" && $password == "pass"){
echo "歡迎 $_POST[account], 你的密碼是 $_POST[password]";
}elseif($_POST[account] == "god" && $_POST[password] == "dog"){
$y = date("Y") - 1911;
$m = date("m");
$d = date("d");
echo "歡迎 $_POST[account], 今天是民國".$y."年".$m."月".$d."日";
}else{
echo "登入失敗:<hr> 輸入的資料:<br>帳號: $_POST[account] <br>密碼: $_POST[password]";
}
?>



真的很簡單

在login.php輸入的資訊為兩個字串(當作是字串就可以了)

執行的動作是以POST的方法送到auth.php

然後執行auth.php這個網頁

又,在login.php裡面的字串有在auth.php裡面使用到

用途是作為判斷要輸出哪個字串的

伺服器端不會判斷你到底是不是正確使用者

但是他會檢查你輸入的字串符合哪個輸出條件,然後輸出相對應的東西

至於什麼是POST方法(另一種是GET方法)

新手可以先不要管,照著寫就好。

如果你想要深入了解的話在去找資料看吧

google,php教學就有很多資料了

或者,我推薦,「碼上學會PHP5&MySQL5」這本中文書

ISBN
978-986-6884-05-4


上面的code轉自
http://php.igt.com.tw/unit_102.htm

防止被搜尋引擎找到的方法

http://www.mcanerin.com/EN/search-engine/robots-txt.asp

要不被搜索引擎找到

你必須是該網站的管理員才行

因為我們必須新增一個叫做robots.txt的純文字檔案

並且放在www服務的根目錄下

最基本的範例,如
--
# Disallows all robots

User-agent: *
Disallow: /
--
將上面的內容寫到名為robots.txt的檔案裡面

並將該檔放置於網頁根目錄,如此一來搜索引擎機器人就不會搜索你的網頁了

至於,放在其他地方會不會生效。

這份文件是怎麼作用的我並不清楚,改天知道的話會來補充。

BBS ACCT 結構

下面是夢大的code
/*-------------------------------------------------------*/
/* struct.h ( NTHU CS MapleBBS Ver 2.36 ) */
/*-------------------------------------------------------*/
/* target : all definitions about data structure */
/* create : 95/03/29 */
/* update : 95/12/15 */
/*-------------------------------------------------------*/


#ifndef _STRUCT_H_
#define _STRUCT_H_


#define STRLEN 80 /* Length of most string data */
#define BTLEN 42 /* Length of board title */
#define BMLEN 36 /* Length of board managers */
#define TTLEN 72 /* Length of title */
#define FNLEN 28 /* Length of filename */
#define IDLEN 12 /* Length of board / user id */
#define PASSLEN 14 /* Length of encrypted passwd field */


#define BFLAG(n) (1 << n)/* 32 bit-wise flag */


typedef char const *STRING;
typedef unsigned char uschar; /* length = 1 */
typedef unsigned int usint; /* length = 4 */
typedef struct UTMP UTMP;

/* ban email 轉信用 */

typedef struct
{
char name[IDLEN+1];
} ADMIN;

typedef struct
{
char name[IDLEN+1];
char email[60];
} CONTACT;

typedef struct
{
char date[8];
char time[8];
char work[50];
} MEMORANDUM;

typedef struct
{
char data[48];
int mode;
time_t time;
int usage;
} BANMAIL;

typedef struct
{
char data[48];
int mode; time_t time;
int usage;
char name[IDLEN+1];
} FW;

#define FW_OWNER 0x01
#define FW_TITLE 0x02
#define FW_TIME 0x04
#define FW_PATH 0x08
#define FW_ORIGIN 0x10

#define FW_ALL 0xFF

/* ----------------------------------------------------- */
/* 使用者帳號 .ACCT struct : 512 bytes */
/* ----------------------------------------------------- */


typedef struct
{
int userno; /* 使用者編號 */
char userid[IDLEN + 1]; /* 使用者ID */
char passwd[PASSLEN]; /* DES編碼過後的密碼 */
uschar signature; /* 使用的簽名檔編號 */
char realname[20]; /* 真實性名 */
char username[24]; /* 暱稱 */
usint userlevel; /* user perm */
int numlogins; /* 登入次數 */
int numposts; /* 發文次數 */
usint ufo; /* user basic flags */
time_t firstlogin; /* 第一次登入時間 */
time_t lastlogin; /* 最後一次登入時間 */
time_t staytime; /* 總共停留時間 */
time_t tcheck; /* time to check mbox/pal */
char lasthost[32]; /* 上次登入來源 */
int numemail; /* 寄發 Inetrnet E-mail 次數 */
time_t tvalid; /* 通過認證、更改 mail address 的時間 */
char email[60]; /* 使用者信箱 */
char address[60]; /* 使用者地址 */
char justify[60]; /* FROM of replied justify mail */
char vmail[60]; /* 通過認證之 email */
time_t deny; /* user violatelaw time */
int extrambox; /* 加大信箱 (最大 50 封) */
int extrasize; /* 加大信箱容量 (最大 1000K) */
usint ufo2; /* 延伸的個人設定 */
char ident[104]; /* user remote host ident */
time_t vtime; /* validate time */
} ACCT;

typedef struct
{
int money; /* 夢幣 */
int save; /* 存款 */
int request; /* 小雞點券 */

// int request_times; /* 當天點歌次數 */
// char lastrequestdate[11]; /* 最後點歌日期 */
} MONEY;


typedef struct /* 16 bytes */
{
time_t uptime;
char userid[IDLEN];
} SCHEMA;


#ifdef HAVE_REGISTER_FORM

typedef struct /* 註冊表單 (Register From) 256 bytes */
{
int userno;
time_t rtime;
char userid[IDLEN + 1];
char agent[IDLEN + 1];
char realname[20];
char career[50];
char address[60];
char phone[20];
char reply[61];
char idno[11];
} RFORM;

#ifndef HAVE_SIMPLE_RFORM
typedef struct
{
int userno;
char userid[IDLEN + 1];
char msg[80];
} RFORM_R;
#endif
#endif


/* ----------------------------------------------------- */
/* User Flag Option : flags in ACCT.ufo */
/* ----------------------------------------------------- */


#define UFO_COLOR BFLAG(0) /* true if the ANSI color mode open */
#define UFO_MOVIE BFLAG(1) /* true if show movie */
#define UFO_BRDNEW BFLAG(2) /* 新文章模式 */
#define UFO_BNOTE BFLAG(3) /* 顯示進板畫面 */
#define UFO_VEDIT BFLAG(4) /* 簡化編輯器 */

#define UFO_PAGER BFLAG(5) /* 關閉呼叫器 */
#define UFO_QUIET BFLAG(6) /* 結廬在人境,而無車馬喧 */

//#define UFO_PAL BFLAG(7) /* 訊息上限拒收訊息 */
#define UFO_MAXMSG BFLAG(7) /* 訊息上限拒收訊息 */
#define UFO_FORWARD BFLAG(8) /* 自動轉寄 */
//#define UFO_ALOHA BFLAG(8) /* 自動轉寄 */

#define UFO_CLASSTABLE BFLAG(9) /* 功課表通知 */
//#define UFO_MOTD BFLAG(9) /* 功課表通知 */
//#define UFO_MIME BFLAG(13) /* MIME 解碼 */
#define UFO_BROADCAST BFLAG(14) /* 拒收廣播 */
//#define UFO_SIGN BFLAG(15) /* 簽名檔 */
//#define UFO_SHOWUSER BFLAG(16) /* 顯示 ID 和 暱稱 */
//#define UFO_WATER BFLAG(10) /* 多重水球 */
//#define UFO_BMWRECORD BFLAG(11) /* 水球紀錄 */
//#define UFO_BMWRESERVE BFLAG(12) /* 水球記錄離站預設保存 */
//#define UFO_BMWDELETE BFLAG(13) /* 水球記錄離站預設刪除 */

#define UFO_HIDEDN BFLAG(18) /* 隱藏來源 */
#define UFO_CLOAK BFLAG(19) /* true if cloak was ON */
#define UFO_ACL BFLAG(20) /* true if ACL was ON */
#define UFO_NET BFLAG(21) /* visor.991030: 網路程式 */
#define UFO_WEB BFLAG(22) /* visor.020325: WEB */
#define UFO_MPAGER BFLAG(10) /* lkchu.990428: 電子郵件傳呼 */
//#define UFO_NWLOG BFLAG(11) /* lkchu.990510: 不存對話紀錄 */
//#define UFO_NTLOG BFLAG(12) /* lkchu.990510: 不存聊天紀錄 */
#define UFO_MESSAGE BFLAG(23) /* visor.991030: 訊息全關 */
#define UFO_PAGER1 BFLAG(26) /* visor.991030: 呼叫器全關 */


/* ----------------------------------------------------- */
/* bit 24-27 : client/server or telnet BBS */
/* ----------------------------------------------------- */

#define UFO_BIFFN BFLAG(24) /* 有新訊息 */
#define UFO_SPARE BFLAG(25) /* ready for connection */

/* these are flags in UTMP.ufo */

#define UFO_BIFF BFLAG(27) /* 有新信件 */
#define UFO_SOCKET BFLAG(28) /* true if socket port active */
#define UFO_REJECT BFLAG(29) /* true if reject any body */

/* special purpose */

#define UFO_FCACHE BFLAG(30) /* 有好友 */
#define UFO_MQUOTA BFLAG(31) /* 信箱中有待清理之信件 */

#define UFO_UTMP_MASK (UFO_BIFF|UFO_BIFFN)
/* Thor.980805: 定義ufo中以utmp->ufo為本尊的flag, 解決與cuser.ufo不同步的問題 */

/* ----------------------------------------------------- */
/* User Flag Option Extend: flags in ACCT.ufo2 */
/* ----------------------------------------------------- */


#define UFO2_COLOR BFLAG(0) /* true if the ANSI color mode open */
#define UFO2_MOVIE BFLAG(1) /* true if show movie */
#define UFO2_BRDNEW BFLAG(2) /* 新文章模式 */
#define UFO2_BNOTE BFLAG(3) /* 顯示進板畫面 */
#define UFO2_VEDIT BFLAG(4) /* 簡化編輯器 */

#define UFO2_PAL BFLAG(5) /* true if show pals only */

#define UFO2_MOTD BFLAG(6) /* 簡化進站畫面 */
#define UFO2_MIME BFLAG(7) /* MIME 解碼 */
#define UFO2_SIGN BFLAG(8) /* 簽名檔 */
#define UFO2_SHOWUSER BFLAG(9) /* 顯示 ID 和 暱稱 */

#define UFO2_PRH BFLAG(10) /* 顯示推薦文章分數 */

#define UFO2_SHIP BFLAG(11) /* visor.991030: 好友描述 */
#define UFO2_NWLOG BFLAG(12) /* lkchu.990510: 不存對話紀錄 */
#define UFO2_NTLOG BFLAG(13) /* lkchu.990510: 不存聊天紀錄 */
#define UFO2_CIRCLE BFLAG(14) /* 循環閱讀 */
#define UFO2_ORIGUI BFLAG(15) /* 關閉風之塔超炫介面 */

#define UFO2_DEF_ANONY BFLAG(16) /* 預設不匿名 */
#define UFO2_DEF_LEAVE BFLAG(17) /* 預設不離站 */
#define UFO2_REPLY BFLAG(18) /* 開啟水球回顧介面 */
#define UFO2_READNEWS BFLAG(19) /* 上站就讀新聞 */
#define UFO2_ONLINE BFLAG(20) /* 關閉作者線上提示 */
#define UFO2_BOTTOM BFLAG(21) /* 關閉置底功能 */

#define UFO2_ACL BFLAG(24) /* true if ACL was ON */
#define UFO2_REALNAME BFLAG(28) /* visor.991030: 真實姓名 */

#include "hdr.h"


/* ----------------------------------------------------- */
/* control of board vote : 256 bytes */
/* ----------------------------------------------------- */


typedef struct VoteControlHeader
{
time_t chrono; /* 投票開辦時間 */ /* Thor:為 key */
/* 而且 match HDR chrono */
time_t bstamp; /* 看板辨識代碼 */ /* Thor:為 key */
time_t vclose; /* 投票結束時間 */
char xname[17]; /* 主檔名 */ /* Thor: match HDR的xname */
char vsort; /* 開票結果是否排序 */
char vpercent; /* 是否顯示百分比例 */
char cdate[9]; /* 結束日期 */ /* Thor.990329: 只供顯示, y2k */
int maxblt; /* 每人可投幾票 */
char owner[129]; /* 舉辦人 */
char check; /* 學生投票系統 */
char date[9]; /* 開始日期 */ /* Thor: match HDR的date*/
char title[TTLEN + 1]; /* 投票主題 */
} VCH;

typedef struct VoteStudents
{
char grad[3];
char major[2];
char first[4];
char last[4];
char end;
} VCHS;


typedef char vitem_t[32]; /* 投票選項 */


/* filepath : brd//.VCH, brd//@/... */


/* ----------------------------------------------------- */
/* Mail-Queue struct : 256 bytes */
/* ----------------------------------------------------- */


typedef struct
{
time_t mailtime; /* 寄信時間 */
char method;
char sender[IDLEN + 1];
char username[24];
char subject[TTLEN + 1];
char rcpt[60];
char filepath[77];
char *niamod; /* reverse domain */
} MailQueue;


#define MQ_UUENCODE 0x01 /* 先 uuencode 再寄出 */
#define MQ_JUSTIFY 0x02 /* 身分認證信函 */
#define MQ_MIME 0x04 /* MIME */

/* ----------------------------------------------------- */
/* PAL : friend struct : 64 bytes */
/* ----------------------------------------------------- */


typedef struct
{
char userid[IDLEN + 1];
char ftype;
char ship[46];
int userno;
} PAL;

#ifdef HAVE_BANMSG
typedef struct
{
char userid[IDLEN + 1];
char ship[46];
int userno;
} BANMSG;
#endif


/* 上站通知名單 */
typedef struct
{
char userid[IDLEN+1];
int userno;
} ALOHA;


#define PAL_BAD 0x02 /* 好友 vs 損友 */


/* ----------------------------------------------------- */
/* structure for call-in message : 100 bytes */
/* ----------------------------------------------------- */


typedef struct
{
time_t btime;
UTMP *caller; /* who call-in me ? */
// unsigned long long sender; /* calling userno */
// unsigned long long recver; /* called userno */
int sender;
int recver;
char userid[IDLEN + 1];
char msg[71]; /* 熱訊 */
} BMW; /* bbs message write */

#define BMW_MODE 0x01


/* ----------------------------------------------------- */
/* Structure used in UTMP file : 148 bytes */
/* ----------------------------------------------------- */
#ifdef HAVE_PIP_FIGHT1
typedef struct
{
char name[20];
int pid;
int hp; /*體力*/
int maxhp; /*體力上限*/
int mp; /*法力*/
int maxmp; /*法力上限*/
int attack; /*攻擊*/
int resist; /*防禦*/
int speed; /*速度*/
int mresist; /*魔法防禦*/
int resistmore; /*防禦型態*/
int nodone; /*完成*/
int leaving; /*離開*/
int pipmode; /*狀態*/
int mode; /*幾代雞*/
int msgcount; /*訊息個數*/
int chatcount;
char msg[150]; /*訊息內容*/
char chat[10][150]; /*聊天內容*/
} pipdata;

typedef struct
{
pipdata pip1;
pipdata pip2;
} PIPUTMP;
#endif

struct UTMP
{
pid_t pid; /* process ID */
int userno; /* user number in .PASSWDS */

time_t idle_time; /* active time for last event */
usint mode; /* bbsmode */
usint ufo; /* the same as userec.ufo */
u_long in_addr; /* Internet address */
int sockport; /* socket port for talk */
UTMP *talker; /* who talk-to me ? */

BMW *mslot[BMW_PER_USER];

char userid[IDLEN + 1]; /* user's ID */
char mateid[IDLEN + 1]; /* partner's ID */
char username[24];
char realname[20];
usint userlevel;
char from[30]; /* remote host */
char today[5];
#ifdef HAVE_SHOWNUMMSG
int num_msg; /* receive messages */
#endif
int pal_max; /* friends max */
int pal_spool[PAL_MAX]; /* friends spool */
#ifdef HAVE_BANMSG
int banmsg_max; /* banmsg max */
int banmsg_spool[BANMSG_MAX]; /* banmsg spool */
#endif
#ifdef HAVE_BOARD_PAL
// char board_pal[IDLEN + 1];
int board_pal;
#endif
#ifdef HAVE_PIP_FIGHT1
pipdata *pip;
#endif
#ifdef PREFORK
int bgen; /* generation */
#endif
};


/* ----------------------------------------------------- */
/* BOARDS struct : 256 bytes */
/* ----------------------------------------------------- */


typedef struct BoardHeader
{
char brdname[IDLEN + 1]; /* board ID */
char title[BTLEN + 1];
char color;
char class[5];
char BM[BMLEN + 1]; /* BMs' uid, token '/' */

uschar bvote; /* 共有幾項投票舉行中 */

time_t bstamp; /* 建立看板的時間, unique */
usint readlevel; /* 閱讀文章的權限 */
usint postlevel; /* 發表文章的權限 */
usint battr; /* 看板屬性 */
time_t btime; /* .DIR 的 st_mtime */
int bpost; /* 共有幾篇 post */
time_t blast; /* 最後一篇 post 的時間 */
usint expiremax; /* Expire Max Post */
usint expiremin; /* Expire Min Post */
usint expireday; /* Expire old Post */
char reserve[116]; /* 保留未用 */
} BRD;

#define BRD_NOZAP 0x00001 /* 不可 zap */
#define BRD_NOTRAN 0x00002 /* 不轉信 */
#define BRD_NOCOUNT 0x00004 /* 不計文章發表篇數 */
#define BRD_NOSTAT 0x00008 /* 不納入熱門話題統計 */
#define BRD_NOVOTE 0x00010 /* 不公佈投票結果於 [sysop] 板 */
#define BRD_ANONYMOUS 0x00020 /* 匿名看板 */
#define BRD_NOFORWARD 0x00040 /* lkchu.981201: 不可轉寄 */
#define BRD_LOGEMAIL 0x00080 /* 自動附加e-mail */
#define BRD_NOBAN 0x00100 /* 不擋信 */
#define BRD_NOLOG 0x00200 /* 不紀錄站內違法 */
#define BRD_NOCNTCROSS 0x00400 /* 不紀錄 cross post */
#define BRD_NOREPLY 0x00800 /* 不能回文章 */
#define BRD_NOLOGREAD 0x01000 /* 不紀錄看版閱讀率 */
#define BRD_CHECKWATER 0x02000 /* 紀錄灌水次數 */
#define BRD_CHANGETITLE 0x04000 /* 版主修改版名 */
#define BRD_MODIFY 0x08000 /* 使用者修改文章 */
#define BRD_PRH 0x10000 /* 推薦文章 */
#define BRD_BOTTOM 0x20000 /* 關閉置底功能 */
#define BRD_NOCROSS 0x40000 /* 不接受轉文章轉錄 */

#define POST_STOP_PERM 0x01 /* 自動抓 crosspost 開關旗標 */

typedef struct NewBoardHeader
{
char brdname[IDLEN + 1];
char title[49];
char category[5];
char bm[IDLEN * 3 + 3];
time_t btime;
time_t etime;
char xname[32];
char owner[IDLEN +1];
char date[9];
usint mode;
usint total;
usint agree;
usint assist;
char reserve[64];
} NBRD;


#define NBRD_ING 0x01 /* 連署中 */
#define NBRD_OPEN 0x02 /* 已開版 */
#define NBRD_CLOSE 0x04 /* 未達連署人數 */
#define NBRD_STOP 0x08 /* 禁止開版 停止連署 */
#define NBRD_OK 0x10 /* 連署完成 */
#define NBRD_START 0x20 /* 申請通過 */
#define NBRD_REJECT 0x40 /* 申請不通過 */
#define NBRD_NBRD 0x1000 /* 新版 */
#define NBRD_CANCEL 0x2000 /* 廢版主 */
#define NBRD_OTHER 0x8000 /* 其它 */

#define NBRD_MASK (NBRD_NBRD|NBRD_CANCEL|NBRD_OTHER)

/* ----------------------------------------------------- */
/* Class image */
/* ----------------------------------------------------- */


#define CLASS_INIFILE "Class"
#define CLASS_IMGFILE "run/class.img"
#define PROFESS_INIFILE "Profess"
#define PROFESS_IMGFILE "run/profess.img"

#define CH_END -1
#define CH_TTLEN 64


typedef struct
{
int count;
char title[CH_TTLEN];
short chno[0];
} ClassHeader;


/* ----------------------------------------------------- */
/* cache.c 中運用的資料結構 */
/* ----------------------------------------------------- */


typedef struct
{
int shot[MOVIE_MAX]; /* Thor.980805: 可能還要再加1,因合理範圍為0..MOVIE_MAX */
char film[MOVIE_SIZE];
} FCACHE;


#define FILM_SIZ 4000 /* max size for each film */


#define FILM_WELCOME (0)
#define FILM_GOODBYE (1)
#define FILM_APPLY (2) /* new account */
#define FILM_TRYOUT (3)
#define FILM_POST (4)
#define FILM_GEM (5) /* help message */
#define FILM_BOARD (6)
#define FILM_CLASS (7)
#define FILM_PAL (8)
#define FILM_MAIL (9)
#define FILM_ULIST (10)
#define FILM_VOTE (11)
#define FILM_MORE (12)
#define FILM_EDIT (13)
#define FILM_BMW (14)
#define FILM_BANMAIL (15)
#define FILM_INCOME (16)
#define FILM_ADMIN (17)
#define FILM_SONG (18)
#define FILM_MIME (19)
#define FILM_CONTACT (20)
#define FILM_MEMORANDUM (21)
#define FILM_ALOHA (22)
#define FILM_SIGNUP (23)
#define FILM_MOVIE (24) /* normal movies */


#define FILM_ROW (40)

typedef struct
{
UTMP uslot[MAXACTIVE]; /* UTMP slots */
usint count; /* number of active session */
usint offset; /* offset for last active UTMP */

double sysload[3];
int avgload;

BMW *mbase; /* sequential pointer for BMW */
BMW mpool[BMW_MAX];
#ifdef HAVE_PIP_FIGHT1
PIPUTMP pip[PIP_MAX];
#endif

} UCACHE;


typedef struct
{
BRD bcache[MAXBOARD];
int number;
time_t uptime;
} BCACHE;

typedef struct
{
BANMAIL fwcache[MAXFIREWALL];
int number;
} FWCACHE;

typedef struct
{
FW fwocache[MAXOFILEWALL];
int mode;
} FWOCACHE;


typedef struct
{
char verb[9]; /* 動詞 */
char chinese[7]; /* 中文翻譯 */
char part1_msg[60]; /* 介詞 */
char part2_msg[60]; /* 動作 */
} ChatAction;


typedef struct
{
ChatAction chat_speak[SPEAK_MAX+1];
ChatAction chat_condition[CONDITION_MAX+1];
ChatAction chat_party[PARTY_MAX+1];
ChatAction chat_party2[PARTY_MAX+1];
ChatAction chat_person[CONDITION_MAX+1];
} MUD;


/* ----------------------------------------------------- */
/* screen.c 中運用的資料結構 */
/* ----------------------------------------------------- */


#define ANSILINELEN (255) /* Maximum Screen width in chars */
/* 假設 160 個就夠用了,最多可以到 255 */


/* Screen Line buffer modes */


#define SL_MODIFIED (1) /* if line has been modifed, screen output */
#define SL_STANDOUT (2) /* if this line contains standout code */
#define SL_ANSICODE (4) /* if this line contains ANSI code */


typedef struct screenline
{
uschar oldlen; /* previous line length */
uschar len; /* current length of line */
uschar width; /* padding length of ANSI codes */
uschar mode; /* status of line, as far as update */
uschar smod; /* start of modified data */
uschar emod; /* end of modified data */
uschar sso; /* start of standout data */
uschar eso; /* end of standout data */
uschar data[ANSILINELEN];
} screenline;


typedef struct LinkList
{
struct LinkList *next;
char data[0];
} LinkList;


/* ----------------------------------------------------- */
/* xover.c 中運用的資料結構 */
/* ----------------------------------------------------- */


typedef struct OverView
{
int pos; /* current position */
int top; /* top */
int max; /* max */
int key; /* key */
char *xyz; /* staff */
struct OverView *nxt; /* next */
char dir[0]; /* data path */
} XO;


typedef struct
{
int key;
int (*func) ();
} KeyFunc;


typedef struct
{
XO *xo;
KeyFunc *cb;
int mode;
} XZ;


typedef struct
{
time_t chrono;
int recno;
} TagItem;


#ifdef MODE_STAT
typedef struct
{
time_t logtime;
time_t used_time[30];
} UMODELOG;


typedef struct
{
time_t logtime;
time_t used_time[30];
int count[30];
int usercount;
} MODELOG;
#endif

/* ----------------------------------------------------- */
/* acct.c 中運用的資料結構 */
/* ----------------------------------------------------- */
#define DENY_SEL_TALK 0x00000001
#define DENY_SEL_POST 0x00000002
#define DENY_SEL_MAIL 0x00000004
#define DENY_SEL_AD 0x00000008
#define DENY_SEL_SELL 0x00000010
#define DENY_SEL_OK 0x00000020
#define DENY_SEL (DENY_SEL_TALK|DENY_SEL_POST|DENY_SEL_MAIL|DENY_SEL_AD|DENY_SEL_SELL)

#define DENY_DAYS_1 0x00010000
#define DENY_DAYS_2 0x00020000
#define DENY_DAYS_3 0x00040000
#define DENY_DAYS_4 0x00080000
#define DENY_DAYS_5 0x00100000
#define DENY_DAYS (DENY_DAYS_1|DENY_DAYS_2|DENY_DAYS_3|DENY_DAYS_4|DENY_DAYS_5)

#define DENY_MODE_TALK 0x01000000
#define DENY_MODE_MAIL 0x02000000
#define DENY_MODE_POST 0x04000000
#define DENY_MODE_GUEST 0x08000000
#define DENY_MODE_NICK 0x10000000
#define DENY_MODE_ALL (DENY_MODE_TALK|DENY_MODE_MAIL|DENY_MODE_POST|DENY_MODE_NICK|DENY_MODE_GUEST)


typedef struct
{
char email[60];
int num;
} SAME_EMAIL;

typedef struct
{
char email[56];
int times;
time_t deny;
} EMAIL;

/* ----------------------------------------------------- */
/* classtable.c 中運用的資料結構 */
/* ----------------------------------------------------- */
typedef struct
{
int lost;
char name[9];
char teacher[9];
char class[5];
char obj_id[7];
} CLASS;

typedef struct
{
int hour;
int min;
} CLOCK;


typedef struct
{
CLOCK start[13];
CLOCK end[13];
} CLASS_TIME;

typedef struct
{
int mode;
CLASS table[6][13];
CLASS_TIME time;
} CLASS_TABLE;

/* ----------------------------------------------------- */
/* list.c 中運用的資料結構 */
/* ----------------------------------------------------- */
typedef struct
{
char userid[IDLEN+1];
char userdesc[51];
} LIST;

typedef struct
{
char title[MAX_LIST][41];
} LIST_TITLE;

/* ----------------------------------------------------- */
/* counter.c 中運用的資料結構 */
/* ----------------------------------------------------- */
typedef struct
{
int hour_max_login;
int day_max_login;
int samehour_max_login;
int max_regist;
int cur_hour_max_login;
int cur_day_max_login;
time_t samehour_max_time;
int max_regist_old;
int samehour_max_login_old;
char ident[90];
} COUNTER;

typedef struct
{
time_t date;
int mode;
char userid[IDLEN + 1];
char username[19];
char buf[3][80];
} notedata;

typedef struct
{
int start;
int end;
} REAPER_TIME;

/* ----------------------------------------------------- */
/* 生日年齡星座統計 中運用的資料結構 */
/* ----------------------------------------------------- */

#ifdef HAVE_PERSON_DATA
#define USER_ATTR_SUPPORT 0x00000001


typedef struct
{
int year;
int month;
int day;
int sex;
int blood;
int mode;
char reserve[232];
} USER_ATTR;
#endif

typedef struct
{
char *grad;
char *server;
} YZU_MAIL;

typedef struct
{
char name[20];
char host[26];
char ip[16];
char port[6];
} BBSNET;


#define TOPLOGINS (0)
#define TOPPOSTS (1)

#define TOPNUM (50)
#define TOPNUM_HALF (TOPNUM/2)

typedef struct
{
char userid[IDLEN + 1];
char username[24];
int num;
} DATA;

#ifdef HAVE_CLASSTABLE
typedef struct
{
char condensation[9];
char name[30];
char teacher[11];
char other[30];
char room[20];
int valid;
int x;
int y;
} CLASS_TABLE2;

#ifdef HAVE_CLASSTABLEALERT
typedef struct
{
char condensation[9];
char room[20];
usint used;
} CLASS_TABLE_ALERT_ITEM;

typedef struct
{
CLASS_TABLE_ALERT_ITEM item[78];
usint userno;
} CLASS_TABLE_ALERT;

#endif
#endif

#ifdef HAVE_OBSERVE_LIST
typedef struct
{
char userid[16];
usint userno;
char title[64];
char reserve[44];
} OBSERVE;

typedef struct
{
usint userno[MAXOBSERVELIST];
int total;
int mode;
} OCACHE;

#endif

typedef struct
{
void *func;
/* int (*func) (); */
usint level;
int umode;
char *desc;
} MENU;

typedef struct PersonalBoard
{
char userid[IDLEN + 1];
char email[60];
char brdname[IDLEN + 1];
char brdtitle[BTLEN + 1];
usint state;
} PB;

#define PB_APPLY 0x01 /* 申請中 */
#define PB_OPEN 0x02 /* 已開版 */

#endif /* _STRUCT_H_ */