Re: any support for deleting an entry from cdb file?

Pedro Melo Cunha <[email protected]> Tue, 12 Apr 2005 13:18:33 +0100
Newsgroups gmane.comp.djb.cdb
Message-ID <[email protected]>
--Apple-Mail-4--290356147
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=ISO-8859-1;
	format=flowed

Hi,

On Apr 11, 2005, at 8:24 PM, Dev Man wrote:

> Is there any way to delete records from the CDB database?
> I looked at the CDB source code a bit but didn't see offhand.
> If not, is it feasible to add?
> or is it really limited to add/read operations?

As you already know by now, 'C' is for constant: write once, read many.=20=

Neither deletes nor updates are available in the CDB library.

But :)

In an application I wrote, I needed to invalidade an entry of the CDB,=20=

to delete it. What I did, was this: each data element has an extra byte=20=

prefix, state. Initially the state is a space. If I want to delete it,=20=

I put a 'X' there.

I then made a wrapper around cdb_get that looks at the first byte and=20
if it's a space, just returns the size of the data - 1, if it's an X=20
returns 0.

Deleting is just opening for write, cdb_get, write an 'X'.

Update is possible, but even more hackish: if your update data is=20
smaller than the original data, and the key is the same, you could just=20=

write to the CDB, but the cdb_get would always return the original size=20=

of the data. You have to keep track of the real size of the data=20
inside. I did it once for proof of concept but I didn't use it.

Best regards,
--
Pedro Melo Cunha - <[email protected]>
Novis Telecom, S.A. - Dir. Rede - ISP <http://www.novis.pt/>
Edif=EDcio Novis - Estrada da Outurela, 118 - 2795-606 Carnaxide
tel: +351 21 0104340 - fax: +351 21 0104301


--Apple-Mail-4--290356147
Content-Transfer-Encoding: base64
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Disposition: attachment;
	filename=smime.p7s

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIOsTCCAwUw
ggJuoAMCAQICEQC+HJ/SzbWEpoBzY2bVZfgtMA0GCSqGSIb3DQEBBQUAMIG7MSQwIgYDVQQHExtW
YWxpQ2VydCBWYWxpZGF0aW9uIE5ldHdvcmsxFzAVBgNVBAoTDlZhbGlDZXJ0LCBJbmMuMTUwMwYD
VQQLEyxWYWxpQ2VydCBDbGFzcyAzIFBvbGljeSBWYWxpZGF0aW9uIEF1dGhvcml0eTEhMB8GA1UE
AxMYaHR0cDovL3d3dy52YWxpY2VydC5jb20vMSAwHgYJKoZIhvcNAQkBFhFpbmZvQHZhbGljZXJ0
LmNvbTAeFw0wMjA0MzAxNTMwMTlaFw0xOTA0MzAwOTIxNTVaMGwxGjAYBgNVBAoTEVJTQSBTZWN1
cml0eSBJbmMuMR4wHAYDVQQDExVSU0EgUHVibGljIFJvb3QgQ0EgdjExLjAsBgkqhkiG9w0BCQEW
H3JzYWtlb25yb290c2lnbkByc2FzZWN1cml0eS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
AoGBALR1JVrYRDvjQbGqIgqwcBNPh/xdjBRTbenNF7lbohWm3iOTANaSCe9Nw/ozw8Pg58roiZqX
iEAf9zcr91QgftjJBlEYATljbsbmSVlgqJ1wWWt9q62BURLXvQwsoWYmrKbYVYB9U6Jtdq1FzDsH
RL6Y/3jTiMgP8xoilFeQfkmPAgMBAAGjVzBVMAwGA1UdEwQFMAMBAf8wDgYDVR0PAQH/BAQDAgGG
MBYGA1UdIAQPMA0wCwYJKoZIhvcNBQYBMB0GA1UdDgQWBBT1TDF6UQM/LNeLl5lvqHGQq3g9mzAN
BgkqhkiG9w0BAQUFAAOBgQAqy+JcFzUV4FPaEjDJa4bCc9kn1y2Ouw7s1tUuOzH8RhyUUUbCj6mm
GLB1ROaX3J3t9fN+TQP7ss6z1kDnGGIdWsa6xXg5biLuHHYpUguRiVxcI3m0OW0rBrn4GQZS69l3
ICgiGnJ/rWHu4oIWC6Fon5U6I0HgM+2ybEj4rE4TpjCCA8swggKzoAMCAQICEDXDCjAuPEcjeh2K
wB0logIwDQYJKoZIhvcNAQEFBQAwNDELMAkGA1UEBhMCUFQxDTALBgNVBAoTBFhDT00xFjAUBgNV
BAMTDVhDT00gUGVyc29uYWwwHhcNMDQxMDA2MTY0MjI5WhcNMDUxMDA2MTY0MjI5WjB6MSAwHgYJ
KoZIhvcNAQkBFhFtZWxvQGlzcC5ub3Zpcy5wdDELMAkGA1UEBhMCUFQxGjAYBgNVBAoTEU5vdmlz
IFRlbGVjb20sIFNBMRIwEAYDVQQLEwlOb3ZpcyBJU1AxGTAXBgNVBAMTEFBlZHJvIE1lbG8gQ3Vu
aGEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALjnEFedwU6U3YkZSSRZST93IhZNwVPaSvRz
z88DIh+ZZq8OISLYe/kTgIe5xoJt10DY1QPe/ibGBh3Lm0djFpKUHEvmdgkjRl7kmQiERT7z9J9r
HoYqKbFlm+Ou3TSZ6BFpiKj6QzvikvFgSJHyWgjOiOxRzPDIvFUM0C7eqG+vAgMBAAGjggEVMIIB
ETAMBgNVHRMBAf8EAjAAMFMGA1UdIARMMEowSAYKKwYBBAH8egFkATA6MDgGCCsGAQUFBwIBFixo
dHRwczovL3d3dy54Y29tLnB0L2RvYy9DUF9YQ09NX1BlcnNvbmFsLnBkZjA+BgNVHR8ENzA1MDOg
MaAvhi1odHRwczovL3d3dy54Y29tLnB0L2NybC9DUkxfWENPTV9QZXJzb25hbC5jcmwwDgYDVR0P
AQH/BAQDAgSwMB8GA1UdIwQYMBaAFOozA+muRE3Ar4zsDx4T1Kqej2yYMBwGA1UdEQQVMBOBEW1l
bG9AaXNwLm5vdmlzLnB0MB0GA1UdDgQWBBRTamCAXR/6flFsPVctdZQgrQ1s2DANBgkqhkiG9w0B
AQUFAAOCAQEA08UwTsJsaPowORMakFmR0stEn+u7WR0sDv+NrQWhHgQxVWvY+Vdmk7Yg1mkU+iru
1pxu6HgrPHPLGL3rvI/g6y/Wq2KH97Y2pv68TzCBrVRakwEgV8AP62kqir2+0skSV118cGgd6OT+
SyWMCz3aLbedAyQVAty+Hd8vD0ZBI7qG+vfKNlzIFJoiGHkruhyZJmUeJVkACuQ8fOEHQwXFhYXL
QXlusTe/P0Xab0B5+Jgiyf225jT+dCWBLCFkU85Gr3KkYCbN34SOSw5UFFzF/dY6DJrfm+N327l+
o6FJjIjRLSJPU8oRU/AxTvRfZGpyBcG8xY0iZrCOFYSDnofkPTCCA9cwggK/oAMCAQICEBFheew5
X4w6Q89ItXXDl8swDQYJKoZIhvcNAQEFBQAwLzELMAkGA1UEBhMCUFQxIDAeBgNVBAMTF1hDT00g
Q29tdW5pY2FjYW8gU2VndXJhMB4XDTAzMDIxMjE0MTkzMVoXDTA3MDIwMTIxMTQ0M1owNDELMAkG
A1UEBhMCUFQxDTALBgNVBAoTBFhDT00xFjAUBgNVBAMTDVhDT00gUGVyc29uYWwwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTzsbFVcDJOoyg1lsY8ecUhGZdAnMzdXdXazzTH90vfgMY
nBL0jzQUYgFn0UQ0+25kffhRH+vkICCCIUxf0v1cpDYoSoz1/AWtFNSdWMrh03kUzKpE60+FM99L
vxPS259O+PLd2oLl3+umPI7M5IaZwHPqIS3ceQShC68RN28+fDC5SR4GhGTR4KozPpALgWT/S2Ms
p3OnOhKWN+8Vlqj3DEHGAt997F/qHHjdyocHswHlZtuCowovc7gJ2eAeR8XlkytKJBtjDL9/DAVM
bWlWSmFqQ6ICQpqnRQSj/mCVwFzpLWYXZRYsdLOB5+B0V7qL4+NIuRBZQLlot0e8TP4VAgMBAAGj
gekwgeYwHwYDVR0jBBgwFoAUW1y3haVqGDxX3sLScCwNTP8PG2owEgYDVR0TAQH/BAgwBgEB/wIB
AjBKBgNVHSAEQzBBMD8GCisGAQQB/HoBZAEwMTAvBggrBgEFBQcCARYjaHR0cHM6Ly93d3cueGNv
bS5wdC9kb2MvQ1BfWENPTS5wZGYwNAYDVR0fBC0wKzApoCegJYYjaHR0cDovL3d3dy54Y29tLnB0
L2NybC9DUkxfWENPTS5jcmwwDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTqMwPprkRNwK+M7A8e
E9Sqno9smDANBgkqhkiG9w0BAQUFAAOCAQEAIslI54ocOvozjLWf0vzz0ehk3nvmlcOcUa4xVvFa
VIvjjZV6E3i22WkUGpLavXztR4srNcyxe203OUcbBsNWju9TPgPhqNVcPZrh7X/2pV4Jy/yvWIcg
1x77zmjSexqNztUGFV9TB+Na2B8QZZ8gvlE85QROsaSHXEfx0goQJ4OuTGxLz7j/ZxA7UPjnPIxG
lLbjVt2sjzPwuO1FK3Onemn39Nm2XSEbKfWdsSvFW4/3kbyjS//E8eJLIt6VWh2JNXRf7oUKX+g3
XEVQN+FRs1b9UpbRiwSxIWrz7OYwv1vxEq2xr73z0kiG+f3bOeqYwMUfsgmTe+wubm/0vaFD7zCC
A/owggNjoAMCAQICEDtsrETzrAecJO73kt+9lNUwDQYJKoZIhvcNAQEFBQAwbDEaMBgGA1UEChMR
UlNBIFNlY3VyaXR5IEluYy4xHjAcBgNVBAMTFVJTQSBQdWJsaWMgUm9vdCBDQSB2MTEuMCwGCSqG
SIb3DQEJARYfcnNha2VvbnJvb3RzaWduQHJzYXNlY3VyaXR5LmNvbTAeFw0wMzAyMDQyMTA1MzZa
Fw0wNzAyMDQyMTA1MzZaMC8xCzAJBgNVBAYTAlBUMSAwHgYDVQQDExdYQ09NIENvbXVuaWNhY2Fv
IFNlZ3VyYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM/I9ekXacw55/wV3WikXvIM
wCiPphWLCGEq8qk92Lb9tXBNrzoXNSKJzrZj9YDfEbER6leyE9m0fvXFTb/Nu6QvD0wp7gHy6Vba
EIZvLI2IbTR51JpWum0uVi8MBwAyF7/Cv/BYnlWN6s/bUUBKBPtzwqjs99cM6Ur7zv9U0dz9z0HL
pbAOGo1BQzN7HIlYz76QURf68IG+/gWjVEcJZ1LopfQFU8FPXV75Dt/SIlwIwWg9N67VGgca+5kc
meP57mpLtId/CPJih6IVi+9TkrWVY4TiX9T067tvdhZIUKMrO2EVeg+wxhKLXrpyX7H1mCyW9l3j
9m8osoLzWDQsBuECAwEAAaOCAVQwggFQMB8GA1UdIwQYMBaAFPVMMXpRAz8s14uXmW+ocZCreD2b
MB0GA1UdDgQWBBRbXLeFpWoYPFfewtJwLA1M/w8bajB6BgNVHSAEczBxMG8GCSqGSIb3DQUGATBi
MGAGCCsGAQUFBwIBFlRodHRwOi8vd3d3LnJzYXNlY3VyaXR5LmNvbS9wcm9kdWN0cy9rZW9uL3Jl
cG9zaXRvcnkvcHJhY3RpY2VzL0NlcnRpZmljYXRlX1BvbGljeS5wZGYwbgYDVR0fBGcwZTBjoGGg
X4ZdaHR0cDovL3d3dy5yc2FzZWN1cml0eS5jb20vcHJvZHVjdHMva2Vvbi9yZXBvc2l0b3J5L2Nl
cnRpZmljYXRlX3N0YXR1cy9SU0FfUHVibGljX1Jvb3RfQ0EuY3JsMBIGA1UdEwEB/wQIMAYBAf8C
AQMwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4GBAGkiXhtOLrz+ZYnbXYDLzciJmNE/
qHCmTm81mparKYuNXVwBEmWx/ix4ttPdR9hTm45gCD7ig0kp9/tPqt/CXMLbTQflFYLJ5VZ85hL3
8rJTv3zU2JEvESVhdZNYNqbuFpyk7AAy8KNw4CbAwHLu10xYLkIUDpYd30lni7ea3dhWMYICAzCC
Af8CAQEwSDA0MQswCQYDVQQGEwJQVDENMAsGA1UEChMEWENPTTEWMBQGA1UEAxMNWENPTSBQZXJz
b25hbAIQNcMKMC48RyN6HYrAHSWiAjAJBgUrDgMCGgUAoIIBETAYBgkqhkiG9w0BCQMxCwYJKoZI
hvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wNTA0MTIxMjE4MzRaMCMGCSqGSIb3DQEJBDEWBBRdTx+u
ebBGTgaf1rRzMkOYyR7xyDBXBgkrBgEEAYI3EAQxSjBIMDQxCzAJBgNVBAYTAlBUMQ0wCwYDVQQK
EwRYQ09NMRYwFAYDVQQDEw1YQ09NIFBlcnNvbmFsAhA1wwowLjxHI3odisAdJaICMFkGCyqGSIb3
DQEJEAILMUqgSDA0MQswCQYDVQQGEwJQVDENMAsGA1UEChMEWENPTTEWMBQGA1UEAxMNWENPTSBQ
ZXJzb25hbAIQNcMKMC48RyN6HYrAHSWiAjANBgkqhkiG9w0BAQEFAASBgGzMWncBgKKw6NUj5iyp
oZuplJLHhxZ+YiwGeYiP79eC1KN1Z8FHVLi5Q4D45mLKVcD1u8CmjsHz1Kfo+HV2aIvQQraMQCeZ
NAC1rC3YyhxAHHPW4qFHWNxkdX4zG2P2snY2c4GNcNQW9ywqbGsgSsWfS3GEI+phpGLz8vcFYJT+
AAAAAAAA

--Apple-Mail-4--290356147--