summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2003-08-06 14:14:06 +0800
committerin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2003-08-06 14:14:06 +0800
commitab5d43c74a4ae38c36435f922ed01f076c44d927 (patch)
treeb5f1124a973a87af92783ffeca58fed334d1ed56
parent8e2cb662055d2a00473d4e08ab41e3e1724bce5f (diff)
downloadpttbbs-ab5d43c74a4ae38c36435f922ed01f076c44d927.tar
pttbbs-ab5d43c74a4ae38c36435f922ed01f076c44d927.tar.gz
pttbbs-ab5d43c74a4ae38c36435f922ed01f076c44d927.tar.bz2
pttbbs-ab5d43c74a4ae38c36435f922ed01f076c44d927.tar.lz
pttbbs-ab5d43c74a4ae38c36435f922ed01f076c44d927.tar.xz
pttbbs-ab5d43c74a4ae38c36435f922ed01f076c44d927.tar.zst
pttbbs-ab5d43c74a4ae38c36435f922ed01f076c44d927.zip
add brc.txt by scw
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1084 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--docs/brc.txt154
1 files changed, 154 insertions, 0 deletions
diff --git a/docs/brc.txt b/docs/brc.txt
new file mode 100644
index 00000000..d25692bf
--- /dev/null
+++ b/docs/brc.txt
@@ -0,0 +1,154 @@
+
+ BRC documentation by scw 08/05/2003
+
+���_�G
+ �o�g�峹�D�n�O���� brc_* ���禡�A�o�ը禡�O pttbbs �ΨӬ����峹�wŪ/��Ū
+ ���u��A���]���������x�s�覡�Q�� tricky �s�a�Ϫ����e�۷������C���F���{�έץ�
+ �䤤���@�� bug�A���̦����˲M�F�䤤�B�@�覡�A�ì��伶�g�����A�Ʊ��޲z�̦���
+ �U�C
+
+����H�Ӭݳo�g�峹�H
+ 1. pttbbs ���t�κ޲z�̡C�p�G�z�n��o�����i��ק�Χ��ΡA�Ʊ�o�g�峹���
+ �z���ҧU�q�C
+ 2. �Q�n��s�o�إη��֪Ŷ��O�U���j��T����k���H�C
+
+BRC �O����H�p��B�@�H
+ brc_* �O�w�q�b pttbbs/mbbsd/board.c �����@�ը禡�A�t�d�����峹�wŪ/��Ū�A
+ �����S�I�O�|���Ŷ����֡C�i�H�b 2.4k �H�����Ŷ��O�U�@�ӤH�b�������峹�wŪ/
+ ��Ū�C���M�A�o�˪���k���i��u�������A���O���ϥΤW�w�g�����F�C�����򻡬O��
+ �����O�H�o��������x�s�覡�����C
+ �����ɦb home/[first charactor of id]/[id]/.boardrc�C�ɮ׮榡�p�U�G
+
+ FILE := RECORDS ;
+ RECORDS := RECORDS RECORD | ;
+ RECORD := BOARD_NAME BRC_DATA ;
+ BRC_DATA := BRC_NUM BRC_LIST ;
+ BRC_LIST := NUM NUM ... NUM ; (�@ BRC_NUM �� NUM)
+ BOARD_NAME �O 15 bytes �����W (#define BRC_STRLEN 15)
+ BRC_NUM �O��o�Ӫ����x�s�q�A1 byte �H binary �覡�x�s�A��� <= MAX_NUM (80)
+ BRC_LIST �O��o�Ӫ��������A��n�� BRC_NUM �� 4 bytes integers�C
+ �t�~�b 24576 bytes (#define BRC_MAXSIZE 24576) ���~����Ƥ��|�Q�Ψ�C
+
+ �b�U���|�ݨ�ABOARD_NAME ���Υt�~�x�s�]�w�g��buser�������Ƹ̤F�^�A��L
+ �ⶵ, BRC_NUM �� BRC_LIST ���|��b�����������ܼƤ�, brc_num & brc_list �C
+ �P�w�@���ɮ׬O�_�w�gŪ�L����k�O�b brc_list ���j�M�ɮ׫إߪ��ɶ��A�]�N�O
+ �ɦW M.xxxxxxxxxx.A.yyy �� xxxxxxxxx �����ӼƦr�C�p�G�o�ӼƦr���b brc_list ��
+ �X�{�N�O�wŪ�A�n���p�G brc_list ���ҥH���Ʀr����o���ɮת��إ߮ɶ��j�]�]�N�O
+ �o���ɮת��إ߮ɶ��b�Ҧ� brc_list �����ɶ��I���e�^�]�O�wŪ�A�̫ᬰ�F�`�٪Ŷ�
+ �٦��@�ӧP�w�]���o�ӧP�w�O�Ĥ@�Ӱ����^�A�p�G�ɮ׫إ߮ɶ��b login �ɶ����@�~
+ ���e�A�@�߬O�wŪ�C
+ �o�˥i�H�ݥX������o�Ӥ�k���O�u���������O�w�g�����C����������]���T�ӡG
+ �����A brc_num <= 80 �]�N�O brc_list �̦h�s�K�Q�ӼơA�o���ܰ��F�ܤ[�H�e���峹
+ �~�A�u�|���K�Q�g�O�wŪ���C�ĤG�N�O�Ҧ��@�~�e���峹���|�Q�P���wŪ�C�̫�A�p�G�@
+ �ӤH�ݪ����Ӧh�A�� .boardrc �j�p�W�L BRC_MAXSIZE ���Ǫ��������N�|�����] 24576
+ bytes �̤֥i�H�s 73 �Ӫ�����ơA�o�٬O�Υ����� brc_num ���O 80 �p�⪺�^�C���o
+ �T�Ӥp���I�v�T���Ӥ��j�a�H
+
+BRC ��@
+
+ interface: (in proto.h)
+
+ int brc_unread(char *fname, int bnum, int *blist);
+ �P�_�@�g�峹�O�_�wŪ�C
+ �ǤJ�ȡG�峹�ɦW (fname) �H�� brc_num (bnum) �M brc_list (blist)�C
+ �Ǧ^�ȡG�p�G�� bnum �M blist �P�_���g�峹��Ū�Ǧ^ 1�C
+ �_�h�Ǧ^ 0�C
+ �B�~�ĪG�G�L�C
+
+ int brc_initial(char *boardname);
+ ��l�Ʀb�@�Ӫ����wŪ��Ū���A�C
+ �ǤJ�ȡG�n��l�ƪ����W�C
+ �Ǧ^�ȡG�Y��줧�e�������Ǧ^�s�� brc_num�A�_�h�Ǧ^ 0�C
+ �B�~�ĪG�G�p�G�ǤJ���ݪO�N�O�ثe�ݪO�|�����Ǧ^ brc_num, �����O���ơC�_�h
+ ���禡�|���N�ثe�� brc data �g�J .boardrc ���A��� currboard �A���o
+ currbid �M currbrdattr ��AŪ���ç�s brc_num �� brc_list�C�p�G�b�ϥΪ�
+ �� .boardrc ���S������o�Ӫ��������A�|�]�w brc_num = 1�Abrc_list[0] = 1
+ �öǦ^ 0�C
+
+ void brc_update();
+ �N�ثe�� brc data �g�J .boardrc ���C
+ �B�~�ĪG�G�p�G brc data ���Q���ΨϥΪ��v�������h���|���ʧ@�C
+
+ void brc_addlist(char *fname);
+ �N�峹�Хܬ���Ū�C
+ �ǤJ�ȡG�n�Хܬ���Ū���峹�ɦW�C
+
+ global variables: (in var.c)
+
+ int brc_num;
+ brc_list �������ļƦr�ӼơC
+
+ int brc_list[BRC_MAXNUM];
+ �wŪ�峹���s�ɮɶ��C
+
+ (in var.h)
+ extern int brc_num;
+ extern int brc_list[BRC_MAXNUM];
+
+ constant definition: (in board.c)
+
+ #define BRC_STRLEN 15 /* Length of board name */
+ �O�W�̤j���סC
+
+ #define BRC_MAXSIZE 24576
+ .boardrc �����Ĥj�p�C
+
+ #define BRC_ITEMSIZE (BRC_STRLEN + 1 + BRC_MAXNUM * sizeof( int ))
+ �C�� record ���̤j�j�p�C
+
+ #define BRC_MAXNUM 80
+ brc_num ���̤j�ȡC
+
+ private variables: (in board.c)
+
+ static time_t brc_expire_time;
+ brc_list ���Ȫ��U���A�ɶ��b�����e���@�߷��@�wŪ�C�|�b init_brdbuf ���Q�]
+ �w�� login_start_time - 365 * 86400�C
+
+ static int brc_changed = 0;
+ �q�W��Ū�� .boardrc ����ɬ���Abrc_num �P brc_list �O�_���ܹL�]����ּg
+ �ɪ����ơ^�C
+
+ static char brc_buf[BRC_MAXSIZE];
+ �I�s read_brc_buf �� .boardrc ���e BRC_MAXSIZE bytes �|�Q�m�J�o�� buffer
+ ���C
+
+ static int brc_size;
+ �I�s read_brc_buf �� brc_buf �������Ħr���ơC
+
+ static char brc_name[BRC_STRLEN];
+ �ثe brc data �����W�C �]�����D�i�_�� currboard �N���H by scw�^
+
+ static char * fn_boardrc = ".boardrc";
+ brc �]�w�ɦW�C
+
+ char * brc_buf_addr=brc_buf;
+ unused variable
+
+ private funcions: (in board.c)
+
+ static void read_brc_buf();
+ �q .boardrc ��Ū���̦h BRC_MAXSIZE bytes �æs�J brc_buf ���A�N�s�J���r��
+ �Ʀs�b brc_size ���C
+
+ static char * brc_getrecord(char *ptr, char *name, int *pnum, int *list);
+ �q buffer ��Ū���@�������C �]�q�`�b read_brc_bufi() ����ϥΡ^
+ �ǤJ�ȡGptr ���nŪ���� buffer�A name, pnum, �M list ���O�g�JŪ�쪺��ơC
+ �Ǧ^�ȡG���VŪ�X�� record �U�@�Ӧr�������СC
+ �B�~�ĪG�Gname �|�Q�s�J�̦h BRC_MAXLEN �Ӧr���A��Ū�쪺 record �����W�C
+ pnum �|�Q�s�JŪ�쪺 brc_num�Alist �|�Q�g�J *pnum ����ơA�� brc_list
+ ����ơC
+
+ static char * brc_putrecord(char *ptr, char *name, int num, int *list);
+ �P brc_getrecord() ���@�Υ��n�ۤϡA�N��Ƽg�J puffer ���C
+ �ǤJ�ȡGptr �u�V�n�g�J�� buffer�Aname, num, list ���O�O�n�g�J����ơC
+ �Ǧ^�ȡG���V�g�J�� record �U�@�Ӧr�������СC
+ �B�~�ĪG�G�Y��ƬO�X�k�� (num > 0 && list[0] > brc_expire_time) ptr �|�Q
+ �g�J BRC_ITEMSIZE bytes ����ơC�b list ���� brc_expire_time ���Ʀr���|
+ �Q�g�J�]�ҥH�g�J�� brc_num �i��� num �p�^�C
+
+ static int brc_unread_time(time_t ftime, int bnum, int *blist);
+ �� brc_unread() �����A�u�O�ǤJ���O�ɮ׫إߪ��ɶ��C
+ �ǤJ�ȡG�峹���إ߮ɶ� (ftime) �� brc_num (bnum) �M brc_list (blist)�C
+ �Ǧ^�ȡG�p�G�� bnum �M blist �P�_���g�峹��Ū�Ǧ^ 1�C
+ �_�h�Ǧ^ 0�C