Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� CIT Forum CD-ROM

DBM(3)
XENIX System V (21 ���� 1987)

���
dbminit, fetch, store, delete, firstkey, nextkey - y�pa���e� �a�o� �a���x

���������

	typedef struct {char *dptr;int dsize;} datum;
	
	int dbminit (file)
	char *file;
	
	datum fetch (key)
	datum key;
	
	store (key, content)
	datum key, content;
	
	delete (key)
	datum key;
	
	datum firstkey ()
	
	datum nextkey (key)
	datum key;

��������
��� �y����� y�pa����� pa�o�o� �a�� �a���x, � �o�opo� �oc�y� � �a��o�y ��e�e��y �a�� ocy�ec����e�c� �o ����y. �y����� �o�y� o�c�y���a�� o�e�� �o����e �a�� �a���x (�o �����ap�a ��o�o�). �oc�y� �o ����y �o�e� ���� �a� �p����, �a� � �oc�e�o�a�e�����. �po�pa���, �c�o���y���e ��� �y�����, �o���� �o��o�o�a��c� c ��a�o� -ldbm.

�o�� key � content o��c��a��c� c �o�o��� ��e�� ���a datum, �a�a��e�o c�po�y �� dsize �a��o�, �a �o�opy� y�a���ae� dptr. �o�yc���� �po���o����e �a���e � ��o���o� c�c�e�e c��c�e��� � c���o����e c�po��. �a�a �a���x pa��e�ae�c� � ��yx �a��ax. �ep��� �a�� ��o �a�a�o� �a��, co�ep�a��� �ap�y pac�pe�e�e��� �a����. B�opo� �a�� co�ep��� co�c��e��o �a���e. ��� �ep�o�o �a��a ��ee� cy����c .dir, ��� ��opo�o - cy����c .pag.

��� �o�y�e��� �oc�y�a � �a�e ee �y��o o��p��� ���o�o� dbminit. B �o�e�� o��p���� �a��� file.dir � file.pag (file - ap�y�e�� �y����� dbminit) �o���� cy�ec��o�a��. �yc�a� �a�a co��ae�c� �y�e� co��a��� ���x �a��o� c �y�e�o� ����o�.

�oc�e o��p���� �a�� �a���e �� �ee ����pa��c� c �o�o��� �y����� fetch � �a�oc��c� � �ee c �o�o��� �y����� store. B��op�a � �a�ece��e �po���o���c� c �o�o��� ����a - ap�y�e��a key. K��� � c���a���e c ��� �a���e y����o�a��c� c �o�o��� �y����� delete. �oc�e�o�a�e����� �poc�o�p �cex ����e� � �a�e �o�e� ���� c�e�a� c �o�o��� �y����� firstkey � nextkey. Firstkey �o��pa�ae� �ep��� ���� � �a�e, nextkey �o��pa�ae� ����, �o�op�� c�e�ye� �a ����o�, ��������c� ap�y�e��o� �y�����. H��ec�e�y���� ���� �o��o��e� �poc�o�pe�� �c� �a�y:

	for(key=firstkey();key.dptr!=NULL;key=nextkey(key))

BO��PA�AE�OE ��A�E��E
�y�����, �o��pa�a���e �e��e ��a�e���, � c�y�ae o����� �o��pa�a�� o�p��a�e���oe ��c�o. B c�y�ae yc�e��o�o �a�ep�e��� �o��pa�ae�c� 0. �y�����, �o��pa�a���e ��a�e��e ���a datum, � c�y�ae o����� yc�a�a����a�� �o�e dptr � NULL.

�A�E�A���
�a�� `.pag' �o�e� co�ep�a�� �yc��e o��ac��, �a� ��o e�o o��e� �o�e� �p��ep�o � 4 pa�a �pe���a�� o��e� xpa����x � �a�e �a���x. �pe���e �epc�� XENIX �p� o�pa�e��� � �yc��� o��ac��� �a��a �o��� �a���a�� �o� ��x pea����e ��o�� ��c�o�o�o �poc�pa�c��a. Ta��e �a��� �e �o�y� ���� c�o��po�a�� o������� cpe�c��a�� (cp, cat, tp, tar, ar) �e� �pe��ap��e���o�o �a�o��e��� �yc��x o��ac�e�.

��a�a�e�� dptr � c�py��ypax ���a datum, �o��pa�ae��x �e�o�op��� �y�������, y�a���ae� c�a���ec�y� o��ac�� �a����, �o�opa� �epe�a��c��ae�c� o�epe���� ���o�o�.

Cy��ap�a� ����a �ap� `����/�a���e' �e �o���a �pe���a�� pa��epa ��o�a (512 �a��a). �o�ee �o�o, �ce �a��e �ap�, ��e���e �p� xe��po�a��� o��o ��a�e��e, �o���� pa��e�a��c� � o��o� ��o�e. Ec�� ��o �e �a�, store �o��pa�ae� o����y.

Delete �e ���e��e� o��e�a �a��a, �o �e�ae� y�a�e���e �a��c� �oc�y����� ��� �o�o�o �c�o���o�a���.

�op��o� ����e�, �a�a�ae��� �y������� firstkey � nextkey, o�pe�e��e�c� xe��po�a��e�.

��� �po�pa��� �epee��epa�e����, �o��o�y �x �e���� �c�o���o�a�� ��� pa�o�� c �ec�o������ �a�a�� o��o�pe�e��o.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT