Back to index

im-sdk  12.3.91
search.c
Go to the documentation of this file.
00001 /*
00002   Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
00003 
00004   Permission is hereby granted, free of charge, to any person obtaining a
00005   copy of this software and associated documentation files (the
00006   "Software"), to deal in the Software without restriction, including
00007   without limitation the rights to use, copy, modify, merge, publish,
00008   distribute, sublicense, and/or sell copies of the Software, and to
00009   permit persons to whom the Software is furnished to do so, subject to
00010   the following conditions: The above copyright notice and this
00011   permission notice shall be included in all copies or substantial
00012   portions of the Software.
00013 
00014 
00015   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00016   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00017   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
00018   IN NO EVENT SHALL THE OPEN GROUP OR SUN MICROSYSTEMS, INC. BE LIABLE
00019   FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
00020   CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH
00021   THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE EVEN IF
00022   ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES.
00023 
00024 
00025   Except as contained in this notice, the names of The Open Group and/or
00026   Sun Microsystems, Inc. shall not be used in advertising or otherwise to
00027   promote the sale, use or other dealings in this Software without prior
00028   written authorization from The Open Group and/or Sun Microsystems,
00029   Inc., as applicable.
00030 
00031 
00032   X Window System is a trademark of The Open Group
00033 
00034   OSF/1, OSF/Motif and Motif are registered trademarks, and OSF, the OSF
00035   logo, LBX, X Window System, and Xinerama are trademarks of the Open
00036   Group. All other trademarks and registered trademarks mentioned herein
00037   are the property of their respective owners. No right, title or
00038   interest in or to any trademark, service mark, logo or trade name of
00039   Sun Microsystems, Inc. or its licensors is granted.
00040 
00041 */
00042 #include <stdio.h>
00043 #include <stdlib.h>
00044 #include "codetable.h"
00045 
00046 #define MAX_SEARCH_NUM      32     
00047 #define MAX_CHAR_LEN 128
00048 
00049 CodeTableStruct hzCodeTable;
00050 
00051 int main(int argc, char *argv[])
00052 {
00053   char inbuf[64];
00054   unsigned char *outbuf[MAX_SEARCH_NUM]; 
00055   unsigned char *attrbuf[MAX_SEARCH_NUM]; 
00056   int i, again, ret, search_pos, search_num, num, in;
00057   char *filename = "wubi.data";
00058 
00059   if (argc == 2)
00060     filename = argv[1];
00061 
00062   ret = LoadCodeTable(filename, &hzCodeTable);
00063 
00064   if (ret == -1)
00065     {
00066       UnloadCodeTable(&hzCodeTable);
00067       exit(1);
00068     }
00069 
00070   for (i=0; i<MAX_SEARCH_NUM; i++)
00071     {
00072       outbuf[i] = (unsigned char *)malloc(MAX_CHAR_LEN);
00073       attrbuf[i] = (unsigned char *)malloc(MAX_CHAR_LEN);
00074     }
00075 
00076   search_pos = 0;
00077   search_num = 6;
00078 
00079   again = 1;
00080   while (again) {
00081     printf("input code = ");
00082     scanf("%s", inbuf);
00083     if (inbuf[0] == 'Q') break;
00084     in = atoi(inbuf);
00085     num = codetable_search(&hzCodeTable, &in, 1, outbuf, attrbuf, search_pos, search_num);
00086     if (num>0)
00087       {
00088        printf("search result:\n");
00089        /*
00090          for (i=0; i<num; i++)
00091          printf("\t%d: %s\n", i, outbuf[i]);
00092        */
00093        for (i=0; i<num; i++)
00094          printf("\t%d: %s %s\n", i, outbuf[i], attrbuf[i]);
00095       }
00096     else 
00097       printf("no matched phrase\n");
00098 
00099   }
00100 
00101   UnloadCodeTable(&hzCodeTable);
00102   exit(0);
00103 }
00104