commit f7fe0250e153ba19787ba37ab3b50184d80cbad4 Author: Nathan Fisher Date: Sat Mar 18 23:37:48 2023 -0400 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..6c1309f --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,75 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "libc" +version = "0.2.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" + +[[package]] +name = "liff" +version = "1.0.0" +dependencies = [ + "rand", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..0855b4d --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "liff" +version = "1.0.0" +edition = "2021" + +[[bin]] +name = "42" +path = "src/main.rs" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +rand = "0.8" + +[profile.release] +codegen-units = 1 +strip = true +lto = true +panic = "abort" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2fb2e74 --- /dev/null +++ b/LICENSE @@ -0,0 +1,675 @@ +### GNU GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +### Preamble + +The GNU General Public License is a free, copyleft license for +software and other kinds of works. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom +to share and change all versions of a program--to make sure it remains +free software for all its users. We, the Free Software Foundation, use +the GNU General Public License for most of our software; it applies +also to any other work released this way by its authors. You can apply +it to your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you +have certain responsibilities if you distribute copies of the +software, or if you modify it: responsibilities to respect the freedom +of others. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + +Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the +manufacturer can do so. This is fundamentally incompatible with the +aim of protecting users' freedom to change the software. The +systematic pattern of such abuse occurs in the area of products for +individuals to use, which is precisely where it is most unacceptable. +Therefore, we have designed this version of the GPL to prohibit the +practice for those products. If such problems arise substantially in +other domains, we stand ready to extend this provision to those +domains in future versions of the GPL, as needed to protect the +freedom of users. + +Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish +to avoid the special danger that patents applied to a free program +could make it effectively proprietary. To prevent this, the GPL +assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and +modification follow. + +### TERMS AND CONDITIONS + +#### 0. Definitions. + +"This License" refers to version 3 of the GNU General Public License. + +"Copyright" also means copyright-like laws that apply to other kinds +of works, such as semiconductor masks. + +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of +an exact copy. The resulting work is called a "modified version" of +the earlier work or a work "based on" the earlier work. + +A "covered work" means either the unmodified Program or a work based +on the Program. + +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user +through a computer network, with no transfer of a copy, is not +conveying. + +An interactive user interface displays "Appropriate Legal Notices" to +the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + +#### 1. Source Code. + +The "source code" for a work means the preferred form of the work for +making modifications to it. "Object code" means any non-source form of +a work. + +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can +regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same +work. + +#### 2. Basic Permissions. + +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, +without conditions so long as your license otherwise remains in force. +You may convey covered works to others for the sole purpose of having +them make modifications exclusively for you, or provide you with +facilities for running those works, provided that you comply with the +terms of this License in conveying all material for which you do not +control copyright. Those thus making or running the covered works for +you must do so exclusively on your behalf, under your direction and +control, on terms that prohibit them from making any copies of your +copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the +conditions stated below. Sublicensing is not allowed; section 10 makes +it unnecessary. + +#### 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such +circumvention is effected by exercising rights under this License with +respect to the covered work, and you disclaim any intention to limit +operation or modification of the work as a means of enforcing, against +the work's users, your or third parties' legal rights to forbid +circumvention of technological measures. + +#### 4. Conveying Verbatim Copies. + +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + +#### 5. Conveying Modified Source Versions. + +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these +conditions: + +- a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. +- b) The work must carry prominent notices stating that it is + released under this License and any conditions added under + section 7. This requirement modifies the requirement in section 4 + to "keep intact all notices". +- c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. +- d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + +#### 6. Conveying Non-Source Forms. + +You may convey a covered work in object code form under the terms of +sections 4 and 5, provided that you also convey the machine-readable +Corresponding Source under the terms of this License, in one of these +ways: + +- a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. +- b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the Corresponding + Source from a network server at no charge. +- c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. +- d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. +- e) Convey the object code using peer-to-peer transmission, + provided you inform other peers where the object code and + Corresponding Source of the work are being offered to the general + public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, +family, or household purposes, or (2) anything designed or sold for +incorporation into a dwelling. In determining whether a product is a +consumer product, doubtful cases shall be resolved in favor of +coverage. For a particular product received by a particular user, +"normally used" refers to a typical or common use of that class of +product, regardless of the status of the particular user or of the way +in which the particular user actually uses, or expects or is expected +to use, the product. A product is a consumer product regardless of +whether the product has substantial commercial, industrial or +non-consumer uses, unless such uses represent the only significant +mode of use of the product. + +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to +install and execute modified versions of a covered work in that User +Product from a modified version of its Corresponding Source. The +information must suffice to ensure that the continued functioning of +the modified object code is in no case prevented or interfered with +solely because modification has been made. + +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or +updates for a work that has been modified or installed by the +recipient, or for the User Product in which it has been modified or +installed. Access to a network may be denied when the modification +itself materially and adversely affects the operation of the network +or violates the rules and protocols for communication across the +network. + +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + +#### 7. Additional Terms. + +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders +of that material) supplement the terms of this License with terms: + +- a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or +- b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or +- c) Prohibiting misrepresentation of the origin of that material, + or requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or +- d) Limiting the use for publicity purposes of names of licensors + or authors of the material; or +- e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or +- f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions + of it) with contractual assumptions of liability to the recipient, + for any liability that these contractual assumptions directly + impose on those licensors and authors. + +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; the +above requirements apply either way. + +#### 8. Termination. + +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + +However, if you cease all violation of this License, then your license +from a particular copyright holder is reinstated (a) provisionally, +unless and until the copyright holder explicitly and finally +terminates your license, and (b) permanently, if the copyright holder +fails to notify you of the violation by some reasonable means prior to +60 days after the cessation. + +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + +#### 9. Acceptance Not Required for Having Copies. + +You are not required to accept this License in order to receive or run +a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + +#### 10. Automatic Licensing of Downstream Recipients. + +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + +#### 11. Patents. + +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + +A contributor's "essential patent claims" are all patent claims owned +or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + +A patent license is "discriminatory" if it does not include within the +scope of its coverage, prohibits the exercise of, or is conditioned on +the non-exercise of one or more of the rights that are specifically +granted under this License. You may not convey a covered work if you +are a party to an arrangement with a third party that is in the +business of distributing software, under which you make payment to the +third party based on the extent of your activity of conveying the +work, and under which the third party grants, to any of the parties +who would receive the covered work from you, a discriminatory patent +license (a) in connection with copies of the covered work conveyed by +you (or copies made from those copies), or (b) primarily for and in +connection with specific products or compilations that contain the +covered work, unless you entered into that arrangement, or that patent +license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + +#### 12. No Surrender of Others' Freedom. + +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under +this License and any other pertinent obligations, then as a +consequence you may not convey it at all. For example, if you agree to +terms that obligate you to collect a royalty for further conveying +from those to whom you convey the Program, the only way you could +satisfy both those terms and this License would be to refrain entirely +from conveying the Program. + +#### 13. Use with the GNU Affero General Public License. + +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + +#### 14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions +of the GNU General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in +detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies that a certain numbered version of the GNU General Public +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that numbered version or +of any later version published by the Free Software Foundation. If the +Program does not specify a version number of the GNU General Public +License, you may choose any version ever published by the Free +Software Foundation. + +If the Program specifies that a proxy can decide which future versions +of the GNU General Public License can be used, that proxy's public +statement of acceptance of a version permanently authorizes you to +choose that version for the Program. + +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + +#### 15. Disclaimer of Warranty. + +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT +WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE +DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +#### 16. Limitation of Liability. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR +CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT +NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR +LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM +TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER +PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +#### 17. Interpretation of Sections 15 and 16. + +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +### How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + +To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively state +the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper +mail. + +If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands \`show w' and \`show c' should show the +appropriate parts of the General Public License. Of course, your +program's commands might be different; for a GUI interface, you would +use an "about box". + +You should also get your employer (if you work as a programmer) or +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. For more information on this, and how to apply and follow +the GNU GPL, see . + +The GNU General Public License does not permit incorporating your +program into proprietary programs. If your program is a subroutine +library, you may consider it more useful to permit linking proprietary +applications with the library. If this is what you want to do, use the +GNU Lesser General Public License instead of this License. But first, +please read . diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..792c28a --- /dev/null +++ b/Makefile @@ -0,0 +1,44 @@ +# Adjust the following per your installation preferences. +# NOTE: if you change $(PKG_DATADIR) then you must change the DATADIR contant in +# src/main.rs to match, as this directory is hardcoded at compile time. +PREFIX = /usr +BINDIR = $(DESTDIR)$(PREFIX)/bin +DATADIR = $(DESTDIR)$(PREFIX)/share +PKG_DATADIR = $(DATADIR)/42 +MAN1DIR = $(DATADIR)/man/man1 +MAN4DIR = $(DATADIR)/man/man4 +# Don't change anything below here unless you know what you're doing + +VPATH += src +VPATH += man +VPATH += target/release +INSTALLDIRS = $(BINDIR) $(PKG_DATADIR) $(MAN1DIR) $(MAN4DIR) + +all: 42 + +42: main.rs Cargo.toml + cargo build --release + +install: install-bin install-data install-man + +install-bin: 42 | $(BINDIR) + install $< $(BINDIR)/ + +install-data: | $(PKG_DATADIR) + install -m644 data/* $(PKG_DATADIR)/ + +install-man: 42.1 man.4 | $(MAN1DIR) $(MAN4DIR) + install -m644 man/42.1 $(MAN1DIR)/ + install -m644 man/man.4 $(MAN4DIR)/ + +$(INSTALLDIRS): + install -d $@ + +clean: + cargo clean + +uninstall: + rm -rf $(BINDIR)/42 $(PKG_DATADIR)/* $(MAN1DIR)/42.1 $(MAN4DIR)/man.4 + +.PHONY: all clean install install-bin install-data install-man uninstall + diff --git a/README.md b/README.md new file mode 100644 index 0000000..4d64885 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +## Description +**42** is a silly little utility similar in nature to the Unix *fortune* command +of old, if it was much simpler and only provided Douglas Adams quotes primarily +from the HitchHiker's guide. +## History +The original 42 was written in C for [HitchHiker Linux](https://hitchhiker-linux.org) +back when I was first learning how to program in that language. This rewrite in +Rust preserves much of the simplicity of the original while being more robust and +providing more flexibility in where it's data files are stored. +## Installation +To build *42* you will need a Rust toolchain. The only explicit dependency besides +`std` is the `rand` crate, and the code is simple without much reliance on bleeding +edge features, so there should be some flexibility in what version of Rust is +used. The included `Makefile` wraps the commands used and will install the data +files and Unix man pages into the proper locations. Should you wish to package +this little gem for your own distro (I'm not sure why, but maybe you would?) then +all of the files can be installed into a destdir by passing the `DESTDIR` environment +variable to `make install`. +```SH +make && make install +``` +## Usage +Most commonly you would call this program from your shell startup files by adding +`42 &` to `~/.bashrc` or `~/.zshrc`, or whatever file your shell happens to use. +This will give you a DA quote every time you log in or open a new terminal window. diff --git a/data/001 b/data/001 new file mode 100644 index 0000000..f381d70 --- /dev/null +++ b/data/001 @@ -0,0 +1,6 @@ +There is a theory which states that if ever anyone discovers exactly +what the Universe is for and why it is here, it will instantly disappear + and be replaced by something even more bizarre and inexplicable. There + is another theory which states that this has already happened. + +- The Book diff --git a/data/002 b/data/002 new file mode 100644 index 0000000..9116a49 --- /dev/null +++ b/data/002 @@ -0,0 +1,6 @@ +Many were increasingly of the opinion that they’d all made a big mistake +in coming down from the trees in the first place. And some said that +even the trees had been a bad move, and that no one should ever have +left the oceans. + +- The Book diff --git a/data/003 b/data/003 new file mode 100644 index 0000000..42b6870 --- /dev/null +++ b/data/003 @@ -0,0 +1,5 @@ +`My doctor says that I have a malformed public-duty gland and a natural +deficiency in moral fibre,' Ford muttered to himself, `and that I am +therefore excused from saving Universes.' + +- Ford the reluctant hero diff --git a/data/004 b/data/004 new file mode 100644 index 0000000..308d37e --- /dev/null +++ b/data/004 @@ -0,0 +1,3 @@ +The ships hung in the sky in much the same way that bricks don’t. + +- The Book on the appearance of the Vogon Constructor Fleet diff --git a/data/005 b/data/005 new file mode 100644 index 0000000..c3fb417 --- /dev/null +++ b/data/005 @@ -0,0 +1,10 @@ +`You know,' said Arthur, `it's at times like this, when I'm trapped in a +Vogon airlock with a man from Betelgeuse, and about to die from +asphyxiation in deep space that I really wish I'd listened to what my +mother told me when I was young.' + +`Why, what did she tell you?' + +`I don't know, I didn't listen.' + +- Arthur coping with certain death as best as he could. diff --git a/data/006 b/data/006 new file mode 100644 index 0000000..5a03291 --- /dev/null +++ b/data/006 @@ -0,0 +1,6 @@ +`Space,' it says, `is big. Really big. You just won’t believe how +vastly, hugely, mindbogglingly big it is. I mean, you may think it’s a +long way down the road to the chemist’s, but that’s just peanuts to +space.' + +- The Book giving perspective diff --git a/data/007 b/data/007 new file mode 100644 index 0000000..2af93b7 --- /dev/null +++ b/data/007 @@ -0,0 +1,4 @@ +`Funny,' he intoned funereally, `how just when you think life can’t +possibly get any worse it suddenly does.' + +- Arthur philosophizing diff --git a/data/008 b/data/008 new file mode 100644 index 0000000..8d67f2b --- /dev/null +++ b/data/008 @@ -0,0 +1,2 @@ +Isn’t it enough to see that a garden is beautiful without having to +believe that there are fairies at the bottom of it too? diff --git a/data/009 b/data/009 new file mode 100644 index 0000000..be4b6c4 --- /dev/null +++ b/data/009 @@ -0,0 +1,3 @@ +A common mistake that people make when trying to design something +completely foolproof is to underestimate the ingenuity of complete +fools. diff --git a/data/010 b/data/010 new file mode 100644 index 0000000..ffdf89c --- /dev/null +++ b/data/010 @@ -0,0 +1,4 @@ +Curiously enough, the only thing that went through the mind of the bowl +of petunias as it fell was Oh no, not again. Many people have speculated +that if we knew exactly why the bowl of petunias had thought that we +would know a lot more about the nature of the Universe than we do now. diff --git a/data/011 b/data/011 new file mode 100644 index 0000000..dda0d3f --- /dev/null +++ b/data/011 @@ -0,0 +1,4 @@ +The reason why it was published in the form of a micro sub meson +electronic component is that if it were printed in normal book form, an +interstellar hitchhiker would require several inconveniently large +buildings to carry it around in. diff --git a/data/012 b/data/012 new file mode 100644 index 0000000..5c96214 --- /dev/null +++ b/data/012 @@ -0,0 +1,6 @@ +For instance, on the planet Earth, man had always assumed that he was +more intelligent than dolphins because he had achieved so much — the +wheel, New York, wars and so on — whilst all the dolphins had ever done +was muck about in the water having a good time. But conversely, the +dolphins had always believed that they were far more intelligent than +man — for precisely the same reasons. diff --git a/data/013 b/data/013 new file mode 100644 index 0000000..db2318d --- /dev/null +++ b/data/013 @@ -0,0 +1,4 @@ +The last ever dolphin message was misinterpreted as a surprisingly +sophisticated attempt to do a double-backwards-somersault through a hoop +whilst whistling the ‘Star Spangled Banner’, but in fact the message was +this: So long and thanks for all the fish. diff --git a/data/014 b/data/014 new file mode 100644 index 0000000..cca5368 --- /dev/null +++ b/data/014 @@ -0,0 +1,5 @@ +The chances of finding out what’s really going on in the universe are so +remote, the only thing to do is hang the sense of it and keep yourself +occupied. + +- Slarty Bartfarst sharing wisdom diff --git a/data/015 b/data/015 new file mode 100644 index 0000000..b9b0df1 --- /dev/null +++ b/data/015 @@ -0,0 +1,2 @@ +`Listen, three eyes,' he said, `don’t you try to outweird me, I get +stranger things than you free with my breakfast cereal.' diff --git a/data/016 b/data/016 new file mode 100644 index 0000000..874291b --- /dev/null +++ b/data/016 @@ -0,0 +1,6 @@ +Not unnaturally, many elevators imbued with intelligence and +precognition became terribly frustrated with the mindless business of +going up and down, up and down, experimented briefly with the notion of +going sideways, as a sort of existential protest, demanded participation +in the decision-making process and finally took to squatting in +basements sulking. diff --git a/data/017 b/data/017 new file mode 100644 index 0000000..97e928d --- /dev/null +++ b/data/017 @@ -0,0 +1,8 @@ +The Total Perspective Vortex derives its picture of the whole Universe +on the principle of extrapolated matter analyses.To explain — since +every piece of matter in the Universe is in some way affected by every +other piece of matter in the Universe, it is in theory possible to +extrapolate the whole of creation — every sun, every planet, their +orbits, their composition and their economic and social history from, +say, one small piece of fairy cake. The man who invented the Total +Perspective Vortex did so basically in order to annoy his wife. diff --git a/data/018 b/data/018 new file mode 100644 index 0000000..0ba8767 --- /dev/null +++ b/data/018 @@ -0,0 +1,3 @@ +`Shee, you guys are so unhip it’s a wonder your bums don’t fall off.' + +- Zaphod assessing his companions diff --git a/data/019 b/data/019 new file mode 100644 index 0000000..c12717e --- /dev/null +++ b/data/019 @@ -0,0 +1,9 @@ +It is known that there are an infinite number of worlds, simply because +there is an infinite amount of space for them to be in. However, not +every one of them is inhabited. Therefore, there must be a finite number +of inhabited worlds. Any finite number divided by infinity is as near to +nothing as makes no odds, so the average population of all the planets +in the Universe can be said to be zero. From this it follows that the +population of the whole Universe is also zero, and that any people you +may meet from time to time are merely the products of a deranged +imagination. diff --git a/data/020 b/data/020 new file mode 100644 index 0000000..bcfcdde --- /dev/null +++ b/data/020 @@ -0,0 +1,5 @@ +The disadvantages involved in pulling lots of black sticky slime from +out of the ground where it had been safely hidden out of harm’s way, +turning it into tar to cover the land with, smoke to fill the air with +and pouring the rest into the sea, all seemed to outweigh the advantages +of being able to get more quickly from one place to another. diff --git a/data/021 b/data/021 new file mode 100644 index 0000000..2095ac8 --- /dev/null +++ b/data/021 @@ -0,0 +1,6 @@ +Make it totally clear that this gun has a right end and a wrong end. +Make it totally clear to anyone standing at the wrong end that things +are going badly for them. If that means sticking all sort of spikes and +prongs and blackened bits all over it then so be it. This is not a gun +for hanging over the fireplace or sticking in the umbrella stand, it is +a gun for going out and making people miserable with. diff --git a/data/022 b/data/022 new file mode 100644 index 0000000..6342345 --- /dev/null +++ b/data/022 @@ -0,0 +1,4 @@ +It is a well known fact that those people who most want to rule people +are, ipso facto, those least suited to do it. To summarize the summary: +anyone who is capable of getting themselves made President should on no +account be allowed to do the job. diff --git a/data/023 b/data/023 new file mode 100644 index 0000000..f8ae49e --- /dev/null +++ b/data/023 @@ -0,0 +1 @@ +`Forty-two,' said Deep Thought, with infinite majesty and calm. diff --git a/data/024 b/data/024 new file mode 100644 index 0000000..9851e38 --- /dev/null +++ b/data/024 @@ -0,0 +1,4 @@ +`Since we decided a few weeks ago to adopt the leaf as legal tender, we +have, of course, all become immensely rich.' + +- Golgafrincham logic diff --git a/data/025 b/data/025 new file mode 100644 index 0000000..00d8a10 --- /dev/null +++ b/data/025 @@ -0,0 +1,8 @@ +In the end, it was the Sunday afternoons he couldn’t cope with, and that +terrible listlessness that starts to set in about 2:55, when you know +you’ve taken all the baths that you can usefully take that day, that +however hard you stare at any given paragraph in the newspaper you will +never actually read it, or use the revolutionary new pruning technique +it describes, and that as you stare at the clock the hands will move +relentlessly on to four o’clock, and you will enter the long dark +teatime of the soul. diff --git a/data/026 b/data/026 new file mode 100644 index 0000000..788f5cd --- /dev/null +++ b/data/026 @@ -0,0 +1,3 @@ +He gazed keenly into the distance and looked as if he would quite like +the wind to blow his hair back dramatically at that point, but the wind +was busy fooling around with some leaves a little way off. diff --git a/data/027 b/data/027 new file mode 100644 index 0000000..6b9d83e --- /dev/null +++ b/data/027 @@ -0,0 +1,3 @@ +He was staring at the instruments with the air of one who is trying to +convert Fahrenheit to centigrade in his head while his house is burning +down. diff --git a/data/028 b/data/028 new file mode 100644 index 0000000..66b8f40 --- /dev/null +++ b/data/028 @@ -0,0 +1,2 @@ +There is a moment in every dawn when light floats, there is the +possibility of magic. Creation holds its breath. diff --git a/data/029 b/data/029 new file mode 100644 index 0000000..d555efa --- /dev/null +++ b/data/029 @@ -0,0 +1,8 @@ +"You may not instantly see why I bring the subject up, but that is +because my mind works so phenomenally fast, and I am at a rough estimate +thirty billion times more intelligent than you. Let me give you an +example. Think of a number, any number." + +"Er, five," said the mattress. + +"Wrong,” said Marvin. “You see?" diff --git a/data/030 b/data/030 new file mode 100644 index 0000000..3b823bf --- /dev/null +++ b/data/030 @@ -0,0 +1,2 @@ +There is an art, it says, or rather, a knack to flying. The knack lies +in learning how to throw yourself at the ground and miss. diff --git a/data/031 b/data/031 new file mode 100644 index 0000000..b630375 --- /dev/null +++ b/data/031 @@ -0,0 +1,2 @@ +It is a mistake to think you can solve any major problems just with +potatoes. diff --git a/data/032 b/data/032 new file mode 100644 index 0000000..c56d1fa --- /dev/null +++ b/data/032 @@ -0,0 +1,6 @@ +He hoped and prayed that there wasn’t an afterlife. Then he realized +there was a contradiction involved here and merely hoped that there +wasn’t an afterlife. + +- Arthur realising that he's in a certain death situation with a + supernova bomb that is shaped like a cricket ball. diff --git a/data/033 b/data/033 new file mode 100644 index 0000000..af116e6 --- /dev/null +++ b/data/033 @@ -0,0 +1,12 @@ +Eskimos had over two hundred different words for snow, without which +their conversation would probably have got very monotonous. So they +would distinguish between thin snow and thick snow, light snow and heavy +snow, sludgy snow, brittle snow, snow that came in flurries, snow that +came in drifts, snow that came in on the bottom of your neighbor’s boots +all over your nice clean igloo floor, the snows of winter, the snows of +spring, the snows you remember from your childhood that were so much +better than any of your modern snow, fine snow, feathery snow, hill +snow, valley snow, snow that falls in the morning, snow that falls at +night, snow that falls all of a sudden just when you were going out +fishing, and snow that despite all your efforts to train them, the +huskies have pissed on. diff --git a/data/034 b/data/034 new file mode 100644 index 0000000..08e92d2 --- /dev/null +++ b/data/034 @@ -0,0 +1,6 @@ +The storm had now definitely abated, and what thunder there was now +grumbled over more distant hills, like a man saying + +"And anotherthing..." + +twenty minutes after admitting he's lost the argument. diff --git a/data/035 b/data/035 new file mode 100644 index 0000000..319c3cc --- /dev/null +++ b/data/035 @@ -0,0 +1,3 @@ +He was wrong to think he could now forget that the big, hard, oily, +dirty, rainbow-hung Earth on which he lived was a microscopic dot on a +microscopic dot lost in the unimaginable infinity of the Universe. diff --git a/data/036 b/data/036 new file mode 100644 index 0000000..f95fe3d --- /dev/null +++ b/data/036 @@ -0,0 +1,4 @@ +"It seemed to me," said Wonko the Sane, "that any civilization that had +so far lost its head as to need to include a set of detailed +instructions for use in a packet of toothpicks, was no longer a +civilization in which I could live and stay sane." diff --git a/data/037 b/data/037 new file mode 100644 index 0000000..1aef0f8 --- /dev/null +++ b/data/037 @@ -0,0 +1,2 @@ +Nothing travels faster than the speed of light with the possible +exception of bad news, which obeys its own special laws. diff --git a/data/038 b/data/038 new file mode 100644 index 0000000..1d6ab75 --- /dev/null +++ b/data/038 @@ -0,0 +1,2 @@ +The last time anybody made a list of the top hundred character +attributes of New Yorkers, common sense snuck in at number 79. diff --git a/data/039 b/data/039 new file mode 100644 index 0000000..bf6d172 --- /dev/null +++ b/data/039 @@ -0,0 +1,4 @@ +Protect me from knowing what I don’t need to know. Protect me from even +knowing that there are things to know that I don’t know. Protect me from +knowing that I decided not to know about the things that I decided not +to know about. Amen. diff --git a/data/040 b/data/040 new file mode 100644 index 0000000..251d30f --- /dev/null +++ b/data/040 @@ -0,0 +1,3 @@ +All you really need to know for the moment is that the universe is a lot +more complicated than you might think, even if you start from a position +of thinking it’s pretty damn complicated in the first place. diff --git a/data/041 b/data/041 new file mode 100644 index 0000000..1534ef1 --- /dev/null +++ b/data/041 @@ -0,0 +1,2 @@ +In the beginning the Universe was created. This has made a lot of people +very angry and been widely regarded as a bad move. diff --git a/data/042 b/data/042 new file mode 100644 index 0000000..e048eaf --- /dev/null +++ b/data/042 @@ -0,0 +1 @@ +Don't Panic. diff --git a/data/043 b/data/043 new file mode 100644 index 0000000..8658927 --- /dev/null +++ b/data/043 @@ -0,0 +1,22 @@ +'...You hadn't exactly gone out of your way to call attention to them +had you? I mean like actually telling anyone or anything.' + +'But the plans were on display...' + +'On display? I eventually had to go down to the cellar to find them.' + +'That's the display department.' + +'With a torch.' + +'Ah, well the lights had probably gone.' + +'So had the stairs.' + +'But look you found the notice didn't you?' + +'Yes,' said Arthur, 'yes I did. It was on display in the bottom of a +locked filing cabinet stuck in a disused lavatory with a sign on the +door saying "Beware of The Leopard".' + +- Arthur singing the praises of the local council planning department. diff --git a/data/044 b/data/044 new file mode 100644 index 0000000..a9e4e04 --- /dev/null +++ b/data/044 @@ -0,0 +1,7 @@ +`Time is an illusion. Lunchtime doubly so.' + +`Very deep,' said Arthur, `you should send that in to the +"Reader's Digest". They've got a page for people like you.' + +- Ford convincing Arthur to drink three pints in ten minutes at + lunchtime. diff --git a/data/045 b/data/045 new file mode 100644 index 0000000..975d2f8 --- /dev/null +++ b/data/045 @@ -0,0 +1,4 @@ +`This must be Thursday,' said Arthur to himself, sinking low over his +beer, `I never could get the hang of Thursdays.' + +- Arthur, on what was to be his last Thursday on Earth. diff --git a/data/046 b/data/046 new file mode 100644 index 0000000..74c6d50 --- /dev/null +++ b/data/046 @@ -0,0 +1,9 @@ +Pages one and two [of Zaphod's presidential speech] had been salvaged by +a Damogran Frond Crested Eagle and had already become incorporated into +an extraordinary new form of nest which the eagle had invented. It was +constructed largely of papier mache and it was virtually impossible for +a newly hatched baby eagle to break out of it. The Damogran Frond +Crested Eagle had heard of the notion of survival of the species but +wanted no truck with it. + +- An example of Damogran wildlife. diff --git a/data/047 b/data/047 new file mode 100644 index 0000000..ec68143 --- /dev/null +++ b/data/047 @@ -0,0 +1,15 @@ +`How do you feel?' he asked him. + +`Like a military academy,' said Arthur, `bits of me keep passing out.....' + +`We're safe,' he said. + +`Oh good,' said Arthur. + +`We're in a small galley cabin,' said Ford, `in one of the spaceships of +the Vogon Constructor Fleet.' + +`Ah,' said Arthur, `this is obviously some strange usage of the word +"safe" that I wasn't previously aware of.' + +- Arthur after his first ever teleport ride. diff --git a/data/048 b/data/048 new file mode 100644 index 0000000..4f26c60 --- /dev/null +++ b/data/048 @@ -0,0 +1,4 @@ +`The best way to get a drink out of a Vogon is to stick your finger down +his throat...' + +- The Book, on one of the Vogon's social inadequacies. diff --git a/data/049 b/data/049 new file mode 100644 index 0000000..adcf25b --- /dev/null +++ b/data/049 @@ -0,0 +1,8 @@ +`You'd better be prepared for the jump into hyperspace. It's +unpleasantly like being drunk.' + +`What's so unpleasant about being drunk?' + +`You ask a glass of water.' + +- Arthur getting ready for his first jump into hyperspace. diff --git a/data/050 b/data/050 new file mode 100644 index 0000000..c31120c --- /dev/null +++ b/data/050 @@ -0,0 +1,3 @@ +`Ford, you're turning into a penguin. Stop it.' + +- Arthur experiences the improbability drive at work. diff --git a/data/051 b/data/051 new file mode 100644 index 0000000..ac10ffa --- /dev/null +++ b/data/051 @@ -0,0 +1,10 @@ +`I think you ought to know that I'm feeling very depressed.' + +`Life, don't talk to me about life.' + +`Here I am, brain the size of a planet and they ask me to take you down +to the bridge. Call that "job satisfaction"? 'Cos I don't.' + +`I've got this terrible pain in all the diodes down my left side.' + +- Guess who. diff --git a/data/052 b/data/052 new file mode 100644 index 0000000..1e261e7 --- /dev/null +++ b/data/052 @@ -0,0 +1,4 @@ +`If there's anything more important than my ego around, I want it caught +and shot now.' + +- Zaphod. diff --git a/data/053 b/data/053 new file mode 100644 index 0000000..22c443a --- /dev/null +++ b/data/053 @@ -0,0 +1,5 @@ +`In those days spirits were brave, the stakes were high, men were REAL +men, women were REAL women, and small furry creatures from Alpha +Centauri were REAL small furry creatures from Aplha Centauri.' + +- The Book getting all nostalgic. diff --git a/data/054 b/data/054 new file mode 100644 index 0000000..6e31358 --- /dev/null +++ b/data/054 @@ -0,0 +1,18 @@ +`Hey this is terrific!' Zaphod said. `Someone down there is trying to +kill us!' + +`Terrific,' said Arthur. + +`But don't you see what this means?' + +`Yes. We are going to die.' + +`Yes, but apart from that.' + +`APART from that?' + +`It means we must be on to something!' + +`How soon can we get off it?' + +- Zaphod and Arthur in a certain death situation over Magrathea. diff --git a/data/055 b/data/055 new file mode 100644 index 0000000..73c2f4e --- /dev/null +++ b/data/055 @@ -0,0 +1,6 @@ +And wow! Hey! What's this thing coming towards me very fast? Very very +fast. So big and flat and round, it needs a big wide sounding word +like... ow... ound... round... ground! That's it! That's a good name - +ground! I wonder if it will be friends with me? + +- For the sperm whale, it wasn't. diff --git a/data/056 b/data/056 new file mode 100644 index 0000000..cd34c9e --- /dev/null +++ b/data/056 @@ -0,0 +1,3 @@ +Oh no, not again. + +- A bowl of petunias on it's way to certain death. diff --git a/data/057 b/data/057 new file mode 100644 index 0000000..cb04196 --- /dev/null +++ b/data/057 @@ -0,0 +1,14 @@ +`Er, hey Earthman...' + +`Arthur,' said Arthur. + +`Yeah, could you just sort of keep this robot with you and guard this +end of the passageway. OK?' + +`Guard?' said Arthur. `What from? You just said there's no one here.' + +`Yeah, well, just for safety, OK?' said Zaphod. + +`Whose? Yours or mine?' + +- Arthur drawing the short straw on Magrathea. diff --git a/data/058 b/data/058 new file mode 100644 index 0000000..b6ef6c1 --- /dev/null +++ b/data/058 @@ -0,0 +1,5 @@ +There are of course many problems connected with life, of which some of +the most popular are `Why are people born?' `Why do they die?' `Why do +they spend so much of the intervening time wearing digital watches?' + +- The Book. diff --git a/data/059 b/data/059 new file mode 100644 index 0000000..0d36f33 --- /dev/null +++ b/data/059 @@ -0,0 +1,12 @@ +`Right,' said Ford, `I'm going to have a look.' + +He glanced round at the others. + +`Is no one going to say, "No you can't possibly, let me go instead"?' + +They all shook their heads. + +`Oh well.' + +- Ford attempting to be heroic whilst being seiged by Shooty and + Bangbang. diff --git a/data/060 b/data/060 new file mode 100644 index 0000000..4d71910 --- /dev/null +++ b/data/060 @@ -0,0 +1,9 @@ +`In the beginning the Universe was created. This has made a lot of +people very angry and been widely regarded as a bad move.' + +- The Book just recapping what happened in the last book. + +`I am so amazingly cool you could keep a side of meat in me for a month. +I am so hip I have difficulty seeing over my pelvis.' + +- Zaphod being cool. diff --git a/data/061 b/data/061 new file mode 100644 index 0000000..9473309 --- /dev/null +++ b/data/061 @@ -0,0 +1,14 @@ +`You ARE Zaphod Beeblebrox?' + +`Yeah,' said Zaphod, `but don't shout it out or they'll all want one.' + +`THE Zaphod Beeblebrox?' + +`No, just A Zaphod Bebblebrox, didn't you hear I come in six packs?' + +`But sir,' it squealed, `I just heard on the sub-ether radio report. It +said you were dead...' + +`Yeah, that's right, I just haven't stopped moving yet.' + +- Zaphod and the Guide's receptionist. diff --git a/data/062 b/data/062 new file mode 100644 index 0000000..d14bc27 --- /dev/null +++ b/data/062 @@ -0,0 +1,6 @@ +The fronting for the eighty-yard-long marble-topped bar had been made by +stitching together nearly twenty thousand Antarean Mosaic Lizard skins, +despite the fact that the twenty thousand lizards concerned had needed +them to keep their insides in. + +- The Book decribing Milliways' politically incorrect decor. diff --git a/data/063 b/data/063 new file mode 100644 index 0000000..0ba5988 --- /dev/null +++ b/data/063 @@ -0,0 +1,14 @@ +`...and the Universe,' continued the waiter, determined not to be +deflected on his home stretch, `will explode later for your pleasure.' + +Ford's head swivelled slowly towards him. He spoke with feeling. + +`Wow,' he said, `What sort of drinks do you serve in this place?' + +The waiter laughed a polite little waiter's laugh. + +`Ah,' he said, `I think sir has perhaps misunderstood me.' + +`Oh, I hope not,' breathed Ford. + +- Ford in paradise. diff --git a/data/064 b/data/064 new file mode 100644 index 0000000..04bd533 --- /dev/null +++ b/data/064 @@ -0,0 +1,4 @@ +Zaphod grinned two manic grins, sauntered over to the bar and bought +most of it. + +- Zaphod in paradise. diff --git a/data/065 b/data/065 new file mode 100644 index 0000000..9365b72 --- /dev/null +++ b/data/065 @@ -0,0 +1,12 @@ +`Maybe somebody here tipped off the Galactic Police,' said Trillian. + +`Everybody saw you come in.' + +`You mean they want to arrest me over the phone?' said Zaphod, `Could +be. I'm a pretty dangerous dude when I'm cornered.' + +`Yeah,' said a voice from under the table [Ford's now completely +rat-arsed at this point], `you go to pieces so fast people get hit by +the shrapnel.' + +- Zaphod getting paranoid over a phone call. diff --git a/data/066 b/data/066 new file mode 100644 index 0000000..47baf13 --- /dev/null +++ b/data/066 @@ -0,0 +1,10 @@ +`Hand me the rap-rod, Plate Captain.' + +The little waiter's eyebrows wandered about his forehead in confusion. + +`I beg your pardon, sir?' he said. + +`The phone, waiter,' said Zaphod, grabbing it off him. `Shee, you guys +are so unhip it's a wonder your bums don't fall off.' + +- Zaphod discovers that waiters are the least hip people in the Universe. diff --git a/data/067 b/data/067 new file mode 100644 index 0000000..3186ae2 --- /dev/null +++ b/data/067 @@ -0,0 +1,5 @@ +The main reception foyer was almost empty but Ford nevertheless weaved +his way through it. + +- Ford making his way out of Milliways whilst +under the influence of enough alcohol to make a rhino sing. diff --git a/data/068 b/data/068 new file mode 100644 index 0000000..c7801b5 --- /dev/null +++ b/data/068 @@ -0,0 +1,6 @@ +`The first ten million years were the worst,' said Marvin, `and the +second ten million, they were the worst too. The third ten million I +didn't enjoy at all. After that I went into a bit of a decline.' + +- Marvin reflecting back on his 576,000,003,579 year career as + Milliways' car park attendent. diff --git a/data/069 b/data/069 new file mode 100644 index 0000000..40235b6 --- /dev/null +++ b/data/069 @@ -0,0 +1,16 @@ +`Incidentally,' he said, `what does teleport mean?' + +Another moment passed. + +Slowly, the others turned to face him. + +`Probably the wrong moment to ask,' said Arthur, `It's just I remember +you use the word a short while ago and I only bring it up because...' + +`Where,' said Ford quietly, `does it say teleport?' + +`Well, just over here in fact,' said Arthur, pointing at a dark control +box in the rear of the cabin, `Just under the word "emergency" above the +word "system" and beside the sign saying "out of order".' + +- Arthur finding an escape route from a certain death situation. diff --git a/data/070 b/data/070 new file mode 100644 index 0000000..4916f14 --- /dev/null +++ b/data/070 @@ -0,0 +1,6 @@ +I teleported home one night +With Ron and Sid and Meg. +Ron stole Meggie's heart away +And I got Sidney's leg. + +- A poem about matter transference beams. diff --git a/data/071 b/data/071 new file mode 100644 index 0000000..3dc08c4 --- /dev/null +++ b/data/071 @@ -0,0 +1,4 @@ +Anyone who is capable of getting themselves made President should on no +account be allowed to do the job. + +- Some wisdom from The Book. diff --git a/data/072 b/data/072 new file mode 100644 index 0000000..ff5f26d --- /dev/null +++ b/data/072 @@ -0,0 +1,11 @@ +`We've got to find out what people want from fire, how they relate to +it, what sort of image it has for them.' + +The crowd were tense. They were expecting something wonderful from Ford. + +`Stick it up your nose,' he said. + +`Which is precisely the sort of thing we need to know,' insisted the +girl, `Do people want fire that can be fitted nasally?' + +- Ford "debating" what to do with fire with a marketing girl. diff --git a/data/073 b/data/073 new file mode 100644 index 0000000..40274e7 --- /dev/null +++ b/data/073 @@ -0,0 +1,9 @@ +The story goes that I first had the idea for THHGTTG while lying drunk +in a field in Innsbruck (or `Spain' as the BBC TV publicity department +authoritatively has it, probably because it's easier to spell). + +- Foreward by DNA. + +FORD: Six pints of bitter. And quickly please, the world's about to end. + +BARMAN: Oh yes, sir? Nice weather for it. diff --git a/data/074 b/data/074 new file mode 100644 index 0000000..fb8a3e8 --- /dev/null +++ b/data/074 @@ -0,0 +1,7 @@ +BOOK: Meanwhile, the starship has landed on the surface of Magrathea and +Trillian is about to make one of the most important statements of her +life. Its importance is not immediately recognised by her companions. + +TRILL: Hey, my white mice have escaped. + +ZAPHOD: Nuts to your white mice. diff --git a/data/075 b/data/075 new file mode 100644 index 0000000..1f2923f --- /dev/null +++ b/data/075 @@ -0,0 +1,5 @@ +...Man had always assumed that he was more intelligent than dolphins +because he had achieved so much... the wheel, New York, wars, and so on, +whilst all the dolphins had ever done was muck about in the water having +a good time. But conversely the dolphins believed themselves to be more +intelligent than man for precisely the same reasons. diff --git a/data/076 b/data/076 new file mode 100644 index 0000000..1631236 --- /dev/null +++ b/data/076 @@ -0,0 +1,9 @@ +ARTHUR: What is an Algolian Zylatburger anyway? + +FORD: They're a kind of meatburger made from the most unpleasant parts +of a creature well known for its total lack of any pleasant parts. + +ARTHUR: So you mean that the Universe does actually end not with a bang +but with a Wimpy? + +- Cut dialogue from Fit the Fifth. diff --git a/data/077 b/data/077 new file mode 100644 index 0000000..66241a6 --- /dev/null +++ b/data/077 @@ -0,0 +1,12 @@ +FORD: Tell me Arthur... + +ARTHUR: Yes? + +FORD: This boulder we're stuck under, how big would you say it was? +Roughly? + +ARTHUR: Oh, about the size of Coventry Cathedral. + +FORD: Do you think we could move it? (Arthur doesn't reply) Just asking. + +- Ford and Arthur in a tricky situation, Fit the Eighth. diff --git a/data/078 b/data/078 new file mode 100644 index 0000000..da3832e --- /dev/null +++ b/data/078 @@ -0,0 +1,9 @@ +What to do if you find yourself stuck in a crack in the ground underneath +a giant boulder you can't move, with no hope of rescue. Consider how +lucky you are that life has been good to you so far. Alternatively, if +life hasn't been good to you so far, which given your current +circumstances seems more likely, consider how lucky you are that it +won't be troubling you much longer. + +- Comforting advice for Ford and Arthur in this current situation, Fit + the Eighth. diff --git a/data/079 b/data/079 new file mode 100644 index 0000000..89fdff5 --- /dev/null +++ b/data/079 @@ -0,0 +1,17 @@ +ZAPHOD: Hey, this rock... + +FORD: Marble... + +ZAPHOD: Marble... + +FORD: Ice-covered marble... + +ZAPHOD: Right... it's as slippery as... as... What's the slipperiest +thing you can think of? + +FORD: At the moment? This marble. + +ZAPHOD: Right. This marble is as slippery as this marble. + +- Zaphod and Ford trying to get a grip on things in Brontitall, Fit + the Tenth. diff --git a/data/080 b/data/080 new file mode 100644 index 0000000..216127d --- /dev/null +++ b/data/080 @@ -0,0 +1,4 @@ +It's not a question of whose habitat it is, it's a question of how hard +you hit it. + +- Arthur pointing out one of the disadvantages of gravity, Fit the Tenth. diff --git a/data/081 b/data/081 new file mode 100644 index 0000000..e34ae89 --- /dev/null +++ b/data/081 @@ -0,0 +1,22 @@ +ARTHUR: It probably seems a terrible thing to say, but you know what I +sometimes think would be useful in these situations? + +LINT.: What? + +ARTHUR: A gun of some sort. + +LINT.2: Will this help? + +ARTHUR: What is it? + +LINT.2: A gun of some sort. + +ARTHUR: Oh, that'll help. Can you make it fire? + +LINT.: Er... + +F/X: DEAFENING ROAR + +LINT.: Yes. + +- Arthur and the Lintillas gaining the upper hand, Fit the Twelfth. diff --git a/data/082 b/data/082 new file mode 100644 index 0000000..ca74f43 --- /dev/null +++ b/data/082 @@ -0,0 +1,5 @@ +He stood up straight and looked the world squarely in the fields and +hills. To add weight to his words he stuck the rabbit bone in his hair. +He spread his arms out wide. `I will go mad!' he announced. + +- Arthur discovering a way of coping with life on Prehistoric Earth. diff --git a/data/083 b/data/083 new file mode 100644 index 0000000..af8d409 --- /dev/null +++ b/data/083 @@ -0,0 +1,14 @@ +`... then I decided that I was a lemon for a couple of weeks. I kept +myself amused all that time jumping in and out of a gin and tonic.' + +Arthur cleared his throat, and then did it again. +`Where,' he said, `did you...?' + +`Find a gin and tonic?' said Ford brightly. `I found a small lake that +thought it was a gin and tonic, and jumped in and out of that. At least, +I think it thought it was a gin and tonic.' + +`I may,' he addded with a grin which would have sent sane men scampering +into the trees, `have been imagining it.' + +- Ford updating Arthur about what he's been doing for the past four years. diff --git a/data/084 b/data/084 new file mode 100644 index 0000000..193d5f7 --- /dev/null +++ b/data/084 @@ -0,0 +1,5 @@ +`Eddies,' said Ford, `in the space-time continuum.' + +`Ah,' nodded Arthur, `is he? Is he?' + +- Arthur failing in his first lesson of galactic physics in four years. diff --git a/data/085 b/data/085 new file mode 100644 index 0000000..dbc99f2 --- /dev/null +++ b/data/085 @@ -0,0 +1,5 @@ +Ford grabbed him by the lapels of his dressing gown and spoke to him as +slowly and distinctly and patiently as if he were somebody from a +telephone company accounts department. + +- Ford trying to rectify that situation. diff --git a/data/086 b/data/086 new file mode 100644 index 0000000..58a40ec --- /dev/null +++ b/data/086 @@ -0,0 +1,3 @@ +...[Arthur] leapt to his feet like an author hearing the phone ring... + +- Who says that the character of Arthur isn't autobiographical? diff --git a/data/087 b/data/087 new file mode 100644 index 0000000..ddeab9e --- /dev/null +++ b/data/087 @@ -0,0 +1,14 @@ +Arthur's consciousness approached his body as from a great distance, +and reluctantly. It had had some bad times in there. Slowly, nervously, +it entered and settled down into its accustomed position. + +Arthur sat up. + +`Where am I?' he said. + +`Lord's Cricket Ground,' said Ford. + +`Fine,' said Arthur, and his consciousness stepped out again for a quick +breather. His body flopped back on the grass. + +- Arthur coping with his return to Earth as best as he could. diff --git a/data/088 b/data/088 new file mode 100644 index 0000000..f37bbe6 --- /dev/null +++ b/data/088 @@ -0,0 +1,8 @@ +`A curse,' said Slartibartfast, `which will engulf the Galaxy in fire +and destruction, and possibly bring the Universe to a premature doom. I +mean it,' he added. + +`Sounds like a bad time,' said Ford, `with luck I'll be drunk enough not +to notice.' + +- Ford ensuring everyone knew where his priorities lay. diff --git a/data/089 b/data/089 new file mode 100644 index 0000000..7988973 --- /dev/null +++ b/data/089 @@ -0,0 +1,9 @@ +Trillian did a little research in the ship's copy of THHGTTG. It had +some advice to offer on drunkenness. + +`Go to it,' it said, `and good luck.' + +It was cross-referenced to the entry concerning the size of the Universe +and ways of coping with that. + +- One of the more preferable pieces of advice contained in the Guide. diff --git a/data/090 b/data/090 new file mode 100644 index 0000000..6e53db5 --- /dev/null +++ b/data/090 @@ -0,0 +1,5 @@ +His eyes seemed to be popping out of his head. He wasn't certain if this +was because they were trying to see more clearly, or if they simply +wanted to leave at this point. + +- Arthur trying to see who had diverted him from going to a party. diff --git a/data/091 b/data/091 new file mode 100644 index 0000000..67f6e76 --- /dev/null +++ b/data/091 @@ -0,0 +1,11 @@ +Arthur yawed wildly as his skin tried to jump one way and his skeleton +the other, whilst his brain tried to work out which of his ears it most +wanted to crawl out of. + +`Bet you weren't expecting to see me again,' said the monster, which +Arthur couldn't help thinking was a strange remark for it to make, +seeing as he had never met the creature before. He could tell that he +hadn't met the creature before from the simple fact that he was able to +sleep at nights. + +- Arthur discovering who had diverted him from going to a party. diff --git a/data/092 b/data/092 new file mode 100644 index 0000000..e3a99a6 --- /dev/null +++ b/data/092 @@ -0,0 +1,5 @@ +`That young girl is one of the least benightedly unintelligent organic +life forms it has been my profound lack of pleasure not to be able to +avoid meeting.' + +- Marvin's first ever compliment about anybody. diff --git a/data/093 b/data/093 new file mode 100644 index 0000000..5e69775 --- /dev/null +++ b/data/093 @@ -0,0 +1,5 @@ +`Credit?' he said. `Aaaargggh...' + +These two words are usually coupled together in the Old Pink Dog Bar. + +- Ford in a spot of bother. diff --git a/data/094 b/data/094 new file mode 100644 index 0000000..bccbd16 --- /dev/null +++ b/data/094 @@ -0,0 +1,4 @@ +There was a point to this story, but it has temporarily escaped the +chronicler's mind. + +- This line perhaps best sums up the whole book. diff --git a/data/095 b/data/095 new file mode 100644 index 0000000..250193d --- /dev/null +++ b/data/095 @@ -0,0 +1,5 @@ +When it's fall in New York, the air smells as if someone's been frying +goats in it, and if you are keen to breathe the best plan is to open a +window and stick your head in a building. + +- Nuff said?? diff --git a/data/096 b/data/096 new file mode 100644 index 0000000..bdf8359 --- /dev/null +++ b/data/096 @@ -0,0 +1,6 @@ +What the hell, he thought, you're only young once, and threw himself out +of the window. That would at least keep the element of surprise on his +side. + +- Ford outwitting a Vogon with a rocket launcher by going into another + certain death situation. diff --git a/data/097 b/data/097 new file mode 100644 index 0000000..8db2a3f --- /dev/null +++ b/data/097 @@ -0,0 +1,6 @@ +The major difference between a thing that might go wrong and a thing +that cannot possibly go wrong is that when a thing that cannot possibly +go wrong goes wrong it usually turns out to be impossible to get at or +repair. + +- One of the laws of computers and programming revealed. diff --git a/data/098 b/data/098 new file mode 100644 index 0000000..a62c6ab --- /dev/null +++ b/data/098 @@ -0,0 +1,12 @@ +`You know they've reintroduced the death penalty for insurance company +directors?' + +`Really?' said Arthur. `No I didn't. For what offence?' + +Trillian frowned. + +`What do you mean, offence?' + +`I see.' + +- Evidence that there will be some justice in the Universe eventually. diff --git a/data/099 b/data/099 new file mode 100644 index 0000000..f83a2e6 --- /dev/null +++ b/data/099 @@ -0,0 +1,13 @@ +`She hit me on the head with the rock again.' + +`I think I can confirm that that was my daughter.' + +`Sweet kid.' + +`You have to get to know her,' said Arthur. + +`She eases up does she?' + +`No,' said Arthur, `but you get a better sense of when to duck.' + +- Ford and Arthur on Random. diff --git a/data/100 b/data/100 new file mode 100644 index 0000000..7443216 --- /dev/null +++ b/data/100 @@ -0,0 +1,4 @@ +Far out in the uncharted backwaters of the unfashionable end of the +western spiral arm of the Galaxy lies a small unregarded yellow sun. + +- The reality of our solar system diff --git a/data/101 b/data/101 new file mode 100644 index 0000000..9096811 --- /dev/null +++ b/data/101 @@ -0,0 +1,2 @@ +`Ah, ' said Arthur, `this is obviously some strange usage of the word +safe that I wasn't previously aware of.' diff --git a/data/102 b/data/102 new file mode 100644 index 0000000..e8ed895 --- /dev/null +++ b/data/102 @@ -0,0 +1,2 @@ +`I don't know, ' said the voice on the PA, `apathetic bloody planet, +I've no sympathy at all.' diff --git a/data/103 b/data/103 new file mode 100644 index 0000000..1c9299a --- /dev/null +++ b/data/103 @@ -0,0 +1,12 @@ +Now it is such a bizarrely improbable coincidence that anything so +mindboggingly useful could have evolved purely by chance that some +thinkers have chosen to see it as the final and clinching proof of the +non-existence of God. + +The argument goes something like this: + `I refuse to prove that I exist,' says God, `for proof denies faith, + and without faith I am nothing.' + + `But,' says Man, `The Babel fish is a dead giveaway, isn't it? It + could not have evolved by chance. It proves you exist, and so + therefore, by your own arguments, you don't. QED.' diff --git a/data/104 b/data/104 new file mode 100644 index 0000000..1e4bfa6 --- /dev/null +++ b/data/104 @@ -0,0 +1,3 @@ +Prostetnic Vogon Jeltz smiled very slowly. This was done not so much for +effect as because he was trying to remember the sequence of muscle +movements. diff --git a/data/105 b/data/105 new file mode 100644 index 0000000..fb88bcb --- /dev/null +++ b/data/105 @@ -0,0 +1,4 @@ +OK, so ten out of ten for style, but minus several million for good +thinking, yeah? + +- Zaphod diff --git a/data/106 b/data/106 new file mode 100644 index 0000000..0c5226e --- /dev/null +++ b/data/106 @@ -0,0 +1,2 @@ +For a moment, nothing happened. Then, after a second or so, nothing +continued to happen. diff --git a/data/107 b/data/107 new file mode 100644 index 0000000..0e66caa --- /dev/null +++ b/data/107 @@ -0,0 +1,3 @@ +The suit into which the man's body had been stuffed looked as if it's +only purpose in life was to demonstrate how difficult it was to get this +sort of body into a suit. diff --git a/data/108 b/data/108 new file mode 100644 index 0000000..835e017 --- /dev/null +++ b/data/108 @@ -0,0 +1,10 @@ +`And finally, ' said Max, quieting the audience down and putting on his +solemn face, `finally I believe we have with us here tonight, a party of +believers, very devout believers, from the Church of the Second Coming +of the Great Prophet Zarquon. ' + +... + +`There they are, ' said Max, `sitting there, patiently. He said he'd +come again, and he's kept you waiting a long time, so let's hope he's +hurrying fellas, because he's only got eight minutes left!' diff --git a/data/109 b/data/109 new file mode 100644 index 0000000..35353eb --- /dev/null +++ b/data/109 @@ -0,0 +1,9 @@ +`What are you talking about?' + +`Never mind, eat the fruit.' + +`You know, this place almost looks like the Garden of Eden.' + +`Eat the fruit.' + +`Sounds quite like it too.' diff --git a/data/110 b/data/110 new file mode 100644 index 0000000..5983389 --- /dev/null +++ b/data/110 @@ -0,0 +1 @@ +Rome wasn't burned in a day. diff --git a/data/111 b/data/111 new file mode 100644 index 0000000..5ffbd01 --- /dev/null +++ b/data/111 @@ -0,0 +1,4 @@ +Ford had his own code of ethics. It wasn't much of one, but it was his +and he stuck by it, more or less. One rule he made was never to buy his +own drinks. He wasn't sure if that counted as an ethic, but you have to +go with what you've got. diff --git a/data/112 b/data/112 new file mode 100644 index 0000000..dd3ba3f --- /dev/null +++ b/data/112 @@ -0,0 +1,4 @@ +He felt that his whole life was some kind of dream and he sometimes +wondered whose it was and whether they were enjoying it. + +- Arthur being Arthur diff --git a/data/113 b/data/113 new file mode 100644 index 0000000..5b2c64b --- /dev/null +++ b/data/113 @@ -0,0 +1 @@ +I'd far rather be happy than right any day. diff --git a/data/114 b/data/114 new file mode 100644 index 0000000..3078d46 --- /dev/null +++ b/data/114 @@ -0,0 +1,2 @@ +“This must be Thursday,' said Arthur to himself, sinking low over his +beer. 'I never could get the hang of Thursdays.” diff --git a/data/115 b/data/115 new file mode 100644 index 0000000..79e9c26 --- /dev/null +++ b/data/115 @@ -0,0 +1,3 @@ +Ford... you're turning into a penguin. Stop it. + +- We have normality diff --git a/data/116 b/data/116 new file mode 100644 index 0000000..c9c370a --- /dev/null +++ b/data/116 @@ -0,0 +1,13 @@ +A towel, The Guide says, is about the most massively useful thing an +interstellar hitchhiker can have. Partly it has great practical value. +You can wrap it around you for warmth as you bound across the cold moons +of Jaglan Beta; you can lie on it on the brilliant marble-sanded beaches +of Santraginus V, inhaling the heady sea vapors; you can sleep under it +beneath the stars which shine so redly on the desert world of Kakrafoon; +use it to sail a miniraft down the slow heavy River Moth; wet it for use +in hand-to-hand-combat; wrap it round your head to ward off noxious fumes +or avoid the gaze of the Ravenous Bugblatter Beast of Traal (such a +mind-boggingly stupid animal, it assumes that if you can't see it, it +can't see you); you can wave your towel in emergencies as a distress +signal, and of course dry yourself off with it if it still seems to be +clean enough. diff --git a/data/117 b/data/117 new file mode 100644 index 0000000..0a37e1b --- /dev/null +++ b/data/117 @@ -0,0 +1,8 @@ +“So this is it," said Arthur, "We are going to die." +"Yes," said Ford, "except... no! Wait a minute!" He suddenly lunged +across the chamber at something behind Arthur's line of vision. +"What's this switch?" he cried. +"What? Where?" cried Arthur, twisting round. +"No, I was only fooling," said Ford, "we are going to die after all.” + +- Ford's sense of propriety diff --git a/data/118 b/data/118 new file mode 100644 index 0000000..9d2aac3 --- /dev/null +++ b/data/118 @@ -0,0 +1,2 @@ +All opinions are not equal. Some are a very great deal more robust, +sophisticated and well supported in logic and argument than others. diff --git a/data/119 b/data/119 new file mode 100644 index 0000000..df6ff37 --- /dev/null +++ b/data/119 @@ -0,0 +1,6 @@ +This planet has - or rather had - a problem, which was this: most of +the people living on it were unhappy for pretty much of the time. Many +solutions were suggested for this problem, but most of these were +largely concerned with the movement of small green pieces of paper, +which was odd because on the whole it wasn't the small green pieces of +paper that were unhappy. diff --git a/data/120 b/data/120 new file mode 100644 index 0000000..00d3122 --- /dev/null +++ b/data/120 @@ -0,0 +1 @@ +We demand rigidly defined areas of doubt and uncertainty! diff --git a/data/121 b/data/121 new file mode 100644 index 0000000..99b832b --- /dev/null +++ b/data/121 @@ -0,0 +1,8 @@ +“All through my life I've had this strange unaccountable feeling that +something was going on in the world, something big, even sinister, and +no one would tell me what it was." + +"No," said the old man, "that's just perfectly normal paranoia. +Everyone in the Universe has that.” + +- Slarty Bart Farst educating Arthur diff --git a/data/122 b/data/122 new file mode 100644 index 0000000..18a872d --- /dev/null +++ b/data/122 @@ -0,0 +1,4 @@ +“Ford!" he said, "there's an infinite number of monkeys outside who want +to talk to us about this script for Hamlet they've worked out.” + +- Testing a hypothesis diff --git a/data/123 b/data/123 new file mode 100644 index 0000000..3dd644e --- /dev/null +++ b/data/123 @@ -0,0 +1,4 @@ +The Hitch-Hiker's Guide to the Galaxy also mentions alcohol. It says +that the best drink in existence is the Pan Galactic Gargle Blaster, +the effect of which is like having your brains smashed out with a slice +of lemon wrapped round a large gold brick. diff --git a/data/124 b/data/124 new file mode 100644 index 0000000..b8f4f25 --- /dev/null +++ b/data/124 @@ -0,0 +1,7 @@ +And then, one Thursday, nearly two thousand years after one man had been +nailed to a tree for saying how great it would be to be nice to people +for a change, a girl sitting on her own in a small café in Rickmansworth +suddenly realized what it was that had been going wrong all this time, +and she finally knew how the world could be made a good and happy place. +This time it was right, it would work, and no one would have to get +nailed to anything. diff --git a/data/125 b/data/125 new file mode 100644 index 0000000..a92eeda --- /dev/null +++ b/data/125 @@ -0,0 +1,9 @@ +One of the major difficulties Trillian experienced in her relationship +with Zaphod was learning to distinguish between him pretending to be +stupid just to get people off their guard, pretending to be stupid +because he couldn't be bothered to think and wanted someone else to do +it for him, pretending to be outrageously stupid to hide the fact that +he actually didn’t understand what was going on, and really being +genuinely stupid. He was renowned for being amazingly clever and quite +clearly was so—but not all the time, which obviously worried him, hence, +the act. He preferred people to be puzzled rather than contemptuous. diff --git a/data/126 b/data/126 new file mode 100644 index 0000000..cf9987d --- /dev/null +++ b/data/126 @@ -0,0 +1,8 @@ +Bypasses are devices that allow some people to dash from point A to +point B very fast while other people dash from point B to point A very +fast. People living at point C, being a point directly in between, are +often given to wonder what's so great about point A that so many people +from point B are so keen to get there, and what's so great about point +B that so many people from point A are so keen to get there. They often +wish that people would just once and for all work out where the hell +they wanted to be. diff --git a/data/127 b/data/127 new file mode 100644 index 0000000..869d7bc --- /dev/null +++ b/data/127 @@ -0,0 +1,3 @@ +Meanwhile, the poor Babel fish, by effectively removing all barriers to +communication between different races and cultures, has caused more and +bloodier wars than anything else in the history of creation. diff --git a/data/128 b/data/128 new file mode 100644 index 0000000..1f23bdf --- /dev/null +++ b/data/128 @@ -0,0 +1,3 @@ +and we’ll be saying a big hello to all intelligent life forms everywhere +… and to everyone else out there, the secret is to bang the rocks +together, guys. diff --git a/data/129 b/data/129 new file mode 100644 index 0000000..8e8512a --- /dev/null +++ b/data/129 @@ -0,0 +1,7 @@ +Well, I mean, yes idealism, yes the dignity of pure research, yes the +pursuit of truth in all its forms, but there comes a point I'm afraid +where you begin to suspect that the entire multidimensional infinity of +the Universe is almost certainly being run by a bunch of maniacs. And +if it comes to a choice between spending yet another ten million years +finding that out, and on the other hand just taking the money and +running, then I for one could do with the exercise. diff --git a/data/130 b/data/130 new file mode 100644 index 0000000..65aa6e6 --- /dev/null +++ b/data/130 @@ -0,0 +1,16 @@ +Vogon poetry is of course, the third worst in the universe. + +The second worst is that of the Azgoths of Kria. During a recitation by +their poet master Grunthos the Flatulent of his poem "Ode to a Small +Lump of Green Putty I Found in My Armpit One Midsummer Morning" four of +his audience died of internal haemorrhaging and the president of the +Mid-Galactic Arts Nobbling Council survived by gnawing one of his own +legs off. Grunthos was reported to have been "disappointed" by the +poem's reception, and was about to embark on a reading of his 12-book +epic entitled "My Favourite Bathtime Gurgles" when his own major +intestine, in a desperate attempt to save humanity, leapt straight up +through his neck and throttled his brain. + +The very worst poetry of all perished along with its creator, Paul Neil +Milne Johnstone of Redbridge, in the destruction of the planet Earth. +Vogon poetry is mild by comparison. diff --git a/data/131 b/data/131 new file mode 100644 index 0000000..333677c --- /dev/null +++ b/data/131 @@ -0,0 +1,10 @@ +One of the things Ford Prefect had always found hardest to understand +about human beings was their habit of continually stating and repeating +the very very obvious, as in It's a nice day, or You're very tall, or +Oh dear you seem to have fallen down a thirty-foot well, are you all +right? At first Ford had formed a theory to account for this strange +behaviour. If human beings don't keep exercising their lips, he thought, +their mouths probably seize up. After a few months' consideration and +observation he abandoned this theory in favour of a new one. If they +don't keep on exercising their lips, he thought, their brains start +working. diff --git a/data/132 b/data/132 new file mode 100644 index 0000000..a80e2e4 --- /dev/null +++ b/data/132 @@ -0,0 +1,3 @@ +Ford carried on counting quietly. This is about the most aggressive +thing you can do to a computer, the equivalent of going up to a human +being and saying "Blood...blood...blood...blood...” diff --git a/data/133 b/data/133 new file mode 100644 index 0000000..388aeda --- /dev/null +++ b/data/133 @@ -0,0 +1,4 @@ +Hey, you sass that hoopy Ford Prefect? There's a frood who really knows +where his towel is." +(Sass: know, be aware of, meet, have sex with; hoopy: really together +guy; frood: really amazingly together guy.) diff --git a/data/134 b/data/134 new file mode 100644 index 0000000..ab7fa3e --- /dev/null +++ b/data/134 @@ -0,0 +1,3 @@ +And all dared to brave unknown terrors, to do mighty deeds, to boldly +split infinitives that no man had split before--and thus was the Empire +forged. diff --git a/data/135 b/data/135 new file mode 100644 index 0000000..7d0e466 --- /dev/null +++ b/data/135 @@ -0,0 +1,2 @@ +Looking up into the night sky is looking into infinity — distance is +incomprehensible and therefore meaningless diff --git a/data/136 b/data/136 new file mode 100644 index 0000000..081609a --- /dev/null +++ b/data/136 @@ -0,0 +1,6 @@ +It is most gratifying," it said, "that your enthusiasm for our planet +continues unabated, and so we would like to assure you that the guided +missiles currently converging with your ship are part of a special +service we extend to all of our most enthusiastic clients, and the +fully armed nuclear warheads are of course merely a courtesy detail. +We look forward to your custom in future lives ... thank you. diff --git a/data/137 b/data/137 new file mode 100644 index 0000000..666444b --- /dev/null +++ b/data/137 @@ -0,0 +1,7 @@ +'So the hours are pretty good then?' he resumed. + +The Vogon stared down at him as sluggish thoughts moiled around in the +murky depths. + +'Yeah,' he said, 'but now you come to mention it, most of the actual +minutes are pretty lousy.' diff --git a/data/138 b/data/138 new file mode 100644 index 0000000..0ed9cae --- /dev/null +++ b/data/138 @@ -0,0 +1 @@ +Here, for whatever reason, is the world. And here it stays. With me on it. diff --git a/data/139 b/data/139 new file mode 100644 index 0000000..9bf6c35 --- /dev/null +++ b/data/139 @@ -0,0 +1,23 @@ +The Hitchhiker's Guide to the Galaxy is an indispensable companion to +all those who are keen to make sense of life in an infinitely complex +and confusing Universe, for though it cannot hope to be useful or +informative on all matters, it does at least make the reassuring claim, +that where it is inaccurate it is at least definitively inaccurate. In +cases of major discrepancy it's always reality that's got it wrong. + +This was the gist of the notice. It said "The Guide is definitive. +Reality is frequently inaccurate." + +This has led to some interesting consequences. For instance, when the +Editors of the Guide were sued by the families of those who had died as +a result of taking the entry on the planet Tralal literally (it said +"Ravenous Bugblatter Beasts often make a very good meal for visiting +tourists: instead of "Ravenous Bugblatter Beasts often make a very good +meal of visiting tourists"), they claimed that the first version of the +sentence was the more aesthetically pleasing, summoned a qualified poet +to testify under oath that beauty was truth, truth beauty and hoped +thereby to prove that the guilty party in this case was Life itself for +failing to be either beautiful or true. The judges concurred, and in a +moving speech held that Life itself was in contempt of court, and duly +confiscated it from all those there present before going off to enjoy a +pleasant evening's ultragolf. diff --git a/data/140 b/data/140 new file mode 100644 index 0000000..2d0d53a --- /dev/null +++ b/data/140 @@ -0,0 +1,3 @@ +We are now cruising at a level of two to the power of twenty-five +thousand to one against and falling, and we will be restoring normality +just as soon as we are sure what is normal anyway. diff --git a/data/141 b/data/141 new file mode 100644 index 0000000..7f400f5 --- /dev/null +++ b/data/141 @@ -0,0 +1,9 @@ +There’s no point in acting surprised about it. All the planning charts +and demolition orders have been on display at your local planning +department in Alpha Centauri for 50 of your Earth years, so you’ve had +plenty of time to lodge any formal complaint and it’s far too late to +start making a fuss about it now. … What do you mean you’ve never been +to Alpha Centauri? Oh, for heaven’s sake, mankind, it’s only four light +years away, you know. I’m sorry, but if you can’t be bothered to take +an interest in local affairs, that’s your own lookout. Energize the +demolition beams. diff --git a/data/142 b/data/142 new file mode 100644 index 0000000..d4652b2 --- /dev/null +++ b/data/142 @@ -0,0 +1,8 @@ +In many of the more relaxed civilizations on the Outer Eastern Rim of +the Galaxy, the Hitch-Hiker's Guide has already supplanted the great +Encyclopaedia Galactica as the standard repository of all knowledge and +wisdom, for though it has many omissions and contains much that is +apocryphal, or at least wildly inaccurate, it scores over the older, +more pedestrian work in two important respects. First, it is slightly +cheaper; and secondly it has the words DON'T PANIC inscribed in large +friendly letters on its cover. diff --git a/data/143 b/data/143 new file mode 100644 index 0000000..3c7002d --- /dev/null +++ b/data/143 @@ -0,0 +1,2 @@ +And so the problem remained; lots of people were mean, and most were +miserable, even the ones with digital watches. diff --git a/data/144 b/data/144 new file mode 100644 index 0000000..2c84a6e --- /dev/null +++ b/data/144 @@ -0,0 +1,2 @@ +The President of the Universe holds no real power. His sole purpose is +to take attention away from where the power truly exists... diff --git a/data/145 b/data/145 new file mode 100644 index 0000000..dbc6b54 --- /dev/null +++ b/data/145 @@ -0,0 +1 @@ +Who is this god person anyway? diff --git a/data/146 b/data/146 new file mode 100644 index 0000000..00bcaff --- /dev/null +++ b/data/146 @@ -0,0 +1,9 @@ +The President in particular is very much a figurehead — he wields no +real power whatsoever. He is apparently chosen by the government, but +the qualities he is required to display are not those of leadership but +those of finely judged outrage. For this reason the President is always +a controversial choice, always an infuriating but fascinating character. +His job is not to wield power but to draw attention away from it. On +those criteria Zaphod Beeblebrox is one of the most successful +Presidents the Galaxy has ever had — he has already spent two of his ten +presidential years in prison for fraud. diff --git a/data/147 b/data/147 new file mode 100644 index 0000000..5429800 --- /dev/null +++ b/data/147 @@ -0,0 +1,2 @@ +What does it matter? Science has achieved some wonderful things, of +course, but I'd far rather be happy than right any day. diff --git a/data/148 b/data/148 new file mode 100644 index 0000000..8559437 --- /dev/null +++ b/data/148 @@ -0,0 +1,13 @@ +It is of course perfectly natural to assume that everyone else is +having a far more exciting time than you. Human beings, for instance, +have a phrase that describes this phenomenon, ‘The other man’s grass +is always greener.’ + +The Shaltanac race of Broopkidren 13 had a similar phrase, but since +their planet is somewhat eccentric, botanically speaking, the best they +could manage was, ‘The other Shaltanac's joopleberry shrub is always a +more mauvy shade of pinky-russet.’ And so the expression soon fell into +disuse, and the Shaltanacs had little option but to become terribly +happy and contented with their lot, much to the surprise of everyone +else in the Galaxy who had not realized that the best way not to be +unhappy is not to have a word for it. diff --git a/data/149 b/data/149 new file mode 100644 index 0000000..8792954 --- /dev/null +++ b/data/149 @@ -0,0 +1,3 @@ +Trillian had come to suspect that the main reason [Zaphood] had had +such a wild and successful life was that he never really understood +the significance of anything he did. diff --git a/data/150 b/data/150 new file mode 100644 index 0000000..43d5e72 --- /dev/null +++ b/data/150 @@ -0,0 +1,7 @@ +They wouldn’t even lift a finger to save their own grandmothers from the +Ravenous Bugblatter Beast of Traal without orders signed in triplicate, +sent in, sent back, queried, lost, found, subjected to public inquiry, +lost again, and finally buried in soft peat for three months and +recycled as firelighters. + +- The Guide on Vogons diff --git a/data/151 b/data/151 new file mode 100644 index 0000000..51b989a --- /dev/null +++ b/data/151 @@ -0,0 +1,7 @@ +“What do you get if you multiply six by nine?" + +"Six by nine. Forty two." + +"That's it. That's all there is." + +"I always thought something was fundamentally wrong with the universe” diff --git a/data/152 b/data/152 new file mode 100644 index 0000000..fc3b8eb --- /dev/null +++ b/data/152 @@ -0,0 +1,2 @@ +Fifteen years was a long time to be stranded anywhere, particularly +somewhere as mind-boggingly dull as Earth. diff --git a/data/153 b/data/153 new file mode 100644 index 0000000..20684d0 --- /dev/null +++ b/data/153 @@ -0,0 +1 @@ +They’ve got as much sex appeal as a road accident. diff --git a/data/154 b/data/154 new file mode 100644 index 0000000..0b97165 --- /dev/null +++ b/data/154 @@ -0,0 +1,3 @@ +If somebody thinks they're a hedgehog, presumably you just give 'em a +mirror and a few pictures of hedgehogs and tell them to sort it out +for themselves. diff --git a/data/155 b/data/155 new file mode 100644 index 0000000..bebc57b --- /dev/null +++ b/data/155 @@ -0,0 +1,4 @@ +A computer chatted to itself in alarm as it noticed an airlock open and +close itself for no apparent reason. + +This was because Reason was in fact out to lunch. diff --git a/data/156 b/data/156 new file mode 100644 index 0000000..589b02b --- /dev/null +++ b/data/156 @@ -0,0 +1,6 @@ +The Heart of Gold fled on silently through the night of space, now on +conventional photon drive. Its crew of four were ill as ease knowing +that they had been brought together not of their own volition or by +simple coincidence, but by some curious perversion of physics- as if +relationships between people were susceptible to the same laws that +governed the relationships between atoms and molecules diff --git a/data/157 b/data/157 new file mode 100644 index 0000000..82d2525 --- /dev/null +++ b/data/157 @@ -0,0 +1,3 @@ +There was a terribly ghastly silence. +There was a terribly ghastly noise. +There was a terribly ghastly silence. diff --git a/data/158 b/data/158 new file mode 100644 index 0000000..6e1863c --- /dev/null +++ b/data/158 @@ -0,0 +1,6 @@ +The Encyclopedia Galactica defines a robot as a mechanical apparatus +designed to do the work of a man. The marketing division of the Sirius +Cybernetics Corporation defines a robot as "Your Plastic Pal Who's Fun +to Be With." The Hitchhiker's Guide to the Galaxy defines the marketing +devision of the Sirius Cybernetic Corporation as "a bunch of mindless +jerks who'll be the first against the wall when the revolution comes” diff --git a/data/159 b/data/159 new file mode 100644 index 0000000..adce17c --- /dev/null +++ b/data/159 @@ -0,0 +1 @@ +He's spending a year dead for tax reasons. diff --git a/data/160 b/data/160 new file mode 100644 index 0000000..74ca3a4 --- /dev/null +++ b/data/160 @@ -0,0 +1,25 @@ +A towel, it says, is about the most massively useful thing an +interstellar hitchhiker can have. Partly it has great practical value +- you can wrap it around you for warmth as you bound across the cold +moons of Jaglan Beta; you can lie on it on the brilliant marble-sanded +beaches of Santraginus V, inhaling the heady sea vapours; you can sleep +under it beneath the stars which shine so redly on the desert world of +Kakrafoon; use it to sail a mini raft down the slow heavy river Moth; +wet it for use in hand-to- hand-combat; wrap it round your head to ward +off noxious fumes or to avoid the gaze of the Ravenous Bugblatter Beast +of Traal (a mindboggingly stupid animal, it assumes that if you can't +see it, it can't see you - daft as a bush, but very ravenous); you can +wave your towel in emergencies as a distress signal, and of course dry +yourself off with it if it still seems to be clean enough. + +More importantly, a towel has immense psychological value. For some +reason, if a strag (strag: non-hitch hiker) discovers that a +hitch hiker has his towel with him, he will automatically assume that +he is also in possession of a toothbrush, face flannel, soap, tin of +biscuits, flask, compass, map, ball of string, gnat spray, wet weather +gear, space suit etc., etc. Furthermore, the strag will then happily +lend the hitch hiker any of these or a dozen other items that the hitch +hiker might accidentally have "lost". What the strag will think is that +any man who can hitch the length and breadth of the galaxy, rough it, +slum it, struggle against terrible odds, win through, and still knows +where his towel is is clearly a man to be reckoned with. diff --git a/man/42.1 b/man/42.1 new file mode 100644 index 0000000..535dae7 --- /dev/null +++ b/man/42.1 @@ -0,0 +1,35 @@ +.Dd 2020-08-23 +.Dt 42 1 +.Os HitchHiker linux +.Sh NAME +.Nm 42 +.Nd Mostly Harmless +.Sh SYNOPSIS +.Nm +is the meaning of Life, the Universe, and Everything. +.Sh USAGE +Not recommended. +.Sh DESCRIPTION +.Nm +is somewhat like the old Unix +.Ar fortune +command, except that it's not. It +is in fact smaller, faster, less useful and yet included at no charge. +.Sh ERRORS +It should come as no surprise that there is no warranty, imlied or +otherwise. Should you find that your hard disk has turned into a small +dog, the only recourse available is to +.Bl -tag -width Ds +.It 1 +grab your towel and head off to the chemist +for some doggy biscuits and +.It 2 +learn to enjoy early morning walks. +.Sh AUTHOR +Written by the JeanG3nie for HitchHiker Linux. +.Sh SEE ALSO +.Xr man 4 +.Sh STANDARDS +The +.Nm +utility is compliant with no standards. Because we're such cool froods. diff --git a/man/man.4 b/man/man.4 new file mode 100644 index 0000000..1531ff0 --- /dev/null +++ b/man/man.4 @@ -0,0 +1,37 @@ +.Dd 2020-08-23 +.Dt MAN 4 +.Os HitchHiker linux +.Sh NAME +.Nm man +.Nd Mostly Harmless +.Sh SYNOPSIS +.Nm +is a primitive bipedal creature descended from apes. +.Sh DESCRIPTION +.Nm +originated on a small and insignificant planet named Earth, far out in +the uncharted backwaters of the unfashionable end of the western spiral +arm of the Galaxy, which was once also home to the vastly more +intelligent species known as Dolphin. Should you encounter a +.Nm +Don't Panic, as it is likely to be greatly confused in seeing a creature +which obviously originated on another world, which is something which is +simply incomprehensible and therefore it must be Thursday. + +Not to be confused with the Unix man(1) command, useful for retreiving +helpful instructions describing the usage of various small utilities and +programming functions on Unix and Unix-like computer operating systems, +and also for viewing this document. +.Sh HISTORY +Bloody, violent and generally the sort of reading material that might +keep a person up at night. Modern +.Nm +first appeared on the +.Ar African +continent circa 200,000 BC. +.Sh AUTHOR +.Nm +is the product of natural evolution, which may or may not have been +directed by this God person, who may or may not exist. +.Sh SEE ALSO +.Xr 42 1 diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..992ba31 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,67 @@ +use { + rand::Rng, + std::{ + env, + fs::{self, DirEntry}, + io::{self, Write}, + path::PathBuf, + }, +}; + +fn get_datadirs() -> Vec { + let mut dirs = match env::var("XDG_DATA_DIRS") { + Ok(dirs) => dirs + .split(':') + .map(PathBuf::from) + .map(|mut p| { + p.push("42"); + p + }) + .collect(), + Err(_) => vec![ + PathBuf::from("/usr/local/share/42"), + PathBuf::from("/usr/share/42"), + ], + }; + if let Ok(home) = env::var("HOME") { + let hddir = [&home, ".local", "share", "42"].iter().collect(); + dirs.push(hddir); + } + dirs +} + +fn is_file(entry: &DirEntry) -> bool { + if let Ok(t) = entry.file_type() { + if t.is_file() { + return true; + } + } + false +} + +fn get_files() -> Vec { + let mut files = vec![]; + get_datadirs().iter().for_each(|d| { + if d.exists() { + if let Ok(dir) = fs::read_dir(&d) { + dir.filter(|e| e.is_ok()) + .filter(|e| is_file(e.as_ref().unwrap())) + .map(|e| e.unwrap().path()) + .for_each(|f| files.push(f)); + } + } + }); + files +} + +fn main() -> Result<(), io::Error> { + let files = get_files(); + let len = files.len(); + let mut rng = rand::thread_rng(); + let idx = rng.gen_range(0..len); + if let Some(path) = files.get(idx) { + let contents = fs::read(path)?; + io::stdout().write_all(&contents)?; + } + Ok(()) +}