HuntnGather – Diff between revs 24 and 26

Subversion Repositories:
Rev:
Only display areas with differencesIgnore whitespace
Rev 24 Rev 26
1 Short: File indexing and search utilities. 1 Short: File indexing and search utilities.
2 Author: Wizardry and Steamworks 2 Author: Wizardry and Steamworks
3 Uploader: "Wizardry and Steamworks" <office@grimore.org> 3 Uploader: "Wizardry and Steamworks" <office@grimore.org>
4 Type: util/dir 4 Type: util/dir
5 Replaces: util/dir/HuntnGather.lha 5 Replaces: util/dir/HuntnGather.lha
6 Version: 1.7.3 6 Version: 1.7.3
7 Architecture: m68k-amigaos 7 Architecture: m68k-amigaos
8   8  
9 Hunt & Gather - File search and indexing utilities. 9 Hunt & Gather - File search and indexing utilities.
10 (or Hunt'n'Gather bro, ghetto style) 10 (or Hunt'n'Gather bro, ghetto style)
11   11  
12 © Copyright 2021 by Wizardry and Steamworks 12 © Copyright 2021 by Wizardry and Steamworks
13   13  
14 Released under the MIT License, all rights reserved. 14 Released under the MIT License, all rights reserved.
15   15  
16 -=:[ Changes ]:=- 16 -=:[ Changes ]:=-
17   17  
18 20201026: 18 TBA:
-   19 * Use locale for string comparisons.
-   20 * Gather now requires either of -a (add), -r (remove), -c (create).
19 * Use AsyncIO. 21 * Allow specifying multiple paths when gathering.
20   22  
21 -=:[ Introduction ]:=- 23 -=:[ Introduction ]:=-
22   24  
23   25  
24 Hunt and Gather are two utiltities for indexing and then searching 26 Hunt and Gather are two utiltities for indexing and then searching
25 fileswithin a drive or directory designed to speed up searching files. 27 fileswithin a drive or directory designed to speed up searching files.
26   28  
27 The Gather utility is meant to index any path and generate a search 29 The Gather utility is meant to index any path and generate a search
28 database. The Hunt utility will then open the database generated by 30 database. The Hunt utility will then open the database generated by
29 Gather and look for files matching the string provided to Hunt as 31 Gather and look for files matching the string provided to Hunt as
30 parameter. 32 parameter.
31   33  
32 The utility was designed to check large collections of icons but the 34 The utility was designed to check large collections of icons but the
33 indexing and the fast search results proved indispensable enough for a 35 indexing and the fast search results proved indispensable enough for a
34 self-standing program. 36 self-standing program.
35   37  
36 -=:[ Design ]:=- 38 -=:[ Design ]:=-
37   39  
38 Hunt and Gather are designed with constant memory usage in order to be 40 Hunt and Gather are designed with constant memory usage in order to be
39 suitable for all Amiga models. Namely, the Gather utility will search 41 suitable for all Amiga models. Namely, the Gather utility will search
40 all files in a given path, sort the files in ascending order by using 42 all files in a given path, sort the files in ascending order by using
41 an external merge sort (tailored down to a 256KiB memory limit). 43 an external merge sort (tailored down to a 256KiB memory limit).
42   44  
43 Conversely, Hunt uses brute force to search for files but by reading 45 Conversely, Hunt uses brute force to search for files but by reading
44 lines from the database without loading the entire database in RAM. 46 lines from the database without loading the entire database in RAM.
45 Perhaps ulterior versions of Hunt might partition the database file 47 Perhaps ulterior versions of Hunt might partition the database file
46 just like Gather does and then build Tries in oder to speed up finding 48 just like Gather does and then build Tries in oder to speed up finding
47 files on the filesystem. 49 files on the filesystem.
48   50  
49 The project adheres to the ANSI C standard and Amiga-centric semantics 51 The project adheres to the ANSI C standard and Amiga-centric semantics
50 are compiled conditionally (in case the "___AmigaOS__" macro is 52 are compiled conditionally (in case the "___AmigaOS__" macro is
51 defined at compile time).Otherwise, Hunt & Gather should run under any 53 defined at compile time).Otherwise, Hunt & Gather should run under any
52 platform that benefits from an ANSI C compiler. 54 platform that benefits from an ANSI C compiler.
53   55  
54 -=:[ Usage ]:=- 56 -=:[ Usage ]:=-
55   57  
56 First the Gather utility is used to index a path: 58 First the Gather utility is used to index a path:
57   59  
58   60  
59 Gather RAM: 61 Gather RAM:
60   62  
61   63  
62 which will create a file in the S: directory named "gahter.db". While 64 which will create a file in the S: directory named "gahter.db". While
63 Gather is running, the utility will display the number of indexed 65 Gather is running, the utility will display the number of indexed
64 directories and files on the command line. 66 directories and files on the command line.
65   67  
66 In order to look for a file, the Hunt utility is invoked with an 68 In order to look for a file, the Hunt utility is invoked with an
67 Amiga search pattern: 69 Amiga search pattern:
68   70  
69   71  
70 Hunt #?test#? 72 Hunt #?test#?
71   73  
72   74  
73 in this case, "#?test#?", that will be compared to all the files 75 in this case, "#?test#?", that will be compared to all the files
74 indexed previously by Gather. In case any of the files previously 76 indexed previously by Gather. In case any of the files previously
75 indexed by Gather contain the term "test", then the Hunt utility will 77 indexed by Gather contain the term "test", then the Hunt utility will
76 display the path to the file. 78 display the path to the file.
77   79  
78 -=:[ Gather ]:=- 80 -=:[ Gather ]:=-
79   81  
80 The Gather utility takes one single parameter representing the path 82 The Gather utility takes one single parameter representing the path
81 to be indexed; for example, all the following paths are valid: 83 to be indexed; for example, all the following paths are valid:
82   84  
83   85  
84 RAM: 86 RAM:
85 DH0:System/ 87 DH0:System/
86   88  
87   89  
88 When Gather runs, a database is created at "S:gather.db" by 90 When Gather runs, a database is created at "S:gather.db" by
89 overwriting the previous database. For best results, Gather should 91 overwriting the previous database. For best results, Gather should
90 run periodically and should scan a path that is most frequently 92 run periodically and should scan a path that is most frequently
91 searched for files. 93 searched for files.
92   94  
93 -=:[ Hunt ]:=- 95 -=:[ Hunt ]:=-
94   96  
95 Hunt is the counterpart to Gather and will search the database at 97 Hunt is the counterpart to Gather and will search the database at
96 "S:gather.db" for files matching the terms passed to Hunt on the 98 "S:gather.db" for files matching the terms passed to Hunt on the
97 command line. 99 command line.
98   100  
99 For instance: 101 For instance:
100   102  
101 Hunt #?test#? 103 Hunt #?test#?
102   104  
103 will search all files in the Gather database "S:gather.db" for the 105 will search all files in the Gather database "S:gather.db" for the
104 term "test". If any file within the database partially matches the 106 term "test". If any file within the database partially matches the
105 term "test", then Hunt will display the path on the command line. 107 term "test", then Hunt will display the path on the command line.
106 108
107 Hunt uses Amiga-style pattern for matching the file names. 109 Hunt uses Amiga-style pattern for matching the file names.
108 110
109 -=:[ Source ]:=- 111 -=:[ Source ]:=-
110   112  
111 The project is open sourced and licensed under MIT. The source code 113 The project is open sourced and licensed under MIT. The source code
112 is included in the AmiNET release or can be checked out via subversion 114 is included in the AmiNET release or can be checked out via subversion
113 from the Wizardry and Steamworks repository: 115 from the Wizardry and Steamworks repository:
114 116
115 svn co http://svn.grimore.org/HuntnGather 117 svn co http://svn.grimore.org/HuntnGather
116 118
117 -=:[ Mentions ]:=- 119 -=:[ Mentions ]:=-
118   120  
119 The code includes a shim for "getopt" in order to process command line 121 The code includes a shim for "getopt" in order to process command line
120 parameters on Amiga without changing the semantics. The shim is 122 parameters on Amiga without changing the semantics. The shim is
121 created by Daniel J. Barrett, barrett@cs.umass.edu and is available on 123 created by Daniel J. Barrett, barrett@cs.umass.edu and is available on
122 AmiNET: 124 AmiNET:
123 125
124 http://aminet.net/package/dev/misc/GetOpt-1.3 126 http://aminet.net/package/dev/misc/GetOpt-1.3
125 127
126 -=:[ Contact ]:=- 128 -=:[ Contact ]:=-
127   129  
128 E-Mail(tor): 130 E-Mail(tor):
129   131  
130 office@3wymlmcsvxiaqzmbepsdawqpk6o2qsk65jhms72qqjulk5u4bgmvs3qd.onion 132 office@3wymlmcsvxiaqzmbepsdawqpk6o2qsk65jhms72qqjulk5u4bgmvs3qd.onion
131   133  
132 Website: https://grimore.org/amiga/hunt_and_gather 134 Website: https://grimore.org/amiga/hunt_and_gather
133 Website(tor): 135 Website(tor):
134   136  
135 http://3wymlmcsvxiaqzmbepsdawqpk6o2qsk65jhms72qqjulk5u4bgmvs3qd.onion/ 137 http://3wymlmcsvxiaqzmbepsdawqpk6o2qsk65jhms72qqjulk5u4bgmvs3qd.onion/
136   138  
137 Discord: https://discord.gg/k9kyDsa 139 Discord: https://discord.gg/k9kyDsa
138 140
139   141