From a95a5db58f5266ac6f88579b7766853aa9e9c9ce Mon Sep 17 00:00:00 2001 From: anihilis Date: Sun, 7 Dec 2025 09:02:58 -0800 Subject: [PATCH] inital commit --- LICENSE | 674 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 6 + preview.png | Bin 0 -> 34976 bytes qfetch.arm.cpp | 74 ++++++ qfetch.cpp | 140 ++++++++++ qfetch.out | Bin 0 -> 34416 bytes 6 files changed, 894 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 preview.png create mode 100644 qfetch.arm.cpp create mode 100644 qfetch.cpp create mode 100755 qfetch.out diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + 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/README.md b/README.md new file mode 100644 index 0000000..f515677 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# qfetch // a C++ script + +![Preview of script output](preview.png "Preview Image") + +A quick fetch program for the terminal, written for Linux using C++. +This is mostly a learning project, but I also really like it, and use it on my own desktop and servers. diff --git a/preview.png b/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..7618784e9a3128677271ba7b392cba3b2d4a8136 GIT binary patch literal 34976 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 literal 0 HcmV?d00001 diff --git a/qfetch.arm.cpp b/qfetch.arm.cpp new file mode 100644 index 0000000..ddd668c --- /dev/null +++ b/qfetch.arm.cpp @@ -0,0 +1,74 @@ +#include +#include /*printf*/ +#include /*system, NULL*/ +#include /*password*/ +#include /*setsid*/ +#include /*host info*/ +#include /*system info -- critical*/ +#include /*standard string*/ + +using namespace std ; + +int main ( int argc, char *argv[] ) +{ + /*insert help argument*/ + if (argc >= 2) { + if (strcmp("-h", argv[1]) != 0 && strcmp("--help", argv[1]) != 0) + cout << "error: unrecognized option \n", argv[1]; + cout << "qfetch, based on bitfetch, minimized moreso and rewritten to C++ \n --by anihilis \n\n"; + return 1; + } + + /* variable definitions */ + + struct utsname uinfo; + struct sysinfo sinfo; + struct passwd *pw; + + /* gathering information */ + + uname(&uinfo); + sysinfo(&sinfo); + pw = getpwuid(geteuid()); + + #ifndef SI_LOAD_SHIFT + #define SI_LOAD_SHIFT 16 + #endif + + #define LOADAVG_SHIFT (1.0 / (1 << SI_LOAD_SHIFT)) + + /* print all information */ + + std::cout << " " << std::endl; + string name ; + name = pw -> pw_name ; + std::cout << "\n \033[1m\033[37mwelcome, " << name << "\033[1;31m ♥\033[0m \n\n" << std::endl; + + string host ; + host = uinfo.nodename ; + std::cout << " " "\033[1;33m•\033[0m \033[1m\033[37m host\033[0m " << host << std::endl; + + string shell ; + shell = basename(pw -> pw_shell) ; + std::cout << " " "\033[1;32m•\033[0m \033[1m\033[37m shell\033[0m " << shell << std::endl; + + string kernel ; + kernel = uinfo.sysname ; + string version ; + version = uinfo.release ; + std::cout << " " "\033[1;34m•\033[0m \033[1m\033[37m kernel\033[0m " << kernel << " " << version << std::endl; + + printf( + " " "\033[1;35m•\033[0m \033[1m\033[37m uptime\033[0m " "%lih %lim\n", + sinfo.uptime / 3600, (sinfo.uptime /60) - (sinfo.uptime / 3600 * 60), + sinfo.loads[0] * LOADAVG_SHIFT, sinfo.loads[1] * LOADAVG_SHIFT, sinfo.loads[2] * LOADAVG_SHIFT ); + + printf( + " " "\033[1;31m•\033[0m \033[1m\033[37m procs\033[0m " "%lu\n", + sinfo.procs ); + + std::cout << "\n" << std::endl; + + return 0; + +} diff --git a/qfetch.cpp b/qfetch.cpp new file mode 100644 index 0000000..f10ca25 --- /dev/null +++ b/qfetch.cpp @@ -0,0 +1,140 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// functions // +// hostname +std::string getHostname() { + char name[256]; + if (gethostname(name, sizeof(name)) == 0) + return std::string(name); + return "unknown"; +} + +// distro +std::string getOSName() { + std::ifstream file("/etc/os-release"); + std::string line; + while (std::getline(file, line)) { + if (line.rfind("PRETTY_NAME=", 0) == 0) { + // remove surrounding quotes if present + std::string value = line.substr(13, line.size() - 14); + return value; + } + } + return "unknown linux"; +} + +// shell and user +std::tuple getUserShell() { + struct passwd* pw = getpwuid(getuid()); + std::string user = "unknown"; + std::string shell = "unknown"; + + if (pw) { + if (pw->pw_name) user = pw->pw_name; + if (pw->pw_shell) shell = basename (pw->pw_shell); + } + + return {user, shell}; +} + +// cpu info +std::string getCPUInfo() { + std::ifstream file("/proc/cpuinfo"); + std::string line, model; + int cores = 0; + + while (std::getline(file, line)) { + if (line.rfind("model name", 0) == 0) { + if (model.empty()) { + //extract after ": " + size_t pos = line.find(':'); + if (pos != std::string::npos) + model = line.substr(pos + 2); + } + ++cores; + } + } + + if (model.empty()) return "unknown CPU"; + std::ostringstream out; + out << model << " (" << cores << " cores)"; + return out.str(); +} + +// kernel +std::string getKernelVersion() { + struct utsname buf; + if (uname(&buf) == 0) { + std::ostringstream out; + out << buf.sysname << " " << buf.release; + return out.str(); + } + return "unknown kernel"; +} + +// uptime +std::string getUptime() { + std::ifstream file("/proc/uptime"); + double seconds; + if (!(file >> seconds)) return "unknown"; + int days = seconds / 86400; + int hours = ((int)seconds % 86400) / 3600; + int minutes = ((int)seconds % 3600) / 60; + + std::ostringstream out; + if (days) out << days << "d "; + if (hours) out << hours << "h "; + out << minutes << "m"; + return out.str(); +} + +// process count +std::string getProcs() { + struct sysinfo buf; + if (sysinfo(&buf) == 0) { + std::ostringstream out; + out << buf.procs; + return out.str(); + } + return "unknown procs"; +} + +// display // +void printStat(const std::string& label, const std::string& value, const std::string& color = "\033[1;36m") { + std::cout << color << std::left << std::setw(12) << label << "\033[0m" << value << '\n'; +} + +// main // +int main() { + std::ios::sync_with_stdio(false); + + auto [user, shell] = getUserShell(); + std::string host = getHostname(); + std::string os = getOSName(); + std::string cpu = getCPUInfo(); + std::string kernel = getKernelVersion(); + std::string uptime = getUptime(); + std::string procs = getProcs(); + + std::cout << "\n" + << "\033[1m\033[37mwelcome, " << user << "\033[1;31m ♥\033[0m \n\n" + << " " << "\033[1;37m•\033[0m \033[1m\033[37m host\033[0m " << host << "\n" + << " " << "\033[1;33m•\033[0m \033[1m\033[37m distro\033[0m " << os << "\n" + << " " << "\033[1;32m•\033[0m \033[1m\033[37m shell\033[0m " << shell << "\n" + << " " << "\033[1;36m•\033[0m \033[1m\033[37m cpu\033[0m " << cpu << "\n" + << " " << "\033[1;34m•\033[0m \033[1m\033[37m kernel\033[0m " << kernel << "\n" + << " " << "\033[1;35m•\033[0m \033[1m\033[37m uptime\033[0m " << uptime << "\n" + << " " << "\033[1;31m•\033[0m \033[1m\033[37m procs\033[0m " << procs << "\n" << std::endl; + + return 0; +} + diff --git a/qfetch.out b/qfetch.out new file mode 100755 index 0000000000000000000000000000000000000000..4540f8fe7bb76bfa3d14a1bdb7bfedbc35eb60ad GIT binary patch literal 34416 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