/* $Id$ */ #ifndef INCLUDE_COMMON_H #define INCLUDE_COMMON_H #define STR_GUEST "guest" // guest account #define STR_REGNEW "new" // 用來建新帳號的名稱 #define DEFAULT_BOARD str_sysop // BBS Configuration Files #define FN_CONF_EDITABLE "etc/editable" // 站務可編輯的系統檔案列表 #define FN_CONF_RESERVED_ID "etc/reserved.id" // 保留系統用無法註冊的 ID #define FN_CONF_BINDPORTS "etc/bindports.conf" // 預設要提供連線服務的 port 列表 // BBS Data File Names #define FN_PASSWD BBSHOME "/.PASSWDS" /* User records */ #define FN_CHICKEN "chicken" #define FN_USSONG "ussong" /* 點歌統計 */ #define FN_POST_NOTE "post.note" /* po文章備忘錄 */ #define FN_POST_BID "post.bid" #define FN_MONEY "etc/money" #define FN_OVERRIDES "overrides" #define FN_REJECT "reject" #define FN_WATER "water" #define FN_CANVOTE "can_vote" #define FN_VISABLE "visable" // 不知道是誰拼錯的,將錯就錯吧... #define FN_USIES "usies" /* BBS log */ #define FN_DIR ".DIR" #define FN_BOARD ".BRD" /* board list */ #define FN_USEBOARD "usboard" /* 看板統計 */ #define FN_NOTE_ANS "note.ans" #define FN_TOPSONG "etc/topsong" #define FN_OVERRIDES "overrides" #define FN_TICKET "ticket" #define FN_TICKET_END "ticket.end" #define FN_TICKET_LOCK "ticket.end.lock" #define FN_TICKET_ITEMS "ticket.items" #define FN_TICKET_RECORD "ticket.data" #define FN_TICKET_USER "ticket.user" #define FN_TICKET_OUTCOME "ticket.outcome" #define FN_TICKET_BRDLIST "boardlist" #define FN_BRDLISTHELP "etc/boardlist.help" #define FN_BOARDHELP "etc/board.help" #define FN_USERMEMO "memo.txt" // 使用者個人記事本 #define FN_BADLOGIN "logins.bad" // in BBSHOME & user directory // 自訂刪除文章時出現的標題與檔案 #ifndef FN_SAFEDEL #define FN_SAFEDEL ".deleted" #endif #ifndef STR_SAFEDEL_TITLE #define STR_SAFEDEL_TITLE "(本文已被刪除)" #endif #define MSG_DEL_CANCEL "取消刪除" #define MSG_BIG_BOY "我是大帥哥! ^o^Y" #define MSG_BIG_GIRL "世紀大美女 *^-^*" #define MSG_LITTLE_BOY "我是底迪啦... =)" #define MSG_LITTLE_GIRL "最可愛的美眉! :>" #define MSG_MAN "麥當勞叔叔 (^O^)" #define MSG_WOMAN "叫我小阿姨!! /:>" #define MSG_PLANT "植物也有性別喔.." #define MSG_MIME "礦物總沒性別了吧" #define MSG_CLOAKED "哈哈!我隱形了!看不到勒... :P" #define MSG_UNCLOAK "我要重現江湖了...." #define MSG_WORKING "處理中,請稍候..." #define MSG_CANCEL "取消。" #define MSG_USR_LEFT "使用者已經離開了" #define MSG_NOBODY "目前無人上線" #define MSG_DEL_OK "刪除完畢" #define MSG_DEL_CANCEL "取消刪除" #define MSG_DEL_ERROR "刪除錯誤" #define MSG_DEL_NY "請確定刪除(Y/N)?[N] " #define MSG_FWD_OK "文章轉寄完成!" #define MSG_FWD_ERR1 "轉寄錯誤: 系統錯誤 system error" #define MSG_FWD_ERR2 "轉寄錯誤: 位址錯誤 address error" #define MSG_SURE_NY "請您確定(Y/N)?[N] " #define MSG_SURE_YN "請您確定(Y/N)?[Y] " #define MSG_BID "請輸入看板名稱: " #define MSG_UID "請輸入使用者代號: " #define MSG_PASSWD "請輸入您的密碼: " #define MSG_BIG_BOY "我是大帥哥! ^o^Y" #define MSG_BIG_GIRL "世紀大美女 *^-^*" #define MSG_LITTLE_BOY "我是底迪啦... =)" #define MSG_LITTLE_GIRL "最可愛的美眉! :>" #define MSG_MAN "麥當勞叔叔 (^O^)" #define MSG_WOMAN "叫我小阿姨!! /:>" #define MSG_PLANT "植物也有性別喔.." #define MSG_MIME "礦物總沒性別了吧" #define ERR_BOARD_OPEN ".BOARD 開啟錯誤" #define ERR_BOARD_UPDATE ".BOARD 更新有誤" #define ERR_PASSWD_OPEN ".PASSWDS 開啟錯誤" #define ERR_BID "你搞錯了啦!沒有這個板喔!" #define ERR_UID "這裡沒有這個人啦!" #define ERR_PASSWD "密碼不對喔!請檢查帳號及密碼大小寫有無輸入錯誤。" #define ERR_FILENAME "檔名不正確!" #define STR_AUTHOR1 "作者:" #define STR_AUTHOR2 "發信人:" #define STR_POST1 "看板:" #define STR_POST2 "站內:" /* AIDS */ #define AID_DISPLAYNAME "文章代碼(AID)" /* end of AIDS */ /* QUERY_ARTICLE_URL */ #define URL_DISPLAYNAME "文章網址" /* end of QUERY_ARTICLE_URL */ /* LONG MESSAGES */ #define MSG_SELECT_BOARD ANSI_COLOR(7) "【 選擇看板 】" ANSI_RESET "\n" \ "請輸入看板名稱(按空白鍵自動搜尋): " #define MSG_SEPERATOR "\ ───────────────────────────────────────" /* Flags to getdata input function */ #define NOECHO 0 #define DOECHO 1 #define LCECHO 2 #define NUMECHO 4 #define GCARRY 8 // (from M3) do not empty input buffer. #define YEA 1 /* Booleans (Yep, for true and false) */ #define NA 0 #define EQUSTR 0 /* for strcmp */ /* 好友關係 */ #define IRH 1 /* I reject him. */ #define HRM 2 /* He reject me. */ #define IBH 4 /* I am board friend of him. */ #define IFH 8 /* He is one of my friends. */ #define HFM 16 /* I am one of his friends. */ #define ST_FRIEND (IBH | IFH | HFM) #define ST_REJECT (IRH | HRM) /* 鍵盤設定 */ #define KEY_TAB 9 #define KEY_ESC 27 #define KEY_CR ('\r') // Ctrl('M'), 0x0D #define KEY_LF ('\n') // Ctrl('J'), 0x0A #define KEY_ENTER KEY_CR // for backward compatibility #define KEY_BS (Ctrl('H')) #define KEY_BS2 (0x7f) #define KEY_UP 0x0101 #define KEY_DOWN 0x0102 #define KEY_RIGHT 0x0103 #define KEY_LEFT 0x0104 #define KEY_STAB 0x0105 /* shift-tab */ #define KEY_HOME 0x0201 #define KEY_INS 0x0202 #define KEY_DEL 0x0203 #define KEY_END 0x0204 #define KEY_PGUP 0x0205 #define KEY_PGDN 0x0206 #define KEY_F1 0x0301 #define KEY_F2 0x0302 #define KEY_F3 0x0303 #define KEY_F4 0x0304 #define KEY_F5 0x0305 #define KEY_F6 0x0306 #define KEY_F7 0x0307 #define KEY_F8 0x0308 #define KEY_F9 0x0309 #define KEY_F10 0x030A #define KEY_F11 0x030B #define KEY_F12 0x030C #define KEY_UNKNOWN 0x0FFF /* unknown sequence */ #define QCAST int (*)(const void *, const void *) #define Ctrl(c) (c & 037) #define chartoupper(c) ((c >= 'a' && c <= 'z') ? c+'A'-'a' : c) #define LEN_AUTHOR1 5 #define LEN_AUTHOR2 7 /* the title of article will be truncate to PROPER_TITLE_LEN */ #define PROPER_TITLE_LEN 42 /* ----------------------------------------------------- */ /* 水球模式 邊界定義 */ /* ----------------------------------------------------- */ #define WB_OFO_USER_TOP 7 #define WB_OFO_USER_BOTTOM 11 #define WB_OFO_USER_HEIGHT ((WB_OFO_MSG_BOTTOM) - (WB_OFO_MSG_TOP) + 1) #define WB_OFO_USER_LEFT 28 #define WB_OFO_MSG_TOP 15 #define WB_OFO_MSG_BOTTOM 22 #define WB_OFO_MSG_LEFT 4 /* ----------------------------------------------------- */ /* 群組名單模式 Ptt */ /* ----------------------------------------------------- */ #define FRIEND_OVERRIDE 0 #define FRIEND_REJECT 1 #define FRIEND_ALOHA 2 #define FRIEND_POST 3 #define FRIEND_SPECIAL 4 #define FRIEND_CANVOTE 5 #define BOARD_WATER 6 #define BOARD_VISABLE 7 #define LOCK_THIS 1 // lock這線不能重複玩 #define LOCK_MULTI 2 // lock所有線不能重複玩 #define I_TIMEOUT (-2) /* Used for the getchar routine select call */ #define I_OTHERDATA (-333) /* interface, (-3) will conflict with chinese */ #define MAX_MODES (127) #define MAX_RECOMMENDS (100) #ifndef MIN #define MIN(a,b) (((a)<(b))?(a):(b)) #endif #ifndef MAX #define MAX(a,b) (((a)>(b))?(a):(b)) #endif #define toSTR(x) __toSTR(x) #define __toSTR(x) #x #define char_lower(c) ((c >= 'A' && c <= 'Z') ? c|32 : c) #define STR_CURSOR "●" #define STR_UNCUR " " #define NOTREPLYING -1 #define REPLYING 0 #define RECVINREPLYING 1 /* ----------------------------------------------------- */ /* 編輯器選項 */ /* ----------------------------------------------------- */ #define EDITFLAG_TEXTONLY (0x00000001) #define EDITFLAG_UPLOAD (0x00000002) #define EDITFLAG_ALLOWLARGE (0x00000004) #define EDITFLAG_ALLOWTITLE (0x00000008) // #define EDITFLAG_ANONYMOUS (0x00000010) #define EDIT_ABORTED -1 /* ----------------------------------------------------- */ /* Grayout Levels */ /* ----------------------------------------------------- */ #define GRAYOUT_COLORBOLD (-2) #define GRAYOUT_BOLD (-1) #define GRAYOUT_DARK (0) #define GRAYOUT_NORM (1) #define GRAYOUT_COLORNORM (+2) /* Typeahead */ #define TYPEAHEAD_NONE (-1) #define TYPEAHEAD_STDIN (0) /* ----------------------------------------------------- */ /* Constants */ /* ----------------------------------------------------- */ #define DAY_SECONDS (86400) #define MONTH_SECONDS (DAY_SECONDS*30) /* ----------------------------------------------------- */ /* Macros */ /* ----------------------------------------------------- */ #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) #define __builtin_expect(exp,c) (exp) #endif #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #ifndef SHM_HUGETLB #define SHM_HUGETLB 04000 /* segment is mapped via hugetlb */ #endif #endif