/[MITgcm]/mitgcm.org/devel/buildweb/pkg/swish-e/src/libtest.c
ViewVC logotype

Annotation of /mitgcm.org/devel/buildweb/pkg/swish-e/src/libtest.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1.1.1 - (hide annotations) (download) (vendor branch)
Fri Sep 20 19:47:29 2002 UTC (22 years, 10 months ago) by adcroft
Branch: Import, MAIN
CVS Tags: baseline, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
Importing web-site building process.

1 adcroft 1.1 /*
2     $Id: libtest.c,v 1.2 2002/08/22 22:58:39 whmoseley Exp $
3     **
4     ** Copyright (C) 1995, 1996, 1997, 1998 Hewlett-Packard Company
5     **
6     ** Originally by Kevin Hughes, kev@kevcom.com, 3/11/94
7     **
8     ** This program and library is free software; you can redistribute it and/or
9     ** modify it under the terms of the GNU (Library) General Public License
10     ** as published by the Free Software Foundation; either version 2
11     ** of the License, or any later version.
12     **
13     ** This program is distributed in the hope that it will be useful,
14     ** but WITHOUT ANY WARRANTY; without even the implied warranty of
15     ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16     ** GNU (Library) General Public License for more details.
17     **
18     ** You should have received a copy of the GNU (Library) General Public License
19     ** along with this program; if not, write to the Free Software
20     ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21     **---------------------------------------------------------
22     *
23     * Example program for interfacing a C program with the Swish-e C library.
24     *
25     * ./libtest [optional index file]
26     *
27     * use quotes for more than one file
28     * ./libtest index.swish-e
29     * ./libtest 'index1 index2 index3'
30     *
31     * See the perl/SWISHE.xs file for more detail
32     *
33     */
34    
35    
36     #include <stdio.h>
37     #include "swish.h"
38     #include "error.h"
39     #include "mem.h" // for mem_summary only
40    
41     #define DISPLAY_COUNT 10 // max to display
42    
43    
44     void show_results( SWISH *swish_handle, int );
45    
46     int main(int argc, char **argv)
47     {
48     SWISH *swish_handle;
49     int num_results;
50     int structure = IN_FILE;
51     char *properties = NULL;
52     char *sortspec = NULL;
53     char input_buf[200];
54    
55    
56    
57    
58     /* Connect to the indexes specified */
59    
60     swish_handle = SwishInit( argv[1] && *(argv[1]) ? argv[1] : "index.swish-e");
61    
62     /* Now, let's send all warnings and error messages to stderr instead of stdout (the default) */
63     SwishErrorsToStderr(); /* Global. Must be set after calling SwishInit() */
64    
65    
66    
67     /* how to check for errors */
68    
69     if ( SwishError( swish_handle ) )
70     {
71     /* Now, there's a few ways to do this */
72    
73     SwishAbortLastError( swish_handle ); // The easy way. Format, print message and aborts.
74    
75     /* Or for more control */
76    
77     {
78     int number = SwishError( swish_handle );
79     char *message = SwishErrorString( swish_handle );
80     char *comment = SwishLastErrorMsg( swish_handle );
81    
82     fprintf(stderr, "err: Number [%d], Type [%s], Optional String [%s]\n", number, message, comment );
83     }
84    
85     /* Now if you want to exit */
86     exit(1);
87    
88     /* Otherwise, to continue you need to clean up memory */
89     SwishClose( swish_handle );
90     // return; // for example
91     }
92    
93    
94     while ( 1 )
95     {
96     printf("Enter search words: ");
97     if ( !fgets( input_buf, 200, stdin ) )
98     break;
99    
100    
101     num_results = SwishSearch(swish_handle, input_buf,structure,properties,sortspec);
102    
103     /* SwishSearch return:
104     * Number of hits if positive
105     * Zero on no results
106     * A negative number (the error number) on fail.
107     */
108    
109     if ( num_results >= 0 )
110     {
111     printf("Total Results: %d\n", num_results );
112    
113     if ( num_results > 0 )
114     show_results( swish_handle, DISPLAY_COUNT );
115     }
116    
117    
118     /* Deal with errors */
119    
120     if ( num_results < 0 && SwishError( swish_handle ) )
121     {
122     if ( SwishCriticalError( swish_handle ) )
123     SwishAbortLastError( swish_handle );
124     else
125     printf("Error: %s %s\n", SwishErrorString( swish_handle ), SwishLastErrorMsg( swish_handle ) );
126     }
127    
128     Mem_Summary("At end of loop", 0);
129    
130     }
131    
132     Mem_Summary("Before Free", 0);
133     SwishClose( swish_handle );
134    
135     /* Look for memory leaks -- must change settings in mem.h and recompile swish */
136     Mem_Summary("At end of program", 1);
137    
138     return 0;
139    
140     }
141    
142     /* Display some standard properties -- see perl/SWISHE.xs for how to get at the data */
143    
144     void show_results( SWISH *swish_handle, int max_display )
145     {
146     RESULT *result;
147    
148    
149     while ( max_display-- && (result = SwishNext( swish_handle )) )
150     {
151    
152     /* This SwishResultPropertyStr() will work for all types of props */
153     /* But SwishResultPropertyULong() can be used to return numeric types */
154     /* Should probably check for errors after every call */
155     /* SwishResultPropertyULong will return ULONG_MAX if the value cannot be returned */
156     /* that could mean an error, or just that there was not a property assigned (which is not an error) */
157    
158     printf("%lu %s '%s' %lu %s\n",
159     SwishResultPropertyULong (swish_handle, result, "swishrank" ),
160     SwishResultPropertyStr (swish_handle, result, "swishdocpath" ),
161     SwishResultPropertyStr (swish_handle, result, "swishtitle"),
162     SwishResultPropertyULong (swish_handle, result, "swishdocsize" ),
163     SwishResultPropertyStr (swish_handle, result, "swishlastmodified" )
164     );
165     }
166    
167    
168     }
169    
170    
171    
172    
173    
174    

  ViewVC Help
Powered by ViewVC 1.1.22