From owner-freebsd-current@FreeBSD.ORG Tue Apr 8 16:00:40 2003 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8779B37B401 for ; Tue, 8 Apr 2003 16:00:40 -0700 (PDT) Received: from heidi.fud.org.nz (203-79-83-205.cable.paradise.net.nz [203.79.83.205]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6C4ED43FAF for ; Tue, 8 Apr 2003 16:00:39 -0700 (PDT) (envelope-from andy@fud.org.nz) Received: from [192.168.0.30] (sambo.fud.org.nz [192.168.0.30]) by heidi.fud.org.nz (Postfix) with ESMTP id 3994859CD6; Wed, 9 Apr 2003 11:00:42 +1200 (NZST) From: Andrew Thompson To: Stephan =?ISO-8859-1?Q?M=F6ck?= In-Reply-To: References: Content-Type: text/plain; charset=ISO-8859-1 Organization: Message-Id: <1049843074.81653.2.camel@sambo.fud.org.nz> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.4 Date: 09 Apr 2003 11:04:34 +1200 Content-Transfer-Encoding: 8bit cc: freebsd-current@freebsd.org Subject: Re: DB3 problem with put X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Apr 2003 23:00:40 -0000 On Wed, 2003-04-09 at 00:54, Stephan Möck wrote: > I'm using DB3 to store file informationen. The key is the directory name and > the value is the inode number. At runtime I recieve the following error > message frome the database. Can anybody help me with this problem? > > key: /test value: 16791 > DB->put: DB_KEYEXIST: Key/data pair already exists //should be /test/file > DB->put: DB_KEYEXIST: Key/data pair already exists //should be > /test/textfile > DB->put: DB_KEYEXIST: Key/data pair already exists // ... > DB->put: DB_KEYEXIST: Key/data pair already exists > DB->put: DB_KEYEXIST: Key/data pair already exists > DB->put: DB_KEYEXIST: Key/data pair already exists > > > void add_database(char *sub) > { > memset(&key, 0, sizeof(key)); > memset(&data, 0, sizeof(data)); > > key.data = sub; > key.size = sizeof(sub); > data.data = statbuf.st_ino; //inode number from the stat() call > key.size = sizeof(statbuf.st_ino); ^^^^^^^^ Shouldnt this be data.size? Andy > > if ((ret = dbp1->put(dbp1, NULL, &key, &data, DB_NOOVERWRITE)) == 0) > { > printf("key: %s value: %d\n", (char *)key.data,data.data); > } > else > { > dbp1->err(dbp1, ret, "DB->put"); > } > }