From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15758 invoked by alias); 3 Jan 2002 23:19:55 -0000 Mailing-List: contact sourcenav-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: sourcenav-owner@sources.redhat.com Received: (qmail 15717 invoked from network); 3 Jan 2002 23:19:54 -0000 Reply-To: From: "David Gray" To: Subject: Using Source Nav. database API Date: Thu, 03 Jan 2002 15:19:00 -0000 Message-ID: <003401c194ad$05519410$2e91630f@DGRAYPC> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook CWS, Build 9.0.2416 (9.0.2911.0) Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 X-SW-Source: 2002-q1/txt/msg00005.txt.bz2 Hi, guys, I installed Source Nav. to help me analyze our source. It seems like a = very powerful tool. I also need to use the database programming = interface to extend the capabilities. I've read over the programming = documentation several times, but still cannot get the tcl/tk or C = interfaces to work. I am not familiar with tcl/tk but here's what happens when I run the = sample script shown below. =20 % pwd /tmp_mnt/nis.home/pal/dgray/test_dev % ls Makefile dbqry.c legacyio_cscope tbvm cscope_clock extract_clock legacyio_snav.proj tcl.sh dbqry functions.sh legacyio_thtk % cat tcl.sh #!/bin/sh # Replace $HOME/snavigator with the Source-Navigator # installation directory! \ exec /opt/snav/bin/hyper "$0" "$@" # # Don't forget the backslash before exec! # set db_functions [dbopen nav_func .snprj/legacyio_snav.to RDONLY 0644 = btree \ {cachesize=3D200000}] puts [join [$db_functions seq -data] \n] exit % ll /opt/snav/bin/hyper -rwxr-xr-x 1 root mppos 19368880 Mar 22 2001 = /opt/snav/bin/hyper=20 % ll .snprj/legacyio_snav.to -rw-rw---- 1 dgray mppos 259457024 Dec 4 09:57 = .snprj/legacyio_snav.to % tcl.sh Error: unknown encoding "iso8859-1" % uname -a HP-UX bobcat B.10.20 A 9000/889 274844331 two-user license This seems simply like some kind of setup or environmental problem. I also compiled and linked the dbqry.c sample program. I tried various = pattern arguments but repeatedly got no output. Is there any = documentation on specifying the pattern argument? What is the universal = "dump it all" pattern? I attached the dbqry.c program below. I am just trying to get started with the database interface but got = stuck. I would appreciate any tips you guys can send me. Thanks, David Gray Hewlett-Packard Richardson, Texas ---------------------------- attachment ------------------------------- /* * dbquery.c * * Copyright (C) 1998 Cygnus Solutions * * Description: * This example shows how to query the Source-Navigator database in C. */ #include #include #include #include #include #include "db.h" int main(int argc, char *argv[]) { DB *db; DBT data; DBT key; int flag; int len; char *pattern; if (argc !=3D 3) { printf("usage: %s database pattern\n",argv[0]); exit(1); } if (!(db =3D dbopen(argv[1],O_RDONLY,0644,DB_BTREE,NULL))) { fprintf(stderr,"Could not open \"%s\",%s\n",argv[1], strerror(errno)); exit(2); } pattern =3D argv[2]; len =3D strlen(pattern); key.data =3D (void *)pattern; key.size =3D len; for(flag =3D R_CURSOR; db->seq(db,&key,&data,flag) =3D=3D 0 && strncmp(key.data,pattern,len) =3D=3D 0; flag =3D R_NEXT) { printf("key: %s\n", (char *) key.data); printf("data: %s\n", (char *) data.data); } db->close(db); exit (0); }